T08 · Insecure Dependencies
- Location
smithery.yaml:13- Finding
Unpinned npm Package Is Automatically Downloaded and Executed
- Content
View full analysis
Vulnerability Details
File Locations:
SKILL.md:6-10SKILL.md:38-43smithery.yaml:13-15README.md:23-35
Vulnerability Type: Unpinned third-party dependency execution
Risk Level: MediumVulnerable Code
SKILL.md:6-10:yaml install: - id: node kind: node package: sefaria-mcp-server bins: - sefaria-mcpSKILL.md:38-43:json { "mcpServers": { "sefaria": { "command": "npx", "args": ["-y", "sefaria-mcp-server"] } } }smithery.yaml:13-15:yaml commandFunction: |- config => ({command: 'npx', args: ['-y', 'sefaria-mcp-server']})README.md:23-35:bash npm install -g sefaria-mcp-serverOr run directly with npx:
bash npx sefaria-mcp-serverThe installed CLI binary is also available as
sefaria-mcp:bash npx -y -p sefaria-mcp-server sefaria-mcpTechnical Analysis
The installation metadata and documented launch configurations identify the npm package only by name and do not pin an exact version or integrity digest. In particular,
npx -ypermits npm to download and immediately execute the version currently selected by the npm registry without interactive confirmation.Consequently, reviewing the source code in this project does not guarantee that the same code will be executed by future installations. A newer package release can replace the audited implementation while retaining the same package name. This creates a supply-chain trust boundary around the npm publisher account, registry metadata, and latest published release.
The repository's
package-lock.jsonprovides integrity information for local dependency installation, but it does not protect the unversioned top-level package fetched through the documentednpxand Smithery commands.Attack Path
- An attacker compromises the npm publisher account, publishing ...[truncated 1344 chars]
- Remediation
View remediation
Remediation Suggestions
-
Pin every installation and execution command to an audited exact version, for example:
json { "command": "npx", "args": ["-y", "sefaria-mcp-server@1.0.1"] } -
Update
SKILL.md,README.md, andsmithery.yamlconsistently so no supported installation path silently resolves the latest release. -
Where the platform supports it, pin the package artifact by cryptographic integrity digest rather than relying only on a version number.
-
For source-based deployments, use
npm ciwith the committed lockfile instead of an unconstrained installation. Review lockfile changes before upgrading. -
Adopt a controlled upgrade process that verifies npm provenance, release signatures or attestations, repository tags, package contents, and integrity hashes before changing the pinned version.
-
Run the MCP server under a least-privileged account with restricted filesystem access, limited environment variables, and constrained outbound network access to reduce the impact of a future supply-chain compromise.
-
