T03 · Remote Payload Retrieval and Execution
- Location
SKILL.md:31- Finding
Mutable Remote Python Payload Downloaded and Subsequently Executed
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:31-41; duplicated inREADME.md:33-43
Vulnerability Type: Mutable remote payload retrieval and execution
Risk Level: HighVulnerable Code
SKILL.md:31-41:bash ## Install # Requires Python 3.8+. No pip install needed. curl -O https://raw.githubusercontent.com/itsPremkumar/prompt-lint/main/prompt_lint.py # Or copy the file anywhere — it's self-contained. ## Quick start python prompt_lint.py self-test # prove it works end-to-end python prompt_lint.py check --help # check subcommandThe same installation and execution instructions appear in
README.md:33-43.Technical Analysis
The installation procedure retrieves executable Python code from the mutable
mainbranch of a personal GitHub repository. The quick-start instructions then execute a file with the downloaded name.The downloaded content is not constrained by an immutable commit identifier, cryptographic checksum, or digital signature. Consequently, the effective code executed by users can change after the reviewed Skill package has been published and audited. This creates a remote payload channel independent of the bundled
prompt_lint.py.Remote retrieval is unnecessary for the declared prompt-linting functionality because a self-contained copy of
prompt_lint.pyis already included in the package. The behavior therefore exceeds the minimum access needed to run the Skill locally.Attack Path
- An attacker compromises the maintainer account, repository, or publishing workflow, or an authorized maintainer replaces the file on the
mainbranch. - The attacker modifies
prompt_lint.pyat the documented raw GitHub URL. - A user follows the installation instructions and downloads the modified file.
- The downloaded file is saved as
prompt_lint.pywithout integrity verification. - The user follows the quick-start instructions and executes the attacker ...[truncated 691 chars]
- An attacker compromises the maintainer account, repository, or publishing workflow, or an authorized maintainer replaces the file on the
- Remediation
View remediation
Remediation Suggestions
- Remove the remote download command and direct users to execute the reviewed, bundled
prompt_lint.py. - If remote distribution is genuinely required, use a release artifact or raw URL pinned to an immutable commit hash rather than
main. - Publish an expected SHA-256 digest through a separate trusted channel and require verification before execution.
- Prefer signed release artifacts and document signature verification.
- Ensure installation does not overwrite an existing local file without explicit user confirmation.
- Update both
SKILL.mdandREADME.mdso they provide identical, integrity-preserving installation instructions. - Configure CI to detect mutable executable-download instructions in documentation.
- Remove the remote download command and direct users to execute the reviewed, bundled
