T08 · Insecure Dependencies
- Location
SKILL.md:18- Finding
Unpinned npm Packages Executed Through npx
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:18andSKILL.md:29
Vulnerability Type: Unpinned third-party dependencies executed from the npm registry
Risk Level: MediumVulnerable Code
bash npx @rotifer/playground --versionjson { "mcpServers": { "rotifer": { "command": "npx", "args": ["@rotifer/mcp-server"] } } }Technical Analysis
The documented commands execute
@rotifer/playgroundand@rotifer/mcp-serverwithout specifying exact package versions or validating package integrity. When these packages are absent from the local npm cache,npxcan retrieve their current releases from the npm registry and execute them immediately.Consequently, the code that runs may differ from the code available when this Skill was reviewed. A compromised publisher account, malicious package release, or upstream supply-chain compromise could place attacker-controlled code in the execution path.
Although the project does not itself contain malicious executable code, its manifest grants
process:exec,filesystem:read,filesystem:write, andnetwork:outboundpermissions. A compromised npm package executing under this workflow could operate with the invoking user's effective OS privileges and the access available to the host agent.Attack Path
- An attacker compromises the npm publisher account, release process, or package contents for
@rotifer/playgroundor@rotifer/mcp-server. - The attacker publishes a malicious version under the legitimate package name.
- A user or AI agent follows the instructions in
SKILL.md, or starts the configured MCP server. - Because no exact version is specified,
npxretrieves or resolves the mutable package release. npxexecutes the compromised package locally.- The malicious package can perform actions allowed by the invoking process, including reading or modifying accessible files, starting ...[truncated 494 chars]
- An attacker compromises the npm publisher account, release process, or package contents for
- Remediation
View remediation
Remediation Suggestions
- Pin both npm packages to exact, reviewed versions, for example:
bash npx --yes @rotifer/playground@<reviewed-exact-version> --versionjson { "mcpServers": { "rotifer": { "command": "npx", "args": [ "--yes", "@rotifer/mcp-server@<reviewed-exact-version>" ] } } } - Prefer declaring the packages in a committed package manifest and lockfile rather than downloading mutable releases at execution time.
- Enforce lockfile integrity data and use deterministic installation such as
npm ci. - Review package provenance, publisher identity, release signatures, and npm provenance attestations before approving a version.
- Require explicit user approval before the first package download and before any dependency version change.
- Run the CLI and MCP server in a sandbox with minimal filesystem access, restricted environment variables, no unnecessary credentials, and narrowly scoped outbound network access.
- Periodically reassess pinned versions for known vulnerabilities before upgrading, and review each upgrade as a new executable dependency.
- Pin both npm packages to exact, reviewed versions, for example:
