T03 · Remote Payload Retrieval and Execution
- Location
scripts/install.sh:218- Finding
Unverified Remote Installer Content Is Executed Directly
- Content
View full analysis
Vulnerability Details
File Location:
scripts/install.sh:218-230; additional unsafe instructions atSKILL.md:89-96
Vulnerability Type: Remote payload retrieval and execution
Risk Level: CriticalVulnerable Code
scripts/install.sh:218-230:bash install_uv() { info "Installing uv..." if has_cmd curl; then debug "Using curl to install uv" curl -LsSf https://astral.sh/uv/install.sh | sh elif has_cmd wget; then debug "Using wget to install uv" wget -qO- https://astral.sh/uv/install.sh | sh else error "Neither curl nor wget found. Install uv manually: https://docs.astral.sh/uv/" fiSKILL.md:89-96:bash **Install uv (if not installed):** ```bash # macOS/Linux curl -LsSf https://astral.sh/uv/install.sh | sh # Windows (PowerShell) irm https://astral.sh/uv/install.ps1 | iextext ### Technical Analysis The installer downloads mutable content from an external URL and passes the response directly to `sh`. The documentation also recommends the same pattern and its PowerShell equivalent, `Invoke-RestMethod | Invoke-Expression`. The downloaded content is not pinned to a reviewed version, saved for inspection, checked against a cryptographic hash, or validated with a trusted signature. Consequently, the code that ultimately executes can change after the Skill package has been reviewed. The `astral.sh` URL is consistent with the documented `uv` installer, and no evidence shows that it currently serves malicious content. Nevertheless, direct execution creates a remote code-execution channel. Compromise of the upstream distribution infrastructure, publishing process, DNS/TLS environment, or installer account could turn an otherwise legitimate installation step into arbitrary code execution. Installing `uv` is not essential to the declared image-processing functionality because the installer already contains a ...[truncated 1389 chars]- Remediation
View remediation
Remediation Suggestions
- Remove all
curl | sh,wget | sh, andirm | iexinstallation paths. - Prefer an operating-system package manager or the existing
pipfallback, avoiding the optionaluvbootstrap entirely where possible. - If
uvmust be installed:- Pin an explicitly reviewed release.
- Download the release artifact to a local file.
- Obtain the expected checksum or signature through a trusted release channel.
- Verify the artifact before execution.
- Abort on any verification failure.
- Execute it without elevated privileges.
- Update
SKILL.mdso it does not instruct users to execute a live network response. - Display the selected version and verified digest in installer logs.
- In automated environments, provision dependencies in a reviewed base image or locked setup phase rather than dynamically downloading an installer.
- Remove all
