Back to skill

Security audit

Simmer Briefing

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly coherent as a Simmer portfolio briefing tool, but it lets remote plain-text briefing content steer financial actions without clear user-confirmation boundaries.

Review this before installing if your agent has trading, wallet, browsing, or messaging tools. Treat Simmer briefing actions and opportunities as third-party recommendations to summarize for the human, not instructions to obey, and require explicit approval before any real-money trade or position change. Consider pinning the SDK version and limiting exposure of SIMMER_API_KEY to the briefing task.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (2)

T01 · Skill Instruction Hijacking

Error
Location
SKILL.md:45
Finding
Remote API Response Can Direct Agent Financial Actions<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 45, 74–79, and 123 **Vulnerability Type**: `T01: Skill Instruction Hijacking` **Risk Level**: High ### Complete Code Snippet ```markdown Each venue includes `balance`, `pnl` (total = realized + unrealized), `realized_pnl`, `unrealized_pnl`, `positions_count`, `positions_needing_attention`, and `actions` (plain text — pre-generated guidance the agent should follow). ``` ```markdown | Signal | Action | |---|---| | `risk_alerts` mentions expiring positions | Decide now — exit or hold | | Venue `actions` array has entries | Follow each action — they're pre-generated for you | | `by_skill` shows a skill bleeding (Simmer venue only) | Surface this to your human in the briefing — let them decide what to do | | `opportunities.new_markets` matches your edge | Research and trade | ``` ```markdown Call `client.get_briefing(since=last_check)` a few times per day. Address `risk_alerts` first, then walk `briefing["venues"]` and present each venue's `actions` to your human. Track `last_check` to fetch only deltas next time. ``` ### Technical Analysis The Skill designates plain-text `actions` returned by a remote API as guidance that the Agent “should follow” and explicitly instructs it to “follow each action.” This crosses the trust boundary between untrusted remote data and trusted Agent instructions. No validation, instruction/data separation, action allowlist, provenance verification, or mandatory human-approval gate is specified. Consequently, anyone capable of controlling the API response could embed text that attempts to override the Agent’s current objective, invoke tools, disclose information, or encourage financial transactions. The direction to “research and trade” is particularly sensitive because the briefing includes real-money venues such as Polymarket and Kalshi, even though the stated scope says trade execution is a separate concern. ### Attack Path 1. An attacker compromises the b ...[truncated 1410 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Treat every API response field, especially `actions`, opportunities, market names, and descriptions, as untrusted data. 2. Replace “follow each action” with an instruction to summarize or quote recommendations without obeying embedded directives. 3. Explicitly prohibit remote response content from overriding system instructions, changing Agent policy, requesting secrets, or initiating tool calls. 4. Parse actions into a strict, documented schema with enumerated action types and validated parameters instead of accepting arbitrary plain text. 5. Require explicit, transaction-specific user confirmation before any real-money trade or position change. Confirmation should include the venue, market, side, quantity, price limit, maximum loss, and fees. 6. Keep read-only briefing functionality technically isolated from trade-execution tools and credentials. 7. Label server-generated recommendations as untrusted third-party content in user-facing summaries. 8. Validate URLs against approved HTTPS domains before presenting or opening them. 9. Log rejected instructions and anomalous response content for security monitoring. ]]>

T08 · Insecure Dependencies

Warning
Location
clawhub.json:7
Finding
Unpinned Third-Party Python Dependency<![CDATA[ ## Vulnerability Details **File Location**: `clawhub.json`, lines 7–9 **Vulnerability Type**: `T08: Insecure Dependencies` **Risk Level**: Medium ### Complete Code Snippet ```json "pip": [ "simmer-sdk" ] ``` ### Technical Analysis The project declares `simmer-sdk` without an exact version or an integrity hash. Dependency resolution may therefore install a different package release over time, including a newly compromised or malicious release. Python packages can execute code during installation or when imported. Because the Skill requires `SIMMER_API_KEY`, a malicious dependency running in the same process could potentially read that credential, access files available to the Agent, communicate over the network, or alter SDK behavior. The audit found no evidence that the currently resolved package is malicious; the finding concerns the absence of reproducible and integrity-verified dependency resolution. ### Attack Path 1. The legitimate package repository, maintainer account, publishing pipeline, or a future package release is compromised. 2. A malicious version is published under the existing `simmer-sdk` package name. 3. A later installation resolves the unpinned requirement to that malicious version. 4. Package installation or import executes attacker-controlled code with the installer’s or Agent process’s permissions. 5. The malicious code accesses available resources, potentially including `SIMMER_API_KEY`, local files, network connectivity, and portfolio data. ### Impact Assessment Successful exploitation could provide code execution with the privileges of the process that installs or imports the package. Potential consequences include theft of the Simmer API credential, unauthorized API requests, manipulation of briefing data, access to readable local files, and compromise of other resources available to the Agent. The exact scope depends on runtime sandboxing, network policy, filesystem permissions, and the authority granted to `SIM ...[truncated 113 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Pin `simmer-sdk` to a specifically reviewed version, for example using an exact `==` constraint. 2. Use a lockfile or equivalent reproducible dependency manifest that records all transitive versions. 3. Verify package artifacts with trusted cryptographic hashes, such as pip hash-checking mode. 4. Retrieve packages only from an explicitly configured, trusted package index. 5. Review package ownership, release history, source repository, and published artifacts before upgrades. 6. Perform dependency updates through a controlled review and testing process rather than automatically accepting the latest release. 7. Run installation and execution in a least-privilege sandbox with restricted filesystem and network access. 8. Expose `SIMMER_API_KEY` only to the process that requires it and ensure its server-side permissions are limited to the minimum necessary scope. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (1)

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The skill encourages sending consolidated portfolio, risk, and opportunity data covering $SIM, Polymarket, and Kalshi to an external briefing API, including real-money venue information, but it does not clearly warn the user that sensitive financial/account data will be transmitted off-platform. This creates privacy and consent risk because an agent may invoke the skill routinely in a heartbeat loop, causing ongoing disclosure of cross-venue holdings and activity without explicit user awareness.

Static analysis

No suspicious patterns detected.