T03 · Remote Payload Retrieval and Execution
- Location
SKILL.md:50- Finding
Unverified Installation and Update of Mutable Remote Skill Content
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 50-63 and 69-88
Vulnerability Type: Remote supply-chain content retrieval without integrity verification
Risk Level: HighVulnerable Code Snippet
bash gh api "repos/{owner}/{repo}/tarball/{branch}" > archive.tar.gz # Extract the archive and copy {path} to skills/{skill-name}/bash gh api "repos/{owner}/{repo}/contents/{path}?ref={branch}" --jq '.sha'The surrounding installation and update instructions direct the agent to:
text 1. Parse owner, repo, branch, and path from the source. 2. Download the repository archive and extract the target directory. 3. Save the skill under skills/{skill-name}/. 4. Record the source and commit in REGISTRY.yaml. 5. During updates, download the source again and replace the installed skill.Technical Analysis
The manager accepts GitHub repository coordinates and downloads skill content from a branch, with
mainused by default. A branch is a mutable reference: its effective contents can change after the source was initially reviewed or installed.The documented process does not require the manager to:
- Resolve the branch to an immutable commit before downloading.
- Download the archive using that immutable commit.
- Verify a cryptographic checksum or signature.
- Restrict installation to approved repository owners.
- Review or quarantine the downloaded skill before placing it in the active
skills/directory. - Confirm that the archive and separately queried content SHA correspond to the same trusted artifact.
Recording a commit value in
REGISTRY.yamlprovides provenance metadata but does not authenticate the downloaded archive before activation. In addition, the update process intentionally replaces an existing skill with newly retrieved remote content. A repository owner or attacker who compromises the repository can therefore change the effective skill payload ...[truncated 1534 chars]- Remediation
View remediation
Remediation Suggestions
- Resolve the requested branch to a full immutable commit SHA before downloading any content.
- Download the archive by that exact commit SHA rather than by a mutable branch name.
- Verify that the downloaded artifact matches the resolved commit and, where available, verify a trusted signature or pinned cryptographic checksum.
- Require explicit user confirmation for new repository owners and maintain an allowlist for unattended updates.
- Extract downloads into a newly created private staging directory and inspect the skill manifest, instructions, scripts, symlinks, and executable files before activation.
- Keep the staged artifact outside the active skill search path until all validation succeeds.
- Perform replacement atomically only after verification. If any step fails, preserve the current installed version and registry entry.
- Record the full verified commit SHA and artifact digest in
REGISTRY.yaml. - For updates, display the old and new immutable commits and require review or approval when executable files or security-sensitive instructions change.
- Consider enforcing signed commits or releases for trusted publishers and rejecting unsigned updates where policy requires it.
