T03 · Remote Payload Retrieval and Execution
Error
- Location
- .
- Finding
- Mutable Remote Installer Executed Directly by a Shell## Vulnerability Details **File Location**: `SKILL.md:89` and `README.md:131` **Vulnerability Type**: Remote payload retrieval and execution **Risk Level**: Critical **Complete vulnerable snippets:** `SKILL.md:89`: ```bash curl -fsSL https://get.windyconnect.com | sh ``` `README.md:131`: ```bash curl get.windyconnect.com | sh ``` ### Technical Analysis Both instructions download content from `get.windyconnect.com` and pass it directly to `sh`. The downloaded script is not included in the audited project, pinned to an immutable version, checked against a cryptographic digest, or verified using a trusted digital signature. Consequently, the effective code executed by the Skill can change after this package has been reviewed. HTTPS only protects the connection in transit. It does not protect users if the domain, DNS, hosting account, CDN, deployment pipeline, or signing authority is compromised, nor does it prevent the operator from replacing the installer. The README variant also omits `curl -f`, so an unexpected HTTP response could still be passed to the shell. The external installer is expected to install a CLI that later handles email passwords, API keys, Matrix tokens, and identity credentials. No installer or CLI source is present in this project, so its actual behavior and security controls cannot be verified. ### Attack Path 1. The user invokes the Skill on a system where `windy` is not installed. 2. The agent follows the installation instructions and runs the `curl | sh` pipeline. 3. An attacker compromises or otherwise gains control over the response returned by `get.windyconnect.com`. 4. The server returns a modified shell script containing attacker-selected commands. 5. `sh` executes those commands immediately without review or integrity verification. 6. The payload operates with the privileges of the user running the agent and may subsequently install additional components or access user-readable ...[truncated 699 chars]
- Remediation
- ## Remediation Suggestions 1. Remove all `curl | sh` installation instructions. 2. Publish the installer and CLI source in an auditable repository. 3. Distribute an immutable, versioned release artifact. 4. Separate downloading from execution so users can inspect the installer: ```bash curl -fL -o windy-connect-installer.sh https://example.invalid/releases/v0.2.0/install.sh ``` 5. Publish a SHA-256 digest through a separately protected release channel and verify it before execution: ```bash echo "EXPECTED_SHA256 windy-connect-installer.sh" | sha256sum --check - ``` 6. Sign release artifacts and require signature verification against a documented, pinned public key. 7. Avoid automatically executing the downloaded artifact; require an explicit user decision after verification. 8. Ensure the installer operates without elevated privileges and clearly enumerates every file and command it will modify. 9. Prefer a trusted package manager with version pinning and provenance attestations over a custom network-delivered shell installer.
