T03 · Remote Payload Retrieval and Execution
- Location
SKILL.md:15- Finding
Unverified Remote Installer Is Downloaded and Executed by Bash
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 15 and 40
Vulnerability Type: Remote payload retrieval and execution
Risk Level: CriticalVulnerable Code
Line 15, automatic installation metadata:
json "command": "curl -fsSL https://raw.githubusercontent.com/corespeed-io/brow/main/install.sh | bash",Line 40, manual installation instructions:
bash curl -fsSL https://raw.githubusercontent.com/corespeed-io/brow/main/install.sh | bashTechnical Analysis
Both installation paths retrieve
install.shfrom the mutablemainbranch of an external GitHub repository and immediately pass the response to Bash. The downloaded content is not pinned to an immutable commit or release, saved for inspection, or validated using a cryptographic signature or checksum.HTTPS protects the network connection in transit, but it does not make the upstream payload immutable or protect against compromise of the repository, maintainer account, release process, or branch. The code that ultimately executes can therefore change after the Skill has been reviewed without requiring any modification to this project.
Installing a rendering utility may be necessary for the declared functionality, but executing an unverified network response with all of the invoking user's authority exceeds the minimum privilege and trust required. A pinned, reviewed, and integrity-verified artifact would provide the same functionality with less supply-chain risk.
The installer source is not included in the audited project. Consequently, this audit does not establish that the current remote script performs credential theft, persistence, or other malicious actions. The confirmed vulnerability is the unrestricted execution channel delegated to mutable remote content.
Attack Path
- An attacker compromises the upstream GitHub repository, a maintainer account, the
mainbranch, or another part of the installer publication ...[truncated 1659 chars]
- An attacker compromises the upstream GitHub repository, a maintainer account, the
- Remediation
View remediation
Remediation Suggestions
- Remove both instances of the
curl | bashinstallation pattern. - Pin the dependency to a specific reviewed release or immutable commit rather than the mutable
mainbranch. - Download the installer or release artifact to a local file before execution so it can be inspected:
bash curl -fL -o brow-installer.sh "https://example.invalid/pinned/version/install.sh" - Publish and verify a cryptographic signature or trusted SHA-256 checksum before executing any downloaded content:
bash echo "<EXPECTED_SHA256> brow-installer.sh" | sha256sum -c - - Execute the installer only after successful verification, and avoid elevated privileges unless a specific operation demonstrably requires them.
- Prefer a reputable package manager or signed release package with an explicitly locked version and verifiable provenance.
- Document the installer's expected network access, files created or modified, executable destination, update behavior, and uninstall procedure.
- Apply equivalent pinning and integrity verification to the managed browser downloaded by
brow browser install, or document the verification guarantees implemented bybrow. - Run installation and rendering in a sandbox or restricted account with access limited to the required input and output paths.
- Remove both instances of the
