T03 · Remote Payload Retrieval and Execution
- Location
SKILL.md:34- Finding
Mutable Remote Installers Are Downloaded and Executed Directly
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:34;README.md:169,179;README.zh-CN.md:166,176;install.sh:5;install.ps1:4-5
Vulnerability Type: Remote payload retrieval and execution
Risk Level: CriticalVulnerable Code
SKILL.md:34,README.md:169, andREADME.zh-CN.md:166:sh curl -fsSL https://raw.githubusercontent.com/johnsonbuilds/skillsync/main/install.sh | shREADME.md:179andREADME.zh-CN.md:176:powershell irm https://raw.githubusercontent.com/johnsonbuilds/skillsync/main/install.ps1 | iexinstall.sh:4-5:sh # Usage: # curl -fsSL https://raw.githubusercontent.com/johnsonbuilds/skillsync/main/install.sh | shinstall.ps1:3-5:powershell # Usage (in PowerShell): # irm https://raw.githubusercontent.com/johnsonbuilds/skillsync/main/install.ps1 | iex # (Windows PowerShell 5.1: iwr <url> -UseBasicParsing | iex)Technical Analysis
The documented installation commands retrieve scripts from the mutable
mainbranch and immediately evaluate them in a local shell. There is no immutable commit or release pin, checksum verification, digital-signature verification, or opportunity to inspect the downloaded file before execution.Consequently, the effective installer payload is not limited to the source reviewed in this audit. It can change after publication without requiring any modification to the audited package. The same risk applies to both Unix-like systems through
shand Windows systems throughInvoke-Expression.This remote execution channel is not the minimum privilege necessary to install a Python package. A versioned package, verified release artifact, or downloaded-and-reviewed installer would provide the declared functionality with materially less risk.
Attack Path
- An attacker compromises the GitHub account, repository, CI release process, or another component capable of changing the
main...[truncated 1180 chars]
- An attacker compromises the GitHub account, repository, CI release process, or another component capable of changing the
- Remediation
View remediation
Remediation Suggestions
- Remove all
curl | sh,irm | iex, and equivalent direct-evaluation instructions. - Publish installers as versioned release assets rather than serving them from a mutable branch.
- Pin installation instructions to an immutable release tag or full commit hash.
- Publish SHA-256 hashes and preferably cryptographic signatures through an independently authenticated release channel.
- Require users to download the installer to a file, verify its integrity, inspect it, and execute it separately.
- Prefer a trusted package-index installation with an exact version, for example a reviewed
skillsync==0.3.1release. - Ensure the installer never escalates privileges automatically. If an operating-system dependency is missing, print explicit manual instructions instead.
- Remove all
