T03 · Remote Payload Retrieval and Execution
- Location
SKILL.md:20- Finding
Unverified Remote Installer Is Piped Directly into Bash
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, line 20
Vulnerability Type: Remote payload retrieval and execution
Risk Level: CriticalVulnerable Code
yaml command: "curl -fsSL https://github.com/sonpiaz/watch-cli/releases/download/v0.3.4/install.sh | WATCH_CLI_VERSION=0.3.4 bash"Technical Analysis
The installation command retrieves a shell script from an external GitHub release and immediately pipes it into
bash. Although the URL contains a fixed release version, the downloadedinstall.shis not authenticated against a digest stored in the audited project before execution.SKILL.mdstates that the installer verifies the SHA-256 digest of a subsequently downloaded tarball. That claim cannot be validated from this project because neither the installer nor its expected digest is included. Moreover, tarball verification by the downloaded script does not establish the integrity of the script itself: the installer begins executing before any local trust decision can be made.This behavior exceeds the minimum privilege needed to acquire an executable because the artifact could instead be downloaded as data, verified using a digest committed in the reviewed project, and only then executed or installed.
Attack Path
- The required
watchexecutable is absent, causing the Skill host or user to select the shell installation method. - The host sends an HTTPS request to the external GitHub release URL.
- The response body is streamed directly into
bashwithout first being saved, inspected, or checked against a locally trusted digest. - If the release account, artifact, or other relevant supply-chain component has been compromised, attacker-controlled shell commands execute immediately.
- Those commands run with the privileges of the user or agent host performing installation and can access resources available to that account.
Impact Assessment
A compromised installer can execute arbitrary commands with the i ...[truncated 477 chars]
- The required
- Remediation
View remediation
Remediation Suggestions
- Remove the
curl | bashinstallation pattern. - Download the installer or final binary to a local file without executing it.
- Commit the expected SHA-256 digest to the reviewed project or another independently trusted, immutable manifest.
- Verify the downloaded artifact with a local verification command before any execution occurs, and fail closed on mismatch.
- Execute only the verified artifact, using the least-privileged account needed for installation.
- Prefer a trusted package manager with immutable, reviewed artifacts and enforced digest validation.
- If an installer remains necessary, vendor it into the audited package so reviewers can inspect its complete behavior.
- Consider signature verification backed by a trusted public key stored independently from the release artifact; a checksum published only alongside the downloadable artifact does not adequately protect against release-account compromise.
- Remove the
