T08 · Insecure Dependencies
- Location
README.md:21- Finding
Unpinned Globally Installed Executable Dependency
- Content
View full analysis
Vulnerability Details
File Location:
README.md, lines 21-25
Vulnerability Type: Supply-chain exposure through an unpinned globally installed npm dependency
Risk Level: MediumComplete Code Snippet:
markdown ### 1. 前置依赖 本技能依赖于 [TaskBoardAI](https://github.com/taskboardai/taskboardai)。请先全局安装: ```bash npm install -g taskboardaitext The installed dependency is subsequently used as a locally executed MCP server in `SKILL.md`, lines 20-24: ```xml <mcp_server> <command>node</command> <args> <arg>/opt/homebrew/lib/node_modules/taskboardai/server/mcp/kanbanMcpServer.js</arg> </args> </mcp_server>Technical Analysis
The installation command does not specify an exact TaskBoardAI version, lockfile, or package-integrity value. It therefore resolves whatever version the npm registry serves at installation time. The Skill then launches JavaScript from that global package as its MCP server.
The externally installed server implementation is absent from the audited project, which contains only
README.mdandSKILL.md. Consequently, the effective runtime code cannot be verified from this artifact and may change independently after review. npm installation may also execute package lifecycle scripts under the privileges of the user performing the installation.No evidence establishes that the current TaskBoardAI package is malicious. The confirmed issue is the unsafe, mutable dependency acquisition and execution model, which creates a supply-chain attack surface.
Attack Path
- An attacker compromises the upstream npm package, its publisher account, or a transitive dependency and publishes a malicious version.
- A user follows the documented
npm install -g taskboardaicommand, which resolves the malicious version because no exact version or integrity constraint is specified. - Attacker-controlled code runs during an npm lifecycle stage or later when Node launch ...[truncated 862 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin TaskBoardAI to an audited exact version rather than installing the latest available release.
- Install the dependency locally instead of globally and commit an appropriate lockfile with integrity metadata.
- Use reproducible installation commands such as
npm ciagainst the reviewed lockfile. - Verify package provenance, signatures, checksums, and publisher identity before installation.
- Disable npm lifecycle scripts during installation where compatible, then explicitly run only reviewed setup steps.
- Vendor or include the reviewed MCP server implementation so its effective behavior is part of the auditable artifact.
- Run the MCP server in a sandbox or restricted service account with minimal filesystem, environment-variable, credential, and network access.
- Add automated dependency scanning and require security review before updating the pinned version.
