T05 · Unauthorized Access and Privilege Escalation
- Location
trader.py:397- Finding
Live Exit Logic Can Sell ETH Positions Not Owned by This Skill
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This is a real-money trading skill with disclosed dry-run behavior, but it has overbroad live-trading and credential exposure risks that users should review carefully.
Only install this after reviewing the live-trading flow and using narrowly limited credentials. Prefer a dedicated low-balance wallet and restricted trading account, avoid exposing SOLANA_PRIVATE_KEY for dry-run use, and treat --live as capable of buying, selling, and affecting ETH positions beyond newly opened trades.
trader.py:397Live Exit Logic Can Sell ETH Positions Not Owned by This Skill
trader.py:307Risk Safeguards Fail Open When Market Context Retrieval Fails
clawhub.json:8Security-Sensitive Trading Dependency Is Not Version or Integrity Pinned
clawhub.json:4Wallet Private Key Is Declared Mandatory Without Direct Use by the Skill
The declared behavior materially understates the skill's actual trading and credential usage: it says it buys YES using SIMMER_API_KEY, but the documentation also describes BUY NO, selling/exiting positions, market discovery, and use of SOLANA_PRIVATE_KEY for live trading. For a financial automation skill, this mismatch can cause users to grant stronger authority and accept more trading risk than they intended.
Requesting a private blockchain signing key in a context-inappropriate skill is a strong indicator of overprivileged design and can also be consistent with credential-harvesting behavior. In this skill's context, the mismatch is more dangerous because users would reasonably expect only Kalshi or market-data credentials, not authority over a Solana wallet, so they may expose funds without understanding the risk.
The skill declares access to sensitive environment variables but does not define an explicit tool or permission scope. In a trading skill, undeclared env access is risky because it can expose high-value credentials such as API keys or private keys beyond what users expect from the manifest.
The documentation conflicts on whether only SIMMER_API_KEY is required or whether SOLANA_PRIVATE_KEY is also required. For a skill handling real-money trades, ambiguity around secret requirements is dangerous because users may provide an unnecessary private key or misunderstand when live-signing authority is being used.
The setup text says SOLANA_PRIVATE_KEY is required even though the skill elsewhere claims to default to dry-run mode with no real execution until --live is passed. This contradiction can pressure users into exposing a private key unnecessarily, increasing the chance of credential compromise or accidental live-trading enablement.
The manifest requests a SOLANA_PRIVATE_KEY even though the stated function is trading ETH markets on Kalshi using staking-yield logic, which does not obviously require Solana signing authority. This kind of capability mismatch is dangerous because it grants access to a highly sensitive secret unrelated to the declared behavior, increasing the chance of secret theft, wallet compromise, or unauthorized blockchain transactions if the skill or a dependency is malicious or later compromised.
Requiring a private key without any user-facing warning or disclosure is unsafe because users are not informed that they are handing over a secret capable of authorizing transactions and draining assets. The absence of disclosure materially increases social-engineering risk and makes the unjustified Solana key request in this particular Kalshi ETH trading skill even more suspicious.
The skill description understates the credentials and execution path needed for live trading. Users may enable live mode believing only an API key is involved, when the code is designed to execute real trades through an external wallet-backed flow, increasing the risk of accidental exposure of sensitive signing material or unintended financial activity.
The manifest claims a one-sided strategy that only buys YES when ETH is underpriced, but the code also generates NO trades when the computed edge is negative. This mismatch can cause operators to grant the skill broader trading authority than intended, leading to unexpected positions and losses because actual behavior exceeds the disclosed strategy.
The manifest frames the skill as trading ETH price markets on Kalshi using a staking-yield heuristic. The code additionally searches for importable markets and imports them into Simmer automatically, which is a separate market-ingestion behavior not disclosed in the manifest.
The manifest describes a trading strategy, not a configuration-management tool. This file accepts --set KEY=VALUE and writes updates through update_config, introducing local state modification unrelated to the core market-trading function described to users.