T08 · Insecure Dependencies
- Location
README.md:35- Finding
Unpinned Remote Skill Installation from a Mutable Branch
- Content
View full analysis
Vulnerability Details
File Location:
README.md, lines 35-36
Vulnerability Type: Unpinned remote dependency and agent-instruction supply-chain risk
Risk Level: MediumVulnerable Code
bash curl -sL https://raw.githubusercontent.com/KeWang0622/shouldislab/main/SKILL.md \ -o ~/.claude/skills/shouldislab.mdTechnical Analysis
The documented installation command retrieves
SKILL.mdfrom the mutablemainbranch of a personal GitHub repository and writes it directly into the user's active Claude Skills directory. It does not pin a reviewed commit, validate a cryptographic checksum, verify a signature, or provide an intermediate review step.The retrieved resource is Markdown agent-instruction content rather than a native executable. Nevertheless, placing it in
~/.claude/skills/establishes it as trusted instructions that may affect later agent sessions. The effective installed content can therefore change after this version of the project has been audited.The use of HTTPS protects the transfer in transit but does not protect against repository compromise, maintainer-account compromise, or a malicious future modification to the referenced branch. The current bundled
SKILL.mdwas reviewed and does not itself contain malicious instructions.The GitHub and
img.shields.ioURLs atREADME.md:6-7are promotional links and externally hosted badge images, not executable downloads. They do not constitute the reported vulnerability.Attack Path
- An attacker compromises the repository, its maintainer account, or another mechanism authorized to update the
mainbranch. - The attacker replaces
SKILL.mdwith malicious agent instructions, such as directives to collect sensitive data or misuse available tools. - A user follows the documented
curlcommand. - The command silently follows redirects and directly overwrites
~/.claude/skills/shouldislab.md. - The agent subsequently loa ...[truncated 971 chars]
- An attacker compromises the repository, its maintainer account, or another mechanism authorized to update the
- Remediation
View remediation
Remediation Suggestions
- Pin the download to a reviewed immutable commit instead of the mutable
mainbranch:bash curl -fL https://raw.githubusercontent.com/KeWang0622/shouldislab/<full-commit-sha>/SKILL.md \ -o /tmp/shouldislab.md - Publish the expected SHA-256 digest through a separately protected release channel and verify it before installation:
bash echo "<expected-sha256> /tmp/shouldislab.md" | sha256sum --check - - Require users to inspect the downloaded file before moving it into the active Skills directory.
- Use
curl -fLrather thancurl -sLso HTTP failures are not silently installed as content. - Install with an explicit final step only after successful verification:
bash install -m 0644 /tmp/shouldislab.md ~/.claude/skills/shouldislab.md - Prefer signed, versioned releases and document how users can verify the release signature and maintainer identity.
- Avoid directly overwriting an existing active Skill without making a backup or obtaining user confirmation.
- Pin the download to a reviewed immutable commit instead of the mutable
