T09 · Insecure Skill Coding Practices
- Location
SKILL.md:278- Finding
Plaintext Storage of Binance API Credentials in TOOLS.md
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is a coherent Binance Spot API helper, but it tells agents to persist high-value trading credentials in plaintext and enables live account-changing operations.
Review before installing. Use this only with testnet or tightly scoped Binance API keys, never with withdrawal permission, and do not let an agent store live API keys or secrets in TOOLS.md or any repository/chat-visible file. Prefer a secure secret store, IP allowlisting, least-privilege keys, and explicit confirmation for every live order, cancellation, amendment, or other account-changing operation.
SKILL.md:278Plaintext Storage of Binance API Credentials in TOOLS.md
references/authentication.md:78Binance Secret Key Exposed Through Command-Line Process Arguments
The skill explicitly tells the agent to store Binance API keys and secrets in TOOLS.md without any protection model, encryption, or warning. Plaintext persistence of exchange credentials is highly dangerous because anyone with file, repo, log, or prompt access could recover the secrets and place trades, cancel orders, or access account data.
The skill goes beyond making Spot API requests and instructs the agent to collect, store, and manage Binance API credentials in local markdown files. Persisting exchange credentials creates a new secret-management surface that is unnecessary for the stated function and materially increases the risk of credential disclosure, misuse, or later exfiltration by other tools or prompts.
The file says secrets should never be displayed in full, yet it also instructs users to provide raw key material in a two-line file format and shows embedded credential fields elsewhere. That contradiction normalizes plaintext secret handling and can lead operators or downstream agents to ingest, persist, or expose live API credentials despite the masking guidance.
The skill exposes state-changing capabilities such as order placement and cancellation, but only mandates explicit confirmation for mainnet transactions and does not comprehensively gate other destructive authenticated actions. In this context, even seemingly routine authenticated endpoints can have financial or operational consequences, so weak confirmation rules increase the chance of accidental or manipulated trading actions.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
Request:
curl -X POST "https://api.binance.com/api/v3/order" \
-H "X-MBX-APIKEY: your_api_key" \
-H "User-Agent: binance-spot/1.0.1 (Skill)" \
-d "symbol=BTCUSDT&side=BUY&type=MARKET&quantity=0.001×tamp=1234567890123&signature=..."
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
Request:
curl -X POST "https://api.binance.com/api/v3/order" \
-H "X-MBX-APIKEY: your_api_key" \
-H "User-Agent: binance-spot/1.0.1 (Skill)" \
-d "symbol=BTCUSDT&side=BUY&type=MARKET&quantity=0.001×tamp=1234567890123&signature=..."
A Spot-only skill should not define or normalize handling of unrelated account material such as futures-keys. Expanding the scope of accepted credentials increases the blast radius if secrets are mishandled and makes it easier to expose or misuse higher-risk exchange accounts not needed for the declared purpose.
Detected: suspicious.exposed_secret_literal