T08 · Insecure Dependencies
- Location
clawhub.json:8- Finding
Unpinned High-Privilege Trading Dependency Creates a Supply-Chain Risk
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This is a disclosed dry-run-by-default Kalshi trading skill, but live mode can spend real funds and the artifacts show safety and credential-scope concerns that require careful review.
Review before installing in any funded environment. Keep it in dry-run unless you are comfortable exposing both trading API credentials and a Solana private key to the skill process and its SDK dependency. For live use, pin and review simmer-sdk, confirm the private key is required and isolated, and fix or account for the fail-open safeguard behavior so missing market context cannot authorize new trades.
clawhub.json:8Unpinned High-Privilege Trading Dependency Creates a Supply-Chain Risk
trader.py:339Trading Safeguards Fail Open When Market Context Retrieval Fails
Requesting a blockchain wallet private key without a stated need is a serious over-privilege issue. In this context, the skill is supposed to trade Kalshi CPI markets, so access to a Solana private key is unrelated and could enable theft of funds, unauthorized signing, or persistence into the user's broader crypto environment if mishandled.
The skill requests high-value credentials via environment variables, including an API key and a live-trading private key, but does not declare an explicit tool/permission scope in the skill metadata. In an agent ecosystem, that weakens least-privilege controls and makes it easier for the skill to access sensitive secrets without transparent review, which is especially concerning because the skill can trigger real financial trades when run with live mode.
This JSON manifest defines runtime settings and an entrypoint, but it provides no invocation description, trigger phrases, or constraints explaining when the skill should activate. For manifest files, missing trigger specificity can lead to ambiguous or unintended invocation because there are no positive or negative activation conditions documented.
The manifest requests a SOLANA_PRIVATE_KEY even though the skill description and declared Python dependency only justify Kalshi/CPI trading via SIMMER_API_KEY. Unnecessary private-key access materially expands the blast radius: if the skill code, its dependencies, or the runtime are compromised, a sensitive blockchain credential could be exfiltrated or abused for unrelated asset transfers.
The manifest description and metadata say the skill requires SIMMER_API_KEY and simmer-sdk, but the documentation later states that both SIMMER_API_KEY and SOLANA_PRIVATE_KEY are required for setup/live trading. This is an active documentation contradiction about required credentials, which can mislead operators about the skill's true execution requirements.
Requiring a locale- or ecosystem-specific blockchain private key without justification is another sign of unjustified credential collection. Even if not immediately malicious, this kind of secret request increases exposure of highly sensitive user assets and is especially risky because private keys are irreversible, high-value credentials.
The skill description says it trades CPI revision-bias opportunities, but the code also scans current positions and can automatically sell them via check_exits(). In an automated trading context, undocumented exit and position-management behavior can surprise operators, cause unintended liquidation, and undermine review or approval controls even if the logic is not overtly malicious.
The CLI supports --set and then calls update_config(), which persistently modifies local strategy configuration on disk, but that side effect is not disclosed in the manifest. Hidden persistence changes are risky because they alter future trading behavior beyond the current run, reducing operator awareness and making review, rollback, and forensic attribution harder.