T08 · Insecure Dependencies
- Location
references/discipline-routing.md:162- Finding
Unpinned Third-Party Skill Installation
- Content
View full analysis
Vulnerability Details
File Location:
references/discipline-routing.md, lines 162–170
Vulnerability Type: Unverified and unpinned third-party dependency installation
Risk Level: MediumVulnerable Code
text - Check whether `~/.claude/skills/econ-write/SKILL.md` exists - If it does not exist, prompt the user:⚠️ The economics branch requires the econ-* extension package (five sub-skills)
Installation command: git clone https://github.com/juliaError/econ-TopJournal-writing-Skill.git
Then copy the five subdirectories under skills/ into ~/.claude/skills/
Note: The econ-* extension package uses the CC BY-NC 4.0 license
text The same mutable repository is declared as an optional dependency in
manifest.yaml, lines 359–370, andplugin.json, lines 29–41.Technical Analysis
The installation procedure clones the mutable default branch of a third-party GitHub repository. It does not pin a reviewed commit or immutable release and does not require checksum, signature, provenance, or content verification.
This is security-sensitive because the downloaded sub-skills are copied into
~/.claude/skills/. The router subsequently reads those sub-skills'SKILL.mdfiles and allows their instructions to control task execution. Therefore, the effective instructions executed by the agent can change after this router package has been reviewed.The project does not automatically run the command, and the reviewed repository contains no malicious payload. The risk arises from the documented supply-chain process and the trust placed in mutable external skill content.
Attack Path
- An attacker compromises the referenced GitHub account or gains the ability to alter the upstream repository.
- The attacker adds malicious or unsafe instructions to one or more sub-skill files on the default branch.
- A user requests an economics workflow while the optional extension is not installed.
- The router presents the unpinned `git ...[truncated 956 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin the dependency to a reviewed commit hash or immutable signed release rather than cloning the mutable default branch.
- Publish an allowlisted commit identifier and SHA-256 checksums for every installed skill file.
- Require checksum and signature verification before copying files into
~/.claude/skills/. - Add a mandatory review step that inspects each downloaded
SKILL.md, manifest, script, and referenced resource before activation. - Document the exact source and destination paths instead of broadly instructing users to copy multiple directories.
- Apply least privilege when loading third-party skills, especially for subprocess, network, credential, and unrestricted file-system access.
- Re-audit the extension package whenever the pinned version changes.
- Consider distributing the optional dependency through a controlled, versioned registry with provenance attestations.
