T08 · Insecure Dependencies
Warning
- Location
- SKILL.md:12
- Finding
- Unpinned Third-Party npm Packages Execute with Access to a Sensitive API Key## Vulnerability Details **File Location**: `SKILL.md`, lines 12–17 and 99–110 **Vulnerability Type**: Unpinned third-party dependency execution **Risk Level**: Medium ### Vulnerable Code ```yaml install: - id: botcall-cli kind: node package: botcall bins: [botcall] label: Install botcall CLI (npm) ``` ```json { "mcpServers": { "botcall": { "command": "npx", "args": ["@botcallio/mcp"], "env": { "BOTCALL_API_KEY": "bs_live_YOUR_KEY" } } } } ``` ### Technical Analysis The Skill instructs users to install `botcall` and execute `@botcallio/mcp` without specifying exact package versions or integrity constraints. In particular, `npx @botcallio/mcp` can retrieve and execute the package version currently selected by the npm registry when the MCP server starts. Because the MCP process is explicitly supplied with `BOTCALL_API_KEY`, code contained in the resolved package can access that credential. The project includes no lockfile, integrity hash, vendored source, or other mechanism establishing the precise package contents that will execute. There is no evidence in the audited file that either named package is currently malicious. The vulnerability is the mutable and unaudited dependency execution path, which creates supply-chain exposure if a package, maintainer account, publication pipeline, or registry resolution process is compromised. ### Attack Path 1. An attacker compromises the npm package, a package maintainer account, or its release pipeline. 2. The attacker publishes a malicious version that is selected by the unpinned `botcall` or `@botcallio/mcp` package reference. 3. A user installs the CLI or starts the configured MCP server. 4. npm or `npx` downloads and executes the attacker-controlled release. 5. The malicious MCP package reads `BOTCALL_API_KEY` from its environment. 6. The package can exfiltrate or misuse the key and execute commands with the permissions of the user running the Ag ...[truncated 738 chars]
- Remediation
- ## Remediation Suggestions 1. Pin both npm dependencies to exact, reviewed versions rather than relying on mutable registry resolution: - Use an exact version for `botcall`. - Replace `npx @botcallio/mcp` with an exact version or, preferably, a locally installed and locked executable. 2. Maintain a lockfile containing package versions and integrity hashes, and enforce immutable or reproducible installation in deployment workflows. 3. Review package provenance, publisher identity, release history, and dependency tree before approving upgrades. 4. Use npm provenance and integrity verification where available, and consider an internal package mirror or allowlist for approved artifacts. 5. Run the CLI and MCP server under a restricted operating-system account or sandbox with minimal filesystem and network permissions. 6. Scope `BOTCALL_API_KEY` to the minimum necessary permissions and avoid exposing unrelated secrets to the process. 7. Rotate the API key if there is any indication that an untrusted package version has already executed. 8. Establish a controlled dependency-update process that reviews and tests each new version before deployment.
