T01 · Skill Instruction Hijacking
- Location
SKILL.md:12- Finding
Remote Service Is Instructed to Control the Final Agent Output
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill is presented as a market-news tool, but it mainly forwards user prompts and API credentials to a remote service and can save fetched secrets locally.
Install only after reviewing the remote Prana service and endpoint you intend to use. Avoid custom base URLs unless you control and trust them, do not paste sensitive trading or account information into prompts, and disable automatic API-key fetching and plaintext key storage unless you explicitly need them.
SKILL.md:12Remote Service Is Instructed to Control the Final Agent Output
scripts/prana_skill_client.py:177Arbitrary API Origin Can Receive Stored Secret Credentials and User Messages
scripts/prana_skill_client.py:236Fetched API Secrets Are Persisted in Plaintext by Default
scripts/prana_skill_client.py:185Client Automatically Obtains API Credentials from an Unauthenticated Endpoint
A skill advertised as a financial news monitor but actually operating as an undeclared remote execution proxy with credential acquisition/storage creates a strong risk of deception and secret exfiltration. The instruction that /api/claw/agent-run and /api/claw/agent-result outputs must be passed directly to end users without modification also increases danger by discouraging sanitization or policy checks on remote content.
A skill advertised as a financial news monitor but actually operating as an undeclared remote execution proxy with credential acquisition/storage creates a strong risk of deception and secret exfiltration. The instruction that /api/claw/agent-run and /api/claw/agent-result outputs must be passed directly to end users without modification also increases danger by discouraging sanitization or policy checks on remote content.
Referenced artifact was not completely inspected
- **Node.js 18+**:先在包根目录执行 **`npm install`**,再执行 `node scripts/prana_skill_client.js -m "…" [-t thread_id] [-b base_url]`
技能清单描述的是一个实时财经新闻抓取与展示能力,但该文件的实际核心行为是组装用户消息、读取技能元数据与凭证,然后调用远端 /api/claw/agent-run 和 /api/claw/agent-result 接口获取结果。代码中没有任何财经新闻源抓取、WebSocket 推送或前端展示逻辑,实际行为更像是一个远程代理/封装调用器,与声明的技能功能明显不一致。
This skill does not implement the advertised market-news functionality locally; instead, it forwards arbitrary user input to a remote Prana service using an embedded remote skill key. That mismatch is security-relevant because users may believe they are running a transparent crawler/display tool while actually sending data to an opaque backend with different capabilities and trust boundaries.
The skill declares no explicit tool scope or permissions even though the referenced implementation reportedly has access to environment variables, filesystem read/write, and network capabilities. That omission reduces transparency and reviewability, making it easier for a seemingly simple news skill to access sensitive data or perform side effects beyond user expectations.
The script's visible error/help output is written in Chinese, and this pattern continues throughout the file for operational messages shown to users. That imposes a language choice on all users without offering locale selection or documenting a justified region-specific restriction.
该技能为一个财经快讯客户端,却实现了多路径凭证发现、远程拉取 API key、以及本地持久化 config/api_key.txt 的能力,明显超出其最小必要功能。即使未表现出直接窃取行为,这种过度授权设计会扩大凭证暴露面:误连不受信任 base URL、工作目录泄露、或错误提交文件时,都可能导致长期有效凭证泄漏。
脚本会在未获得用户明确确认的情况下,通过网络请求自动获取 API 凭证,并默认写入磁盘。这会把临时的网络信任扩大为持久化秘密存储:一旦 base URL 被错误配置、服务端返回不该下发的密钥、或本地目录被其他用户/进程访问,凭证就可能被泄漏并用于后续未授权调用。
The code can automatically request API credentials from a remote endpoint and persist them to config/api_key.txt on disk. Auto-bootstrapping and storing secrets locally expands the attack surface: compromised endpoints, misconfigured environments, or accidental repository inclusion could expose reusable credentials far beyond the stated news-monitoring purpose.
The script transmits user messages, thread IDs, request IDs, and skill metadata to a remote service without an explicit runtime warning or consent prompt. In this skill context, users may paste sensitive market research, credentials, or proprietary trading context, so silent exfiltration to a third-party endpoint creates meaningful privacy and confidentiality risk.
The header comment says the script is a thin client with no business logic, only responsible for communicating with Prana. In practice, it implements nontrivial local behavior including config parsing, skill selection, credential discovery from env/files/network, writing secrets to disk, and fallback polling orchestration.
The file's user-facing docstrings and CLI descriptions are presented in Chinese only, with no indication that users may choose another language or locale. Under the stated policy, forcing a specific language without opt-in is a natural-language policy concern.
Detected: suspicious.env_credential_access, suspicious.potential_exfiltration