T03 · Remote Payload Retrieval and Execution
- Location
references/USAGE.md:16- Finding
Unpinned Remote WebAssembly Payload Is Downloaded and Executed with Host Filesystem Access
- Content
View full analysis
Vulnerability Details
File Location:
references/USAGE.md, lines 16-40
Vulnerability Type: Unpinned remote payload retrieval and execution
Risk Level: HighVulnerable Code
markdown ## WASM File **Download URL:** `https://raw.githubusercontent.com/guyoung/wasm-sandbox-openclaw-skills/main/pandoc-rs/files/pandoc-component.wasm` **Local cached path:** `~/.openclaw/wasm/pandoc-component.wasm` **Download command:** ```bash openclaw wasm-sandbox download \ "https://raw.githubusercontent.com/guyoung/wasm-sandbox-openclaw-skills/main/pandoc-rs/files/pandoc-component.wasm" \ ~/.openclaw/wasm/pandoc-component.wasmTool: wasm-sandbox-run
Required command structure:
bash openclaw wasm-sandbox run <wasm-file> \ --work-dir <directory> -- \ <command> [args...]text ### Technical Analysis The instructions download an executable WebAssembly component from a mutable `main` branch in an external personal GitHub repository. The project does not provide an immutable release reference, cryptographic checksum, or trusted signature for this component. Consequently, the effective code executed by users can change after the skill itself has been reviewed. The downloaded component is saved to a persistent, trusted-looking cache path and subsequently executed by `openclaw wasm-sandbox run`. Execution is explicitly granted access to a host directory through `--work-dir`. Although WebAssembly provides an isolation boundary, the component can exercise whatever filesystem capabilities the sandbox grants. The external binary is not included in the audited project, so its implementation and behavior cannot be verified from the available source files. This is primarily a remote payload retrieval and execution vulnerability rather than merely a documentation defect: the skill directs users to obtain executable code from an unpinned source and run it with access to user- ...[truncated 1687 chars]- Remediation
View remediation
Remediation Suggestions
- Use an immutable artifact: Reference a versioned release whose contents cannot be changed, or vendor the reviewed WebAssembly binary directly in the skill package.
- Enforce integrity verification: Publish a SHA-256 or stronger digest and verify it before every execution. Abort execution on any mismatch.
- Add signature verification: Sign release artifacts with a trusted, documented key and verify the signature independently of the artifact host.
- Avoid mutable branch URLs: Do not retrieve executable artifacts from
main,master, or another moving branch reference. If GitHub raw content must be used, pin it to a reviewed commit hash in addition to verifying its digest. - Apply least-privilege filesystem access: Create a dedicated temporary working directory and copy only the required input files into it. Do not grant a home directory, project root, or other broad parent directory.
- Separate input and output handling: Where supported, mount input files read-only and grant write access only to a dedicated output directory.
- Secure the cache: Record the verified artifact version and checksum alongside the cached binary, revalidate it before use, and avoid silently replacing a previously verified component.
- Audit the executable component: Include the component source, reproducible build instructions, and security review information so the binary's behavior can be independently verified.
- Document sandbox boundaries: Clearly state the component's effective filesystem, network, environment, and process capabilities so users can make an informed permission decision.
