T08 · Insecure Dependencies
- Location
clawhub.json:3- Finding
Unpinned Third-Party SDK Is Entrusted with a Sensitive API Credential
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This is a disclosed Bitcoin trading automation, but live mode can place real-money trades with weak market validation and fail-open safety checks.
Review this carefully before installing. Use only a dedicated, low-limit, revocable Simmer API key; keep dry-run mode unless you have audited the code; pin dependencies; and require fail-closed safety checks plus stronger market identification before enabling live trading.
clawhub.json:3Unpinned Third-Party SDK Is Entrusted with a Sensitive API Credential
btc_momentum.py:198Live Trading Proceeds When the Safety-Context Check Fails
btc_momentum.py:127Market Selection Does Not Enforce the Declared Five-Minute and Next-Market Constraints
The documented purpose understates the operational risk: the skill can execute live trades, relies on an undeclared CLI trigger, and may trade markets that are broader than the claimed 5-minute sprint scope. For a financial trading agent, this mismatch can cause users or orchestrators to invoke the skill under false assumptions, leading to unintended real-money trades or trading in the wrong market.
The skill advertises executable behavior that requires environment access and outbound network access, but it does not declare any tool scope or permissions boundaries. In a trading skill, this omission is dangerous because it obscures the capability to reach external services and use secrets, preventing reviewers and runtime policy from accurately constraining what the skill can do.
The usage section tells users how to enable live trading but omits a clear warning that --live can place real-money financial bets. In this context, lack of a prominent risk disclosure increases the chance of accidental activation and uninformed use, especially because the skill is framed as a simple template with 'plumbing' already handled.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
# ── BTC signal ────────────────────────────────────────────────────────────────
def get_binance_klines(symbol="BTCUSDT", interval="1m", limit=15):
url = "https://api.binance.com/api/v3/klines"
params = {"symbol": symbol, "interval": interval, "limit": limit}
resp = requests.get(url, params=params, timeout=10)
resp.raise_for_status()