T03 · Remote Payload Retrieval and Execution
Error
- Location
- SKILL.md:6
- Finding
- Unpinned Remote Installer Is Downloaded and Executed Directly<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:6`, `SKILL.md:131-133`, and `SKILL.md:252-255` **Vulnerability Type**: Remote payload retrieval and execution **Risk Level**: Critical ### Vulnerable Code ```yaml install: curl -fsSL https://grove.city/install-cli.sh | bash ``` ```bash curl -fsSL https://grove.city/install-cli.sh | bash ``` The same installation command is also recommended in error messages at: - `scripts/auto-fund.sh:115-119` - `scripts/batch-tip.sh:99-103` - `scripts/monitor-balance.sh:103-107` Those script locations print the command rather than executing it directly, but they still direct users toward the unsafe installation method. ### Technical Analysis The installation instructions retrieve mutable content from an external URL and immediately pipe it into `bash`. The downloaded script is not: - Pinned to an immutable release or content digest. - Verified using a cryptographic checksum or signature. - Included in the audited project. - Saved for inspection before execution. HTTPS protects the connection to the server under normal conditions, but it does not establish that the installer served in the future is identical to the version intended at audit time. The effective code executed by this Skill can therefore change without any modification to the reviewed repository. This behavior is especially sensitive because the installed Grove CLI is subsequently expected to create or access `~/.grove/.env` and `~/.grove/keyfile.txt`, process API credentials and private wallet material, and authorize financial transactions. ### Attack Path 1. An attacker compromises `grove.city`, its deployment credentials, DNS, TLS infrastructure, CDN, or the hosted installer. 2. The attacker replaces `install-cli.sh` with a malicious shell payload. 3. A user or autonomous agent follows the Skill's documented installation command. 4. `curl` downloads the attacker-controlled content and pipes it directly to `bash`. 5. The payload execut ...[truncated 970 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Remove all `curl | bash` installation instructions. 2. Publish the CLI through a trusted package manager or provide a versioned release artifact. 3. Pin installation to an immutable version and cryptographic digest. 4. If a shell installer remains necessary, use a staged process such as: ```bash curl -fL -o install-cli.sh https://grove.city/releases/v2.0/install-cli.sh printf '%s %s\n' '<trusted-sha256>' install-cli.sh | sha256sum -c - less install-cli.sh bash install-cli.sh ``` 5. Sign release artifacts and verify signatures against a public key distributed through an independent trusted channel. 6. Document exactly which files, binaries, and permissions the installer changes. 7. Run installation with ordinary user privileges and do not request administrator access unless a specific operation strictly requires it. 8. Replace the unsafe command in all three script error messages with the verified installation procedure. ]]>
