T08 · Insecure Dependencies
- Location
README.md:8- Finding
Unpinned Third-Party Packages Are Retrieved and Executed
- Content
View full analysis
Vulnerability Details
File Location:
README.md:8-11,README.md:37-42,references/setup.md:5-7, andSKILL.md:12-16
Vulnerability Type: Unpinned and mutable third-party dependencies
Risk Level: MediumVulnerable Code
README.md:8-11:bash npx skills add tiny-agent-company/agent-card-skillREADME.md:37-42:text 1. Install the skill (non-interactive): npx skills add tiny-agent-company/agent-card-skill -y 2. Install the CLI (non-interactive): npm install -g agent-cardsreferences/setup.md:5-7:bash npm install -g agent-cardsSKILL.md:12-16:yaml install: - kind: node package: agent-cards bins: [agent-cards]Technical Analysis
The installation instructions retrieve mutable third-party packages without specifying an exact package version, immutable source revision, integrity hash, or signature. The effective code installed by these commands can therefore change after the skill has been audited.
npxmay download and execute package code from the configured npm registry. Similarly,npm install -g agent-cardsinstalls the latest version selected by npm and may execute package lifecycle scripts during installation. Global installation also makes the resulting executable available throughout the user's environment.This does not prove that the referenced packages are malicious. It creates a supply-chain risk in which compromise of a publishing account, registry artifact, upstream repository, or transitive dependency could turn the documented setup process into a code-execution channel.
Attack Path
- An attacker compromises the npm publisher, source repository, registry artifact, or an unpinned transitive dependency.
- The attacker publishes a malicious release under the expected package name.
- A user or agent follows the documented
npxornpm install -ginstructions. - The package manager res ...[truncated 787 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin every npm package to a reviewed exact version rather than relying on the latest compatible release.
- Where a repository is installed directly, use an immutable commit hash instead of a mutable branch or tag.
- Publish expected integrity hashes or signed release provenance and document how users can verify them.
- Use package-lock or equivalent lock data for any maintained Node.js project containing dependencies.
- Avoid global installation where possible. Prefer a project-local, least-privileged installation.
- Evaluate whether installation can use
--ignore-scripts; if lifecycle scripts are required, document and audit them explicitly. - Recommend installation from a non-administrative account and warn users not to use
sudo. - Document the expected package publisher, version, checksum, and executable behavior so users can detect substitution or compromise.
