T08 · Insecure Dependencies
- Location
SKILL.md:453- Finding
Unpinned Third-Party Skill Installer Creates a Supply-Chain Risk
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 453–455
Vulnerability Type: T08: Insecure Dependencies
Risk Level: MediumComplete Code Snippet:
markdown 3. **Neither available** — Prompt the user to install one: - MCP: Configure the `sjinn` server in `.mcp.json` (`https://mcp.sjinn.ai/mcp`) - Basic Skills: Run `npx skills add sjinn-ai/skills`Technical Analysis
The documented fallback instructs the user to execute the
skillsnpm package throughnpxwithout pinning it to an exact, reviewed version. It also installs Skill content fromsjinn-ai/skillswithout specifying a reviewed commit hash, signed release, or integrity digest.Because
npxmay retrieve and execute the package version currently resolved by the package registry, the effective installer code can change after this project has been audited. Likewise, the repository content selected by the installer may change over time. This creates a time-of-check/time-of-use supply-chain boundary: reviewingSKILL.mddoes not establish the integrity of the code or instructions subsequently downloaded and executed.No evidence in the audited project proves that the referenced package or repository is malicious. The issue is the unsafe, mutable dependency-installation method.
Attack Path
- An attacker compromises the npm package resolved as
skills, its maintainer account, the referenced Skill repository, or another component in the retrieval chain. - The attacker publishes a modified package version or replaces remotely retrieved Skill content.
- A user follows the documented command:
shell npx skills add sjinn-ai/skills npxretrieves and executes the currently resolved installer rather than an exact reviewed artifact.- The compromised installer or installed Skill executes attacker-controlled behavior under the invoking user's privileges when installed or subsequently invoked.
- Th ...[truncated 877 chars]
- An attacker compromises the npm package resolved as
- Remediation
View remediation
Remediation Suggestions
- Pin the npm installer to an exact, reviewed version rather than relying on mutable resolution:
shell npx --yes skills@<reviewed-exact-version> add <source-pinned-to-reviewed-commit> - Pin the Skill source to a reviewed commit hash or immutable signed release instead of a moving repository reference.
- Publish and verify cryptographic integrity hashes for both the installer package and downloaded Skill artifact.
- Require package provenance or signature verification and document the expected publisher identity.
- Prefer downloading and reviewing the artifact before execution rather than allowing
npxto retrieve and immediately run it. - Run installation with least privilege in an isolated environment without access to unrelated credentials or sensitive files.
- Add a warning that users must inspect the resolved package version and installed content before activation.
- Periodically re-audit pinned dependency versions and update pins only after review.
- Pin the npm installer to an exact, reviewed version rather than relying on mutable resolution:
