T03 · Remote Payload Retrieval and Execution
Error
- Location
- setup.sh:12
- Finding
- Unverified Remote Installer Is Piped Directly into a Shell<![CDATA[ ## Vulnerability Details **File Location**: `setup.sh:12` **Vulnerability Type**: Remote payload retrieval and immediate execution **Risk Level**: High ### Vulnerable Code ```bash curl -LsSf https://astral.sh/uv/install.sh | sh ``` ### Technical Analysis The setup process downloads a mutable shell script from an external server and passes it directly to `sh`. The downloaded content is not pinned to a reviewed version and is not checked against a checksum or cryptographic signature before execution. Although `astral.sh` is the documented source of the `uv` installer, the effective code executed during installation can change after this Skill has been reviewed. Security therefore depends on the continuing integrity of the remote server, its deployment pipeline, DNS resolution, the certificate trust chain, and the network path. This behavior is not the minimum privilege necessary for the declared voice-bot functionality. The Skill only needs a Python environment and its dependencies; it does not inherently need to execute an unreviewed remote shell script. ### Attack Path 1. A user follows the installation instructions and runs `bash setup.sh`. 2. The script determines that `uv` is not installed. 3. `curl` retrieves the current response from `https://astral.sh/uv/install.sh`. 4. The response is immediately interpreted by `sh`, without local inspection or integrity verification. 5. If the remote distribution infrastructure or network trust chain is compromised, attacker-controlled shell commands execute with the permissions of the user running setup. ### Impact Assessment A substituted installer can execute arbitrary commands under the installing user's account. This can permit access to files and credentials readable by that user, modification of shell configuration or project files, installation of additional programs, and network communication from the host. The command does not itself request root privileges, so its direct scope is normally ...[truncated 161 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions - Prefer requiring `uv` as an explicit prerequisite instead of installing it automatically. - If automatic installation is necessary: 1. Pin a specific reviewed `uv` release. 2. Download the release artifact to a local file. 3. Verify its publisher signature or published SHA-256 checksum. 4. Abort installation if verification fails. 5. Execute only the verified artifact. - Do not use a `curl | sh` pipeline. - Avoid advising users to run the setup script with `sudo` or another privileged account. - Document the exact installer version and integrity value used by the audited release. ]]>
