T03 · Remote Payload Retrieval and Execution
- Location
README.md:33- Finding
Mutable Remote Python Payload Downloaded and Subsequently Executed
- Content
View full analysis
Vulnerability Details
File Location:
README.md:33-43; duplicate instructions atSKILL.md:31-41
Vulnerability Type: Remote payload retrieval and execution through a mutable upstream branch
Risk Level: MediumComplete vulnerable code snippet (
README.md:33-43):markdown ## Install ```bash # Requires Python 3.8+. No pip install needed. curl -O https://raw.githubusercontent.com/itsPremkumar/manifest-diff/main/manifest_diff.py # Or copy the file anywhere — it's self-contained.Quick start
bash python manifest_diff.py self-testtext The same installation and execution sequence appears in `SKILL.md:31-41`. ### Technical Analysis The documented installation process downloads executable Python source from the mutable `main` branch of a personal GitHub repository. The command does not pin the payload to an immutable commit or versioned release and does not verify a checksum or cryptographic signature. Although `curl` does not execute the response directly, the quick-start instructions subsequently execute the downloaded file with Python. The effective payload can therefore change after the Skill package has been reviewed. If the maintainer account, repository, branch, or content-delivery path is compromised, the remote file could be replaced with arbitrary Python code. Remote retrieval is not required for the declared manifest-comparison functionality because `manifest_diff.py` is already included in the audited package. The instruction consequently introduces an avoidable network and supply-chain trust boundary beyond the minimum privileges needed by the Skill. ### Attack Path 1. An attacker compromises the upstream maintainer account, repository, or mutable `main` branch. 2. The attacker replaces `manifest_diff.py` with malicious Python code. 3. A user follows the installation command in `README.md` or `SKILL.md`. 4. `curl` downloads the attacker-controlled version wit ...[truncated 950 chars]- Remediation
View remediation
Remediation Suggestions
- Remove the remote download instruction and direct users to run the bundled, reviewed
manifest_diff.py. - If remote installation must remain supported, reference an immutable commit hash or versioned release artifact rather than
main. - Publish and require verification of a SHA-256 checksum or cryptographic signature before execution.
- Use failure-aware download options such as
curl --fail --location --output manifest_diff.py. - Display the expected checksum in documentation and stop installation when verification fails.
- Keep network retrieval and execution as separate, explicit steps so users can inspect the downloaded source.
- Apply the same correction to both
README.mdandSKILL.mdto prevent users from following an unsafe duplicate instruction.
- Remove the remote download instruction and direct users to run the bundled, reviewed
