T09 · Insecure Skill Coding Practices
- Location
SKILL.md:15- Finding
Binance API Credentials Stored in a Predictable Plaintext File
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This Binance skill is purpose-aligned but needs review because it can run live spot and leveraged trades while using broad activation and weak credential guidance.
Install only if you are comfortable letting an agent help with live Binance account operations. Use a dedicated Binance API key with withdrawals disabled, the narrowest permissions possible, and IP allowlisting if available. Prefer testnet or read-only use first, and require explicit confirmation for every order, leverage change, cancellation, or position close, not only large orders.
SKILL.md:15Binance API Credentials Stored in a Predictable Plaintext File
The skill description claims it can perform essentially any Binance operation and is marked with always=true, creating an overly broad trigger surface for a capability that can place real trades and alter leveraged positions. In an agent setting, broad invocation increases the chance of accidental activation or misuse for irreversible financial actions.
This section provides direct command sequences for opening spot and futures positions, including leverage, stop-loss, and take-profit operations, but does not present a prominent upfront warning that these actions can immediately and irreversibly move funds or create leveraged exposure. In an agent-driven environment, executable examples for market orders materially raise the risk of accidental or unauthorized trading losses.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
QUERY="timestamp=${TIMESTAMP}" SIGNATURE=$(echo -n "$QUERY" | openssl dgst -sha256 -hmac "$SECRET" | cut -d' ' -f2)
curl -s "https://api.binance.com/api/v3/account?${QUERY}&signature=${SIGNATURE}"
-H "X-MBX-APIKEY: ${API_KEY}" | jq '[.balances[] | select(.free != "0.00000000")]'
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
QUERY="timestamp=${TIMESTAMP}" SIGNATURE=$(echo -n "$QUERY" | openssl dgst -sha256 -hmac "$SECRET" | cut -d' ' -f2)
curl -s "https://api.binance.com/api/v3/account?${QUERY}&signature=${SIGNATURE}"
-H "X-MBX-APIKEY: ${API_KEY}" | jq '[.balances[] | select(.free != "0.00000000")]'
This command sends an authenticated POST request to Binance that immediately places a real market buy order. In the context of an agent skill, authenticated external transmission that changes account state and spends funds is dangerous because a prompt, invocation error, or automation mistake can trigger irreversible financial loss.
QUERY="symbol=${SYMBOL}&side=BUY&type=MARKET&quantity=${QUANTITY}×tamp=${TIMESTAMP}" SIGNATURE=$(echo -n "$QUERY" | openssl dgst -sha256 -hmac "$SECRET" | cut -d' ' -f2)
curl -s -X POST "https://api.binance.com/api/v3/order?${QUERY}&signature=${SIGNATURE}"
-H "X-MBX-APIKEY: ${API_KEY}" | jq '.'
This authenticated external transmission places a real market sell order on Binance, which can liquidate holdings immediately at market price. In a skill that may be invoked automatically or by ambiguous user requests, such state-changing outbound requests create significant risk of unintended asset disposal and monetary harm.
QUERY="symbol=${SYMBOL}&side=SELL&type=MARKET&quantity=${QUANTITY}×tamp=${TIMESTAMP}" SIGNATURE=$(echo -n "$QUERY" | openssl dgst -sha256 -hmac "$SECRET" | cut -d' ' -f2)
curl -s -X POST "https://api.binance.com/api/v3/order?${QUERY}&signature=${SIGNATURE}"
-H "X-MBX-APIKEY: ${API_KEY}" | jq '.'
No suspicious patterns detected.