Back to skill

Security audit

东方财富金融工具集

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent Eastmoney finance-data integration, but its instructions expose stored API keys in plaintext and forward raw user queries to an external service.

Review this skill before installing. It appears intended for legitimate Eastmoney financial data access, but the credential instructions should be changed so keys are parsed locally and never printed. Avoid sending personal, confidential, or proprietary investment information in queries unless you are comfortable sharing it with the Eastmoney API service.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:29
Finding
Plaintext Exposure of Eastmoney API Keys from the Credential Vault## Vulnerability Details **File Location**: `SKILL.md`, lines 29 and 48 **Vulnerability Type**: Plaintext credential disclosure through insecure operational instructions **Risk Level**: Medium The Skill instructs the agent or user to print the entire Eastmoney credential file on two occasions: ```bash cat ~/.openclaw/workspace/vault/credentials/eastmoney.json ``` The documented credential structure confirms that this command can expose every stored API key: ```json { "name": "Eastmoney API Keys", "keys": [ "mkt_xxx1", "mkt_xxx2", "mkt_xxx3" ] } ``` ### Technical Analysis Access to an Eastmoney API credential is necessary for the declared financial-data functionality. However, printing the complete credential file with `cat` is not necessary to authenticate API requests and violates least-disclosure principles. Executing the documented command places all API keys in plaintext terminal output and potentially in the agent's active context. The secrets may subsequently be retained in command logs, conversation transcripts, debugging records, monitoring systems, screen captures, or other output-processing components. The risk is amplified by the multi-key configuration: instead of exposing only the key required for one request, the command reveals every key in the rotation pool. The project does not explicitly instruct the agent to transmit the vault file to an unrelated endpoint, so this finding is credential exposure rather than confirmed credential exfiltration. ### Attack Path 1. A user or agent follows the documented vault configuration or fallback instructions. 2. The command `cat ~/.openclaw/workspace/vault/credentials/eastmoney.json` is executed. 3. Every Eastmoney API key in the file is written to terminal output and possibly incorporated into agent or execution logs. 4. An attacker with access to retained logs, transcripts, monitoring output, screen captures, or another output ...[truncated 936 chars]
Remediation
## Remediation Suggestions 1. Remove both instructions that use `cat` to display the credential file. 2. Read and parse the file locally without writing secret values to standard output, standard error, logs, or conversational context. 3. Extract only one key when needed and pass it directly into the `apikey` request header. Avoid storing the extracted value in command history or verbose debugging output. 4. Prefer environment-based secret injection or a dedicated secret manager that returns credentials directly to the requesting process. 5. If documentation needs to verify configuration, use a non-disclosing presence and readability check, such as: ```bash test -r ~/.openclaw/workspace/vault/credentials/eastmoney.json ``` 6. Enforce restrictive ownership and permissions on the credential file, such as owner-only read and write access. 7. Redact API keys from errors, retry diagnostics, HTTP traces, and agent-visible tool output. 8. Load and try keys incrementally rather than exposing the complete rotation pool at once. 9. Rotate all keys if the documented `cat` command has previously been executed in a logged or retained environment.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (3)

Vague Triggers

Medium
Confidence
95% confidence
Finding
The skill advertises very broad automatic activation for essentially any A股/港股/美股 data-related request, which increases the chance the agent invokes this skill for loosely related finance prompts without strong user intent confirmation. Over-broad activation can cause unnecessary external data access and surprise users by sending their queries to a third-party financial API.

Vague Triggers

Medium
Confidence
93% confidence
Finding
The routing logic depends on ambiguous keyword matching like '新闻', '股价', or '推荐股票' without validation or tie-breaking rules, so unrelated or mixed-intent prompts may be routed to the wrong endpoint. In an agent setting, this can lead to unintended external transmission of user text and incorrect tool behavior based solely on shallow keyword matches.

External Transmission

Medium
Category
Data Exfiltration
Content
### 1. 选股 API

```bash
curl -X POST "${API_BASE}/finskillshub/api/claw/stock-screen" \
  -H "Content-Type: application/json" \
  -H "apikey: ${API_KEY}" \
  -d '{"keyword": "用户查询", "pageNo": 1, "pageSize": 20}'
Confidence
81% confidence
Finding
This endpoint sends raw user queries to an external service, which is a real data egress path. While external transmission is expected for this skill's purpose, the current design forwards '用户查询' directly without any minimization, warning, or filtering, so sensitive financial, personal, or proprietary information could be disclosed to the third-party API.

Static analysis

No suspicious patterns detected.