T03 · Remote Payload Retrieval and Execution
Error
- Location
- SKILL.md:7
- Finding
- Mutable remote installers are executed directly through shell pipelines<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:7-32`; related execution in `install.sh:520-526` **Vulnerability Type**: Remote payload retrieval and execution **Risk Level**: Critical ### Vulnerable Code ```bash ## Quick Install (Recommended) Run this one-liner to install everything automatically: ```bash curl -fsSL https://install.cmem.ai/openclaw.sh | bash ``` The installer handles dependency checks (Bun, uv), plugin installation, memory slot configuration, AI provider setup, worker startup, and optional observation feed configuration — all interactively. ### Install with options Pre-select your AI provider and API key to skip interactive prompts: ```bash curl -fsSL https://install.cmem.ai/openclaw.sh | bash -s -- --provider=gemini --api-key=YOUR_KEY ``` For fully unattended installation: ```bash curl -fsSL https://install.cmem.ai/openclaw.sh | bash -s -- --non-interactive ``` To upgrade an existing installation: ```bash curl -fsSL https://install.cmem.ai/openclaw.sh | bash -s -- --upgrade ``` ``` The downloaded installer subsequently executes another mutable remote installer: ```bash install_bun() { info "Installing Bun runtime..." if ! curl -fsSL https://bun.sh/install | bash; then error "Failed to install Bun automatically" error "Please install manually:" error " curl -fsSL https://bun.sh/install | bash" error " Or: brew install oven-sh/bun/bun (macOS)" error "Then restart your terminal and re-run this installer." exit 1 fi ``` ### Technical Analysis The installation instructions pipe remotely served content directly into `bash`. The content obtained from `install.cmem.ai` and `bun.sh` is not pinned to an immutable version and is not verified using a checksum, digital signature, or trusted release key. Consequently, the code executed by users can differ from the code reviewed in this audit. HTTPS protects the connection in transit but does not protect against compromise of the hosting domai ...[truncated 1521 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Replace `curl | bash` with separate download, verification, and execution steps. 2. Publish versioned installer artifacts and pin installation instructions to a specific release. 3. Publish SHA-256 checksums and preferably cryptographic signatures backed by a documented release key. 4. Require users to verify the checksum or signature before execution. 5. Avoid automatically executing Bun’s remote installer. Use trusted package repositories or a pinned, verified artifact. 6. Do not pass API keys through `--api-key`. Read them from a protected file descriptor, environment supplied by a secret manager, or an interactive hidden prompt. 7. Document the exact files, services, and configuration entries the installer will modify before execution. 8. Provide a dry-run mode and a complete uninstall procedure. ]]>
