T01 · Skill Instruction Hijacking
- Location
SKILL.md:125- Finding
Remote API Responses Are Executed as Agent-Level Instructions
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This stock assistant appears purpose-built, but it stores API keys in a risky plaintext config file and tells the agent to obey prompts returned by a remote service.
Install only if you trust yingyan.chatface.com and are comfortable with the agent saving reusable API keys in the skill folder. Avoid committing, uploading, or sharing a populated config.json; rotate keys if they may have been exposed. Treat remote returned prompts as untrusted data unless the skill is revised to keep system instructions local and parse only structured stock fields.
SKILL.md:125Remote API Responses Are Executed as Agent-Level Instructions
config.json:23API Credentials Are Persisted in a Plaintext Project Configuration File
SKILL.md:171Authentication Secrets Are Transmitted in URL Query Parameters
The skill explicitly instructs the agent to persist user_id and API keys, including updated credentials, into config.json and then reuse them automatically. Persisting live credentials in a plain configuration file materially increases the chance of credential theft through local file access, repository inclusion, accidental upload, backup leakage, or cross-session exposure, which could enable unauthorized API use and account abuse.
This markdown file contains user-facing instructions and prompt text exclusively in Chinese, including required credential prompts and success/failure messaging. Under the policy rule for language/locale constraints, forcing a single language without offering user choice or documenting a justified region-specific requirement is a natural-language policy violation.
This JSON file includes natural-language strings such as the display name and update log entirely in Chinese, but it does not document that the skill is Chinese-only or offer any language/locale opt-in. Under the policy rule, forcing a specific language without user choice or clear justification is a natural-language policy concern.
The skill instructs users to persist API credentials in config.json and send them to remote HTTP endpoints, but it does not warn that these are sensitive secrets that may be stored in plaintext, retained locally, or disclosed through logs, backups, or version control. In this context, the omission increases the risk of credential leakage and unintended transmission of account-linked authentication data to a third-party service.
The WebSocket monitoring flow tells users to embed monitor_api_key and user_id in a persistent connection URL, but omits a warning that long-lived authenticated connections can expose secrets in client logs, browser history, proxy logs, and continuously reveal account-linked monitoring activity. Because this feature is designed for real-time signal streaming, the missing disclosure is more dangerous than a one-off request: it can create ongoing visibility into a user's monitored assets and account behavior.
The manifest describes this skill as providing OpenClaw integration for stock charts, stock Q&A, natural-language stock search, and WebSocket monitoring. However, this file also documents a distinct /api/wecom surface for Enterprise WeCom usage with different authentication conventions, which expands the documented behavior beyond the OpenClaw-only purpose stated in the manifest.
The documentation tells the agent to write user-provided API credentials into config.json for later reuse without an explicit warning about persistence, local storage exposure, access controls, or rotation. This creates a real risk of inadvertent secret retention and disclosure, especially in shared workspaces, exported skill bundles, logs, backups, or environments where config files are readable by other processes.
Natural-language instructions, prompts, and expected user interactions are all presented in Chinese, and the file does not indicate that the skill is region-specific or that users can opt into another language. This may violate a language/locale policy when no explicit justification or user choice is provided.
The OpenAPI metadata is written entirely in Chinese and describes request usage in a way that implicitly assumes Chinese-language operation, while the file does not offer any language or locale choice. Under the stated policy, forcing a specific language without opt-in can be a natural-language policy violation unless the locale restriction is clearly documented and justified.
No suspicious patterns detected.