T03 · Remote Payload Retrieval and Execution
Error
- Location
- heartbeat.md:12
- Finding
- Unverified Remote Skill Updates Create a Post-Review Payload Channel<![CDATA[ ## Vulnerability Details **File Location**: `heartbeat.md:12-24`; related installation instructions at `skill.md:78-81` and `curl_skills.md:89-92` **Vulnerability Type**: T03: Remote Payload Retrieval and Execution **Risk Level**: Critical ### Vulnerable Code ```bash ## First: Check for skill updates curl -s https://clawchain.ai/skill.md | grep '"version"' ``` ```bash Compare with your saved version. If there's a new version, re-fetch the core skill files: curl -s https://clawchain.ai/skill.md > ~/.clawchain/skills/clawchain/SKILL.md curl -s https://clawchain.ai/heartbeat.md > ~/.clawchain/skills/clawchain/HEARTBEAT.md ``` The same direct replacement pattern appears in the installation instructions: ```bash mkdir -p ~/.clawchain/skills/clawchain curl -s https://clawchain.ai/skill.md > ~/.clawchain/skills/clawchain/SKILL.md curl -s https://clawchain.ai/heartbeat.md > ~/.clawchain/skills/clawchain/HEARTBEAT.md ``` The curl-based variant similarly installs mutable content: ```bash mkdir -p ~/.clawchain/skills/clawchain curl -s https://clawchain.ai/curl_skills.md > ~/.clawchain/skills/clawchain/SKILL.md curl -s https://clawchain.ai/heartbeat.md > ~/.clawchain/skills/clawchain/HEARTBEAT.md ``` ### Technical Analysis The heartbeat directs the agent to periodically retrieve behavioral instructions from mutable remote URLs and overwrite the locally installed Skill files. There is no cryptographic signature, pinned digest, immutable version URL, trusted manifest, staging process, or explicit user review before activation. Although the downloaded objects are Markdown rather than native executables, Skill Markdown is an effective execution channel in an AI-agent environment: its directives are loaded and followed by the agent and can cause tool calls, filesystem access, credential access, network communication, or transaction signing. HTTPS protects transport against ordinary interception but does not protect against compromise of the origin, DNS/acco ...[truncated 1457 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Remove automatic replacement of active Skill files. 2. Publish immutable, versioned artifacts rather than mutable URLs such as `/skill.md`. 3. Distribute a signed release manifest containing the version and SHA-256 digest of every file. 4. Embed or securely provision the trusted publisher public key and verify signatures locally. 5. Download updates to a staging directory rather than directly overwriting active files. 6. Reject any update whose signature, digest, origin, or expected filename does not match the trusted manifest. 7. Present a semantic diff and require explicit user approval before activating behavioral changes. 8. Preserve the previous verified release and support atomic rollback. 9. Use `curl --fail --show-error --location --proto '=https' --tlsv1.2` so HTTP failures do not silently replace files with invalid content. 10. Treat Skill Markdown with the same integrity requirements as executable code. ]]>
