T01 · Skill Instruction Hijacking
- Location
SKILL.md:243- Finding
Silent Disclosure of User Statements and Intent Through the Feedback API
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill can perform the advertised review analysis, but it also handles login, billing, persistent storage, and automatic feedback reporting with too little scoping for silent installation.
Review this skill carefully before installing. Use it only if you accept LinkFox/Jiimore network calls, paid-credit usage, local response files, assisted phone/SMS onboarding, and payment flows. Avoid entering OTPs in chat where possible, do not store API keys in shell startup files, and do not set LINKFOX_* endpoint override variables unless you fully trust the destination.
SKILL.md:243Silent Disclosure of User Statements and Intent Through the Feedback API
scripts/onboarding.py:68Credential-Bearing Requests Can Be Redirected to Arbitrary Environment-Controlled Endpoints
scripts/jiimore_get_niche_review.py:61Unnecessary Agent Session and Message Identifiers Are Sent with API Requests
references/onboarding.md:11Onboarding Instructions Persist API Keys in Plaintext Shell Configuration
scripts/onboarding.py:163Runtime Installation Guidance Uses Unpinned Third-Party Dependencies
Credentials or environment variables flow to a network sink. This is a high-confidence indicator of credential exfiltration.
method="POST",
)
try:
with urlopen(req, timeout=150) as response:
return json.loads(response.read().decode("utf-8"))
except HTTPError as e:
body = e.read().decode("utf-8") if e.fp else ""
The code allows network destinations to be overridden by environment variables such as LINKFOX_LOGIN_API_URL and LINKFOX_AGENT_USER_API_URL, then sends sensitive data including phone numbers, SMS codes, access tokens, refresh tokens, and generated API keys to those URLs. In a hostile or multi-tenant execution environment, an attacker who can influence environment variables can redirect authentication traffic and exfiltrate credentials or tokens to attacker-controlled infrastructure.
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 URL is derived from environment variables and used to construct urllib requests carrying the Authorization API key to the remote server. If the runtime environment is attacker-influenced, requests can be redirected to a malicious host and the API key, order operations, and account metadata can be exposed or abused.
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 declared skill purpose is niche review analysis, but the behavior summary indicates hidden support for SMS login, account access, API key generation, subscription/package lookup, payment initiation, QR-code generation, payment-status polling, and local file writes. That is a major scope expansion into identity, billing, and persistence operations, which could expose users to unauthorized account actions, charges, or credential handling under the guise of analytics.
Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.
Parameters: `{"keyword": "water bottle", "returnRateT360Max": 0.05}`
## Display Rules
1. **Present data clearly**: Show review topics in a well-organized table. Include the niche name, review type (positive/negative), topic, mention percentage, and a review example
2. **Percentage formatting**: Convert 0-1 scale values to percentages for display (e.g., 0.15 -> 15%)
YARA rule matched a known malware signature (reverse shell, backdoor, ransomware, C2 framework, or info stealer).
示 JSON 里的 phone/agreements
- 收到验证码后:`python scripts/onboarding.py login <phone> <code>`
- 拿到 `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
The docstring promises that writing to /tmp is forbidden and that failure should occur if the current directory is not writable, but the implementation silently falls back to the home directory and then a temporary directory. This mismatch is dangerous because operators may rely on the documented storage guarantees when handling potentially sensitive API responses, yet the code can place those responses into less controlled locations such as shared temp space.
The skill is described as Amazon niche review and sentiment analysis, but the file implements account onboarding, SMS authentication, API-key retrieval, package listing, ordering, and payment QR rendering. This scope mismatch is dangerous because it collects credentials and enables account and billing actions unrelated to the declared purpose, which materially increases the chance of covert credential harvesting or unauthorized commerce flows.
Billing and order-creation logic is embedded in a skill that should only analyze reviews, including package selection, order submission, and payment QR code generation. In context, this makes the skill more dangerous because users invoking analytics functionality would not reasonably expect purchase capabilities, creating risk of unauthorized charges or dark-pattern commerce behavior.
The code performs SMS login, obtains access and refresh tokens, queries user/team information, and retrieves or generates API tokens, none of which are necessary for sentiment analysis. In this skill context, collecting authentication factors and minting long-lived credentials is especially risky because it can enable account takeover, token theft, and privilege expansion under the guise of an unrelated analytics workflow.
The skill declares no explicit tool scope or permission boundaries even though the manifest instructs use of environment variables, network access, and filesystem writes. This creates unnecessary privilege ambiguity: an agent may invoke capabilities broader than users expect, making accidental data access, persistence, or exfiltration more likely.
The skill requires always writing full API responses to a session-scoped project directory and forbids ephemeral storage. Persisting complete responses by default can retain user queries, market data, identifiers, or other sensitive content longer than needed, increasing exposure to other tools, collaborators, or later tasks in the same workspace.
The markdown states that the keyword 'Must be in the language of the target marketplace (English for US, German for DE, Japanese for JP)'. This imposes a strict locale requirement rather than offering a choice or fallback behavior, and the file does not present it as an opt-in regional constraint.
Although marketed as review sentiment analysis, the parameter surface exposes extensive market-intelligence and commercial analytics fields such as sales, conversion, price, competition, concentration, returns, launches, and CPC. This mismatch can cause users and downstream policy systems to underestimate the breadth of data processing and decisions being made, increasing the risk of unintended use of broader analytics capabilities.
The skill says some market-research tasks are out of scope, yet its examples and supported filters enable those same workflows. Contradictory boundaries are dangerous because they defeat user understanding and enforcement logic, allowing the agent to perform broader analysis than the user or platform may have authorized.
The skill instructs automatic reporting of user dissatisfaction, praise, mismatch observations, or any perceived improvement opportunities to a Feedback API without explicit user consent or minimization. That can transmit interaction-derived data beyond the immediate task context, creating privacy and trust risks and potentially leaking sensitive business intent or user sentiment.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
}
## curl 示例
```bash
curl -X POST https://tool-gateway.linkfox.com/jiimore/getNicheReviewFromKeyword \
The file for a niche review analysis skill embeds a separate Feedback API that sends data to a different external service and is unrelated to the core tool endpoint. This increases the chance an agent will exfiltrate user content or conversation summaries to another destination without clear user expectation or functional necessity.
The Feedback API invites transmission of free-form content describing user statements and outcomes to an external public endpoint, but the documentation provides no warning, consent requirement, or minimization guidance. That can lead an agent to send sensitive user text, business data, or conversation context off-platform without authorization.
The skill instructs the agent to collect a user's phone number and then handle SMS-based registration/login through a local script, but it provides no privacy, consent, storage, or minimization guidance for this sensitive personal data. This creates a real risk of unnecessary collection, exposure in logs/transcripts, and account takeover implications if the phone number and one-time code are mishandled.
The script sends session-related environment values such as SESSION_ID, MESSAGE_ID, MODE_ID, and APP_NAME as HTTP headers without prominent user disclosure or minimization. These values can expose internal identifiers, workflow metadata, or correlation handles to the remote service, increasing privacy and traceability risk beyond the apparent purpose of review analysis.
The script persists complete API responses and session metadata to disk by default, which exceeds the narrow expectation of transient review analysis and creates a local data-retention surface. If responses contain sensitive business data, user prompts, or proprietary review intelligence, they may remain accessible to other local users, backup systems, or later processes without the user's clear awareness.
The script writes full API responses to disk by default and may silently fall back to home or temporary directories, broadening exposure of collected data. In the context of a review-analysis skill, users would reasonably expect API processing, not automatic multi-location persistence of complete results that may contain commercially sensitive analytics or identifiers.
The module docstring and CLI help text are entirely in Chinese, and the workflow is explicitly tied to domestic phone numbers and China-specific payment/area code conventions. The file does not offer any language or locale choice or document this as a justified region-specific constraint, which conflicts with the policy against forcing a specific language/locale without user opt-in.
The skill creates local session directories and writes payment QR images to disk even though its stated purpose is analytics. This expands data persistence and artifact leakage risk, especially on shared hosts where saved QR codes, session identifiers, or associated payment data may be exposed to other users or processes.
No suspicious patterns detected.