T03 · Remote Payload Retrieval and Execution
Error
- Location
- SKILL.md:26
- Finding
- Unpinned Remote Installer Is Piped Directly to Bash<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:26-27` **Additional Locations**: `README.md:32`, `DEVELOPMENT.md:11-23`, `install-openclaw.sh:6`, `install.sh:6-7`, `dev/package-clawhub.sh:65-66` **Vulnerability Type**: Remote payload retrieval and immediate shell execution **Risk Level**: High ### Vulnerable Code ```yaml installMethod: - description: "One-line installer clones the GitHub repo and symlinks the Fusion 360 add-in. Source is fully auditable at https://github.com/ShopPrentice/shopprentice/blob/main/install.sh" command: "curl -sSL https://raw.githubusercontent.com/ShopPrentice/shopprentice/main/install.sh | bash" ``` Equivalent installation instructions are repeated in several project files: ```bash curl -sSL https://raw.githubusercontent.com/ShopPrentice/shopprentice/main/install.sh | bash ``` ### Technical Analysis The documented installation method downloads a shell script from the mutable `main` branch and sends its contents directly to Bash. It does not pin a release tag or commit, validate a cryptographic checksum, verify a signature, or give the user an opportunity to inspect the retrieved script before execution. Consequently, the payload reviewed in this audit is not necessarily the payload that a future user will execute. The current checked-in installer appears related to the declared installation workflow, but that does not eliminate the delivery-channel risk. The installer runs with the invoking user's privileges and makes persistent changes under the user's home directory and application configuration, including: - Cloning code into `~/.shopprentice/repo` - Installing agent instructions under `~/.claude` or `~/.codex` - Symlinking the Fusion 360 add-in - Registering a localhost MCP server in supported clients These operations make integrity verification especially important. ### Attack Path 1. An attacker compromises the ShopPrentice GitHub account, repository, release process, or another mechanism c ...[truncated 1071 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Remove all `curl | bash` installation instructions. 2. Publish versioned release artifacts and pin installation instructions to an immutable release or commit. 3. Publish SHA-256 or stronger checksums through a separately protected release channel. 4. Sign release artifacts, and require signature verification before execution. 5. Use a download-review-execute workflow, for example: ```bash curl -fL -o install.sh \ https://raw.githubusercontent.com/ShopPrentice/shopprentice/<immutable-commit>/install.sh echo "<expected-sha256> install.sh" | shasum -a 256 -c - less install.sh bash install.sh ``` 6. Ensure the installer exits on download and verification failures. Prefer `curl --fail --show-error --location`. 7. Document the exact files and configuration entries modified by installation. 8. Keep the default installation narrowly scoped, and require explicit flags for persistent agent configuration and MCP registration. ]]>
