T08 · Insecure Dependencies
- Location
SKILL.md:85- Finding
Unpinned Third-Party Skill Retrieval and Global Installation
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 85-112
Vulnerability Type: Unreviewed and unpinned third-party dependency installation
Risk Level: MediumVulnerable Code
bash npx skills add <owner/repo@skill> -g -yThe
-gflag installs globally (user-level) and-yskips confirmation prompts.For clawhub skills:
bash clawhub install <slug>Optionally specify version:
bash clawhub install <slug> --version <version>For tessl.io skills:
bash tessl install <skill-name>Install from GitHub:
bash tessl install github:user/repoTechnical Analysis
The skill instructs the agent to retrieve and install third-party skills without requiring an immutable version, commit hash, integrity digest, signature verification, or pre-installation review. The default
skills.shcommand combines global installation with-y, bypassing the confirmation prompt.Related instructions elsewhere in
SKILL.mdalso recommend executingnpx skillsand globally installing theclawhubandtesslcommand-line packages without pinning package versions. Because registry packages, tags, slugs, and repositories can change after this skill has been reviewed, the effective installed content is not fixed by the audited document.This is a supply-chain weakness rather than evidence that any named registry is malicious. Exploitation depends on a malicious or compromised package, repository, publisher account, registry entry, or deceptively named dependency being selected for installation.
Attack Path
- An attacker publishes a malicious skill or compromises an existing skill, repository, publisher account, or registry entry.
- The malicious entry is returned by a registry search and appears relevant to a user's request.
- The agent recommends or runs an installation command using a mutable slug, package name, tag, ...[truncated 1049 chars]
- Remediation
View remediation
Remediation Suggestions
- Require explicit user approval before every installation and remove
-yfrom the default command. - Prefer project-local, isolated installation over global installation. Use
-gonly when the user specifically requests it and understands its scope. - Pin command-line packages and skills to reviewed versions. For GitHub sources, prefer immutable commit hashes rather than mutable branches or tags.
- Verify publisher identity, source repository, release signatures, checksums, and package integrity metadata before installation.
- Download and inspect each skill's instructions, scripts, manifests, lifecycle hooks, and dependency tree before enabling it.
- Display the exact registry, source URL, resolved version or commit, requested permissions, and final command to the user before execution.
- Where supported, disable package lifecycle scripts during initial retrieval and perform installation in a sandbox with restricted filesystem, credential, and network access.
- Maintain an allowlist of trusted publishers and reviewed skill versions, and re-review dependencies before updates.
- Update the documented examples to use immutable placeholders, such as a verified semantic version or commit hash, rather than an unqualified slug or repository reference.
- Require explicit user approval before every installation and remove
