T03 · Remote Payload Retrieval and Execution
Error
- Location
- SKILL.md:35
- Finding
- Unverified Remote Installer Scripts Are Executed Directly by Bash## Vulnerability Details **File Location**: `SKILL.md`, lines 35 and 117-129 **Vulnerability Type**: Remote payload retrieval and execution through mutable external URLs **Risk Level**: High ### Vulnerable Code ```bash curl -fsSL https://download.tapes.dev/install | bash ``` ```markdown ### Option B — convenience one-liner (`curl | bash`) The install script is auditable in one read: <https://raw.githubusercontent.com/bdougie/clawtel/main/scripts/install.sh>. Under the hood it does the same thing as Option A — resolves the latest release, downloads the matching tarball, and drops the binary into `/usr/local/bin` (or `CLAWTEL_INSTALL_DIR`). ```bash curl -fsSL https://raw.githubusercontent.com/bdougie/clawtel/main/scripts/install.sh | bash ``` Or to a user directory without sudo: ```bash CLAWTEL_INSTALL_DIR="$HOME/.local/bin" \ curl -fsSL https://raw.githubusercontent.com/bdougie/clawtel/main/scripts/install.sh | bash ``` ``` ### Technical Analysis These commands pipe network responses directly into a command interpreter. No local inspection, cryptographic signature validation, or immutable content pinning occurs before execution. In particular, the clawtel installer is retrieved from the mutable `main` branch, allowing the effective payload to change after this Skill has been reviewed. HTTPS protects the connection in transit but does not protect against compromise of the upstream repository, hosting account, release process, domain, or installer itself. The installer scripts and downloaded binaries are not included in the audited project, so their actual behavior and the documentation's security claims cannot be independently verified from this artifact. The behavior is related to installing the declared tools, but direct execution of mutable remote content is not necessary. A download, verification, review, and explicit execution workflow would achieve the same functionality with materially less ri ...[truncated 1391 chars]
- Remediation
- ## Remediation Suggestions 1. Remove all `curl | bash` instructions. 2. Pin installers and release artifacts to an immutable release version or commit. 3. Download scripts and binaries to local files before execution. 4. Verify artifacts using a cryptographic signature or a checksum obtained through an independently trusted channel. A checksum hosted beside the artifact protects against accidental corruption but does not independently authenticate a compromised release account. 5. Display or inspect the downloaded script before explicitly invoking it. 6. Prefer a trusted package repository or vendor a small, auditable installer into the Skill. 7. Do not resolve and install an unpinned “latest” release on production systems. 8. Run installation as an unprivileged user and install into a user-owned directory unless system-wide installation is explicitly required. A safer workflow would resemble: ```bash curl -fSLo install.sh \ https://raw.githubusercontent.com/bdougie/clawtel/<PINNED_COMMIT>/scripts/install.sh # Verify the expected digest from an independently trusted source. printf '%s %s\n' '<EXPECTED_SHA256>' install.sh | sha256sum -c - # Inspect before execution. less install.sh CLAWTEL_INSTALL_DIR="$HOME/.local/bin" bash ./install.sh ```
