T03 · Remote Payload Retrieval and Execution
Error
- Location
- README.md:35
- Finding
- Documented Pipe-to-Shell Installation Executes Mutable Remote Code<![CDATA[ ## Vulnerability Details **File Location**: `README.md:35-38`; duplicated in `skills/vector-memory/README.md:40-43` and referenced by `install.sh:1-3` **Vulnerability Type**: Remote payload retrieval and execution **Risk Level**: High ### Complete Code Snippet ```bash ### From GitHub ```bash curl -sL https://raw.githubusercontent.com/YOUR_USERNAME/vector-memory-openclaw/main/install.sh | bash ``` ``` The same installation pattern is documented in the Skill README: ```bash ### From GitHub ```bash curl -sL https://raw.githubusercontent.com/YOUR_USERNAME/vector-memory-openclaw/main/install.sh | bash ``` ``` The installer itself advertises the same invocation: ```bash #!/bin/bash # One-line installer for Vector Memory # Usage: curl -sL https://raw.githubusercontent.com/YOUR_USERNAME/vector-memory-openclaw/main/install.sh | bash ``` ### Technical Analysis The installation instructions retrieve a shell script from a mutable `main` branch and immediately pass its contents to Bash. The user has no opportunity to inspect the effective script, and the command performs no checksum, signature, release-tag, or commit verification. The URL contains the placeholder `YOUR_USERNAME`, so it is not a functional or verifiably trusted source as shipped. If replaced with an actual account, the security of installation depends entirely on the continued integrity of that account and repository. The payload executed by users can also differ from the version reviewed by an auditor. This behavior is not necessary for the declared local memory-search functionality. A downloaded release archive or reviewed local installer would provide the same functionality without executing mutable network content directly. ### Attack Path 1. A user follows the documented GitHub installation command. 2. The shell retrieves the current contents of `install.sh` from the repository's `main` branch. 3. The repository owner, a compromised account, or another party controlling the substitu ...[truncated 670 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions - Remove all `curl | bash` installation instructions. - Publish immutable, versioned release archives rather than installing from `main`. - Replace the placeholder repository owner with an authenticated and documented project location. - Instruct users to download the installer to disk and inspect it before execution. - Publish a SHA-256 digest and preferably a cryptographic signature for each release. - Pin installation commands to a release tag and immutable commit. - Prefer installation through ClawHub or another package mechanism that provides integrity verification and version pinning. ]]>
