T03 · Remote Payload Retrieval and Execution
Error
- Location
- SKILL.md:34
- Finding
- Unpinned Remote Installer Is Downloaded and Executed Directly by Bash<![CDATA[ ## Vulnerability Details **File Locations**: - `SKILL.md:34-36` - `references/capabilities.md:5-7` - `references/install-and-workflows.md:5-9` - `references/install-and-workflows.md:26-29` - `references/install-and-workflows.md:84-87` **Vulnerability Type**: Remote payload retrieval and execution **Risk Level**: Critical ### Vulnerable Code ```bash curl -fsSL https://wlfi.sh | bash ``` ```bash curl -fsSL https://wlfi.sh | bash -s -- --skills-only ``` The Skill also presents the same unpinned command as its update mechanism: ```bash curl -fsSL https://wlfi.sh | bash ``` ### Technical Analysis The installation instructions pipe a mutable HTTP response directly into Bash. The response is not saved for inspection and is not verified using a pinned checksum, cryptographic signature, immutable release identifier, or reproducible-build metadata. HTTPS protects the connection against some network attackers, but it does not establish that future content served by the domain is identical to the content reviewed during this audit. Compromise of the domain, hosting account, DNS configuration, TLS termination, publishing pipeline, or downstream release assets would allow the effective installer payload to change after the Skill package has been approved. The documented installer has broad effects. According to `references/install-and-workflows.md:10-24`, it can: - Download a prebuilt AgentPay runtime bundle. - Bootstrap Node.js when it is missing. - Install the `agentpay` executable. - Write Skill packs and adapters into multiple global and workspace locations. - Modify instruction files used by Codex, Claude, Cline, Goose, Windsurf, OpenClaw, Copilot, Cursor, and other agents. - Prepare a runtime that later operates as a managed daemon. These effects materially exceed the minimum privileges needed merely to install the static Skill directory. The `--skills-only` option is narrower in intended effect, but it still obtains and executes the same mutable r ...[truncated 1904 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Remove every `curl | bash` installation and update instruction. 2. Publish immutable, versioned release artifacts through a clearly attributable release channel. 3. Require users to download the installer and artifact separately before execution. 4. Publish SHA-256 checksums and cryptographic signatures through an independently protected channel. 5. Verify both the installer and every runtime bundle before execution. 6. Pin documentation to a specific release version instead of executing whatever content the domain currently serves. 7. Prefer a transparent package-manager installation with locked versions and verifiable provenance. 8. Make local Skill-directory copying the default installation method when only the Skill is required. 9. Separate Skill installation, runtime installation, adapter modification, and daemon setup into individually authorized operations. 10. Display an exact change plan before installation, including every file, binary, credential-store entry, and service that will be created or modified. 11. Avoid elevated privileges and explicitly abort if the installer is run as root unless a narrowly defined system-level operation genuinely requires it. 12. Provide a complete uninstall manifest and verify that uninstall removes launchers, services, adapters, and obsolete credentials without deleting wallet backups. ]]>
