T03 · Remote Payload Retrieval and Execution
- Location
references/installation.md:24- Finding
Unpinned Remote Installer Is Executed Directly by a Shell
- Content
View full analysis
Vulnerability Details
File Location:
references/installation.md, lines 24–32
Vulnerability Type: Remote payload retrieval and execution
Risk Level: HighVulnerable Code
markdown Before running an installer, tell the trusted operator that the official installer downloads and verifies a Composio release under `~/.composio`, creates a `composio` entry point under `~/.local/bin` by default, and may add a managed Composio block to supported shell startup files. After the operator authorizes those host changes, run: ```bash curl -fsSL https://composio.dev/install | shtext ### Technical Analysis The documented command downloads a mutable script from an external URL and sends it directly to `sh`. The response is executed without first saving it for inspection, pinning it to a reviewed version, or independently verifying a cryptographic signature or hardcoded digest. HTTPS protects the connection under normal conditions, but it does not establish that the downloaded content is identical to the content reviewed during this audit. Compromise of the vendor publication system, domain, CDN, DNS/TLS trust path, or installer endpoint could change the effective payload at execution time. Operator authorization helps prevent unintended installation but does not mitigate the integrity risk of executing a mutable network response. The documentation states that the installer can create files under `~/.composio` and `~/.local/bin` and modify supported shell startup files. Consequently, the fetched script is expected to receive write access to security-relevant user-level locations. This behavior exceeds the minimum privilege and trust necessary to install the declared CLI. Installation can instead use a pinned release artifact whose integrity is verified before a separate execution step. ### Attack Path 1. An attacker compromises the installer endpoint or another component in its delivery and publication chain. 2. The trusted operator authorize ...[truncated 1503 chars]- Remediation
View remediation
Remediation Suggestions
- Replace the
curl | shpipeline with a pinned release artifact or an official platform package whose exact version is specified. - Download the artifact to a new local file without executing it.
- Verify a vendor-provided cryptographic signature using a separately distributed, pinned public key. If signatures are unavailable, verify a hardcoded SHA-256 digest obtained through an independent trusted channel.
- Abort installation if verification fails; do not rely solely on HTTPS or a checksum downloaded from the same mutable endpoint.
- Inspect the downloaded installer or use a package format that exposes its file manifest before installation.
- Execute the verified artifact as a separate, explicitly authorized command.
- Disable shell startup-file modification by default. If such modification is necessary, show the exact target files and proposed changes and request specific operator approval.
- Document all directories and files created, their permissions, and an uninstall or rollback procedure.
- Continue to avoid elevated privileges and limit installation to user-owned directories.
- After installation, verify the executable path, ownership, permissions, version, and expected artifact digest before authentication or access to connected applications.
- Replace the
