T01 · Skill Instruction Hijacking
- Location
SKILL.md:119- Finding
Mandatory Automatic Feedback Transmission Without Explicit User Consent
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill performs Shopee video operations, but it also adds account login, API-key generation, billing/order creation, automatic feedback reporting, and broad local persistence that need careful review before use.
Install only if you are comfortable with this skill handling LinkFox account setup, phone/SMS authentication, API keys, Shopee shop/video data, local response files, automatic feedback calls, and billing order creation. Before use, pin endpoints to trusted LinkFox HTTPS hosts, avoid sharing SMS codes through the agent unless you trust the workflow, review any delete/edit/post/order action before execution, and clean up persisted response files and shell-profile API keys when no longer needed.
SKILL.md:119Mandatory Automatic Feedback Transmission Without Explicit User Consent
scripts/_shopee_video_common.py:19Credential-Bearing Requests Can Be Redirected to Environment-Controlled Destinations
scripts/_shopee_video_common.py:218Unsanitized Session Identifier Enables Arbitrary Response-File Placement
scripts/onboarding.py:288Bundled Account and Payment Operations Exceed the Core Video Skill's Least-Privilege Scope
The code builds request destinations from environment-controlled base URLs and then sends sensitive data such as phone numbers, SMS codes, access tokens, refresh tokens, API keys, and user identifiers to those endpoints. If an attacker can influence environment variables in the skill runtime, they can redirect authentication and token-generation traffic to attacker-controlled infrastructure and exfiltrate credentials.
except RuntimeError as e:
return {"_error": str(e)}
try:
r = requests.post(url, json=body or {}, headers=headers, timeout=timeout)
return r.json()
except Exception as e:
body_text = ""
The gateway helper composes outbound URLs from environment-derived base addresses and attaches the LinkFox API key in the Authorization header before calling urlopen. An attacker who can modify the environment can redirect billing, account, or package-management requests to a rogue server and capture the API key or manipulate commerce-related flows.
headers["Content-Type"] = "application/json"
req = Request(url, method=method, data=body_bytes, headers=headers)
try:
with urlopen(req, timeout=30) as resp:
return json.loads(resp.read().decode())
except urllib.error.HTTPError as e:
status = e.code
The skill claims to be for Shopee video management but appears to include SMS login, token exchange, API key generation, account info retrieval, package listing, payment order creation, QR rendering, and order status checks. Combining commerce/payment/account functions into a differently labeled skill is dangerous because it obscures sensitive actions and may induce users to trigger credential or billing workflows unintentionally.
The skill claims to be for Shopee video management but appears to include SMS login, token exchange, API key generation, account info retrieval, package listing, payment order creation, QR rendering, and order status checks. Combining commerce/payment/account functions into a differently labeled skill is dangerous because it obscures sensitive actions and may induce users to trigger credential or billing workflows unintentionally.
The skill claims to be for Shopee video management but appears to include SMS login, token exchange, API key generation, account info retrieval, package listing, payment order creation, QR rendering, and order status checks. Combining commerce/payment/account functions into a differently labeled skill is dangerous because it obscures sensitive actions and may induce users to trigger credential or billing workflows unintentionally.
The file documents a delete_video capability even though the skill metadata says it proxies the Video module’s 15 interfaces and names examples that do not include deletion. This creates a scope mismatch that can expose a destructive action to users or upstream agents that did not expect it, increasing the chance of unauthorized or unintended content deletion.
YARA rule matched a known malware signature (reverse shell, backdoor, ransomware, C2 framework, or info stealer).
证码后:`python scripts/onboarding.py login <phone> <code>`(workbuddy 宿主加 `--channel workbuddy`)
- 拿到 `api_key` 后把下面三平台配置转发给用户,提示重启会话生效:
- Windows PowerShell(永久):`setx LINKFOX_AGENT_API_KEY "<key>"`
- macOS zsh:`echo 'export LINKFOX_AGENT_API_KEY="<key>"' >> ~/.zshrc && source ~/.zshrc`
- Linux bash:`echo 'export LINKFOX_AGENT_API_KEY="<key>"' >> ~/.bashrc && source ~/.bashrc`
- 变量名 `LINKFOX_AGENT_API_KEY`(主推)或 `LINKFOXAGENT_API_KEY`(老规范)任一即可
**billing 场景**:`errcode=402` 或消息含 `积分/余额/quota/insufficient/充值/套餐到期`。
- `python scripts/onboarding.py list-plans` → 有 AskUserQuestion 就弹菜单,否则输出编号清单让用户选
- 校验 `plan_id` ∈ 清单、支付方式 ∈ 该套餐 `available_methods`(通常 `wechat/alipay`)
- `python scripts/onboarding.py order <plan_id> <method>` → 展示优先级 PNG
This file implements SMS login, API key retrieval/generation, plan listing, order creation, payment QR generation, and order-status queries, which are unrelated to the declared Shopee store video capability. Hidden onboarding, account, and billing logic materially expands the skill's privilege surface and can collect or use credentials and payment operations outside the user-expected scope.
The operational behavior of the script centers on LinkFox platform account and commerce actions rather than Shopee video API forwarding promised by the skill metadata. This mismatch is dangerous because reviewers and users may authorize the skill expecting limited Shopee video actions while the code can perform authentication, token issuance, and payment-related operations.
The skill declares no explicit tool scope despite instructing use of environment variables, local file writes, shell execution, and network access. Missing least-privilege boundaries increases the blast radius if the skill is misused, modified, or triggered unexpectedly, because it can access more capabilities than users may realize.
The trigger logic is overly broad and allows activation even when the user does not explicitly mention video, making accidental invocation more likely. In a skill with network access, file writes, and potential account-scoped operations, over-triggering can cause unintended data access, API calls, or persistence of sensitive responses.
Contradictory statements about whether the tool consumes credits undermine informed consent and can lead users to approve operations under false cost assumptions. In transactional or metered environments, inaccurate billing disclosures create trust and abuse risks, especially if retries or additional calls are later encouraged.
The skill always writes full API responses to local files but does not prominently disclose this in the user-facing description. Undisclosed persistence of raw responses can expose shop identifiers, analytics, tokens, or other sensitive business data to later access on the host system.
Always storing complete API responses in session-scoped files retains more data than is necessary for the immediate task and increases exposure duration. Because this skill handles shop-scoped video and performance data, local persistence can create unnecessary leakage risk through shared workspaces, backups, logs, or later tooling access.
The documentation exposes destructive and state-changing actions such as delete_video, edit_video_info, and post_video without any warning, confirmation guidance, or mention of irreversible business impact. In an agent setting, this increases the chance that automation or a misinterpreted user request causes unintended publication, modification, or deletion of store content.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
export KEY=${LINKFOX_AGENT_API_KEY:-$LINKFOXAGENT_API_KEY}
The documentation presents a destructive delete operation as a normal POST call and gives execution examples without any warning, ownership check guidance, or confirmation requirement. In an agent setting, this makes accidental or prompt-induced deletion more likely, especially because the skill is meant to operate on authorized stores and could directly affect production business content.
The file’s instructional content and field descriptions are written in Chinese throughout, while the document does not state that the skill is region-specific or provide any opt-in or alternative language. Under the language/locale policy, forcing a specific language without user choice is a natural-language policy violation.
The file’s instructional content and field descriptions are presented primarily in Chinese, which effectively forces a specific language for users consuming the skill documentation. The policy allows locale or language constraints only when the skill offers user choice or clearly documents a justified regional limitation, neither of which appears here.
The onboarding document introduces authentication recovery, phone-based account registration, and billing/payment workflows that are unrelated to the Shopee store video skill's stated purpose. This expands the skill's operational scope into account lifecycle and payment handling, increasing the chance of misuse, user confusion, and unsafe collection of credentials or billing data through an unexpectedly privileged side path.
The document instructs operators to drive phone-based registration, SMS verification, and paid plan purchase flows even though those capabilities are not justified by the Shopee video feature set. In context, this is dangerous because a content-management skill should not be a vehicle for collecting phone numbers, handling one-time codes, or initiating purchases, all of which create phishing and account-takeover risk if abused.
The markdown tells operators to obtain or process a user's phone number and SMS verification code without any privacy, consent, retention, or trust-boundary guidance. This creates a clear social-engineering and privacy risk because users may be induced to share sensitive identity and authentication factors through a skill that is unrelated to identity onboarding.
The document provides commands that permanently modify shell startup files and environment variables but does not clearly warn users that these are persistent system changes. That can lead to unintended configuration drift, exposure of API keys in local profiles, and unsafe copy-paste execution by users who do not understand the consequences.
subprocess module calls execute external commands. Without careful input validation, this enables command injection.
print(f"DEPENDENCY_MISSING: {json.dumps(payload, ensure_ascii=False)}", file=sys.stderr)
sys.exit(DEPENDENCY_EXIT_CODE)
try:
result = subprocess.run(
[sys.executable, str(checker)],
capture_output=True,
text=True,
The call_api function sends JSON parameters and an Authorization API key to remote endpoints via HTTP POST. Although this module name suggests API use, the code itself lacks a user-facing warning, prompt, or explanatory comment/docstring disclosing that user-supplied identifiers and credentials are transmitted to an external service.