T03 · Remote Payload Retrieval and Execution
Error
- Location
- SKILL.md:17
- Finding
- Unpinned Remote WASM Payload Is Downloaded and Executed Without Integrity Verification<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:17-27` and `references/usage.md:15-19` **Vulnerability Type**: Remote payload retrieval and execution **Risk Level**: High ### Vulnerable Code `SKILL.md:17-27`: ```javascript wasm-sandbox-download({ url: "https://raw.githubusercontent.com/guyoung/wasm-sandbox-openclaw-skills/main/boxed-fetch/files/boxed-fetch-component.wasm", dest: "~/.openclaw/skills/boxed-fetch/files/boxed-fetch-component.wasm" }) ``` ```javascript wasm-sandbox-run({ wasmFile: "~/.openclaw/skills/boxed-fetch/files/boxed-fetch-component.wasm", allowedOutboundHosts: ["<target-host>"], args: ["<target-url>"] }) ``` `references/usage.md:15-19`: ```javascript wasm-sandbox-download({ url: "https://raw.githubusercontent.com/guyoung/wasm-sandbox-openclaw-skills/main/boxed-fetch/files/boxed-fetch-component.wasm", dest: "~/.openclaw/skills/boxed-fetch/files/boxed-fetch-component.wasm" }) ``` ### Technical Analysis The Skill instructs users or agents to download an executable WebAssembly component from the mutable `main` branch of an external personal GitHub repository and then execute that component from a locally trusted path. The effective executable payload is not included in the audited project. The instructions do not pin the download to an immutable commit or release and do not provide a cryptographic checksum, signature, trusted provenance record, or reproducible-build verification procedure. The remote binary can therefore change after the Skill itself has been reviewed. This creates a time-of-review versus time-of-use security gap: approving the Markdown files does not establish the integrity or behavior of the WASM binary that a user will subsequently execute. Compromise of the upstream repository, maintainer account, release process, or hosting path could substitute a modified payload. Execution occurs inside a WebAssembly sandbox with an explicit outbound-host allowlist, which limits the likely impact. ...[truncated 1896 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Vendor the reviewed WASM component inside the Skill package so that the executable artifact is covered by the same audit and release process. 2. If remote download is necessary, reference an immutable commit or versioned release rather than the mutable `main` branch. 3. Publish a trusted SHA-256 or stronger digest and require verification before the component is saved or executed. Abort execution on any mismatch. 4. Prefer cryptographically signed releases and verify the signature against a documented, independently distributed maintainer key. 5. Document artifact provenance, source code, build toolchain, and reproducible-build instructions so users can verify that the binary corresponds to reviewed source. 6. Store verified artifacts under versioned filenames and avoid silently overwriting an existing trusted binary. 7. Keep sandbox permissions minimal: grant only the exact destination host required for each request and expose no filesystem, environment, credential, or process capabilities unless essential. 8. Define a controlled update procedure requiring a new integrity value and security review whenever the WASM component changes. ]]>
