T03 · Remote Payload Retrieval and Execution
Error
- Location
- SKILL.md:25
- Finding
- Unverified Remote Script Is Downloaded and Executed by a Shell<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, line 25; repeated in troubleshooting instructions at line 221 **Vulnerability Type**: Remote payload retrieval and execution **Risk Level**: Critical ### Vulnerable Code ```yaml openclaw: install: - id: vnsh-cli kind: shell command: "curl -sL vnsh.dev/i | sh" label: "Install vnsh CLI (vn command)" ``` The same unsafe installation method is recommended again: ```markdown | `vn: command not found` | Run: `curl -sL vnsh.dev/i \| sh` | ``` ### Technical Analysis The installation command retrieves mutable content from an external endpoint and pipes it directly into `sh`. The downloaded program is not included in the audited package, pinned to a version, authenticated with a cryptographic signature, or checked against an expected digest. Consequently, the effective installation payload can change at any time after this Skill has been reviewed. The URL also omits the explicit `https://` scheme. Depending on curl and server behavior, this may result in an initial plaintext HTTP request followed by a redirect, expanding exposure to network interception or redirect manipulation. The `-s` option suppresses progress and most error reporting, making unexpected retrieval behavior less visible. Executing a mutable installer is not necessary for the declared file-sharing functionality because the packaged `upload.sh` and `read.sh` scripts already implement the relevant operations using `curl` and OpenSSL. This behavior therefore exceeds the minimum execution privileges needed by the Skill. ### Attack Path 1. A user or Agent installs the Skill or follows its troubleshooting guidance. 2. The shell runs `curl -sL vnsh.dev/i`. 3. The external service, a compromised hosting environment, or a suitably positioned network attacker returns malicious shell commands. 4. Because the response is piped directly to `sh`, those commands execute immediately without inspection or integrity verific ...[truncated 650 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Remove all `curl | sh` installation instructions. 2. Use an explicit HTTPS URL and download the installer as a separate, non-executable step. 3. Pin the installer to a specific reviewed release rather than a mutable endpoint. 4. Publish and verify a SHA-256 or stronger digest before execution. 5. Prefer a cryptographically signed release and verify the signature against a pinned maintainer key. 6. Display or otherwise make the downloaded installer available for review before it is invoked. 7. Prefer the packaged `scripts/upload.sh` and `scripts/read.sh` implementations if they provide the required functionality without installing another executable. 8. Make installation an explicit user-approved action rather than an automatic Skill-loading operation. ]]>
