T03 · Remote Payload Retrieval and Execution
- Location
- install.sh:14
- Finding
- Unverified Remote Installer Is Piped Directly into a Shell<![CDATA[ ## Vulnerability Details **File Locations**: - `install.sh:14-19` - `README.md:62-66` - `SKILL.md:205-208` **Vulnerability Type**: Remote payload retrieval and execution **Risk Level**: Critical ### Vulnerable Code `install.sh:14-19`: ```bash # Check uv and install it if unavailable if ! command -v uv &> /dev/null; then echo "📦 Installing uv (Python package manager)..." curl -LsSf https://astral.sh/uv/install.sh | sh export PATH="$HOME/.local/bin:$PATH" fi ``` `README.md:62-66`: ```bash # If uv is not installed, install it automatically curl -LsSf https://astral.sh/uv/install.sh | sh # Create a virtual environment ``` `SKILL.md:205-208`: ```bash # 1. Install uv curl -LsSf https://astral.sh/uv/install.sh | sh # 2. Install wssf ``` ### Technical Analysis The project downloads a mutable shell script from an external URL and immediately sends its contents to `sh`. There is no version pinning, local inspection, cryptographic checksum validation, signature verification, or immutable artifact reference between retrieval and execution. HTTPS protects the connection under normal conditions but does not establish that the returned installer is the same payload that was reviewed. The effective code can change after the Skill is audited. Compromise of the distribution server, domain, publishing infrastructure, or trusted TLS path could therefore turn installation into arbitrary command execution. The behavior is operationally unnecessary for the declared file-upload function. Uploading requires network access and read access to an explicitly selected file, but it does not require automatically executing an unverified remote shell program. Consequently, this installation path exceeds the minimum privileges required by the Skill. ### Attack Path 1. The Skill or user invokes `install.sh` on a system where `uv` is unavailable. 2. The script requests `https://astral.sh/uv/install.sh`. 3. An attacker who has compromised the remote distribution ...[truncated 1242 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Remove all `curl | sh` instructions from `install.sh`, `README.md`, and `SKILL.md`. 2. Prefer requiring `uv` to be installed through a trusted operating-system package manager or an administrator-controlled software deployment process. 3. If automatic installation is essential: - Pin a specific `uv` release. - Download the release artifact to a local file rather than piping it into a shell. - Verify its published cryptographic checksum and, where available, its signature. - Abort installation on any verification failure. - Execute only the verified artifact after explicit user approval. 4. Run installation in an unprivileged, isolated environment with access limited to the Skill directory. 5. Do not run the installer as root or grant it access to Agent credentials, memory, or unrelated workspace files. 6. Document the exact artifact version, expected digest, source repository, and verification procedure. ]]>
