T03 · Remote Payload Retrieval and Execution
Error
- Location
- README.md:48
- Finding
- Unverified Remote Installer Is Piped Directly into Bash<![CDATA[ ## Vulnerability Details **File Location**: `README.md:48-52` **Additional Locations**: `CLAUDE.md:78`, `INSTALL.md:41`, `INSTALL.md:55`, `INSTALL_FOR_AGENTS.md:152-156`, `SKILL.md:68`, `heygen-avatar/SKILL.md:58`, `platforms/nanoclaw/heygen/SKILL.md:13-14` **Vulnerability Type**: Remote code retrieval and immediate execution **Risk Level**: Critical ### Vulnerable Code ```bash curl -fsSL https://static.heygen.ai/cli/install.sh | bash ``` The root Skill also directs agents to recommend the same command automatically: ```text 5. **Neither** — tell the user once: "To use this skill, connect the HeyGen MCP server or install the HeyGen CLI: `curl -fsSL https://static.heygen.ai/cli/install.sh | bash` then `heygen auth login`." ``` ### Technical Analysis The response from `https://static.heygen.ai/cli/install.sh` is passed directly to Bash. The repository does not pin an immutable installer version, verify a cryptographic checksum or signature, save the script for inspection, or constrain the resulting process. Although the hostname appears associated with the declared service, the audited repository does not contain the installer and cannot establish what it currently does or what it may do later. Compromise of the origin, CDN, DNS path, publishing credentials, or installer pipeline would turn the documented installation operation into arbitrary code execution. This behavior exceeds the minimum privileges necessary to install a CLI. A versioned binary can be downloaded and verified without granting a mutable network response immediate shell execution. ### Attack Path 1. A user invokes the Skill on a system where the HeyGen CLI is unavailable. 2. The Skill instructs the user or shell-capable agent to execute the one-line installer. 3. An attacker compromises the installer origin, distribution path, or publishing account and replaces the response. 4. `curl` retrieves the modified response. 5. Bash executes the response under the invoking user's pr ...[truncated 717 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Remove every `curl ... | bash` instruction from all Skill and installation documents. 2. Publish immutable, versioned CLI artifacts instead of a mutable installer response. 3. Publish SHA-256 checksums and, preferably, signatures backed by a documented signing key. 4. Use a staged installation process such as: ```bash curl -fL -o heygen-cli.tar.gz "https://trusted.example/heygen-cli-vX.Y.Z.tar.gz" echo "<expected-sha256> heygen-cli.tar.gz" | sha256sum -c - ``` 5. Require the user to inspect or explicitly approve the verified artifact before installation. 6. Document the files, directories, and permissions the installer will modify. 7. Prefer a reputable package manager with pinned versions and package-signature verification. 8. If an installer script remains available, download it to disk and verify its signature before running it; never execute the network stream directly. ]]>
