T08 · Insecure Dependencies
- Location
SKILL.md:22- Finding
Unpinned npm Packages Permit Mutable Third-Party Code Execution
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 22–25; repeated at lines 237 and 245
Vulnerability Type: Insecure third-party dependency installation
Risk Level: MediumVulnerable Code
bash # Standalone CLI (universal — works with any agent host that has Bash) npm install -g @xlmtools/cli # MCP server (optional fast-path for Claude Code, Cursor, Cline, OpenClaw, etc.) claude mcp add xlmtools npx @xlmtools/mcpThe troubleshooting section repeats the same mutable package installation instructions:
text **"Command not found: xlm"** — User needs to install: `npm install -g @xlmtools/cli`text **MCP tools not appearing** — User may need to install XLMTools as an MCP server: `claude mcp add xlmtools npx @xlmtools/mcp`.Technical Analysis
Both commands reference npm packages without exact versions, integrity hashes, signatures, or a lockfile. Consequently, their effective executable payload is determined by the package registry at installation or invocation time rather than by the reviewed skill artifact.
npm install -ginstalls the resolved package globally and can execute npm lifecycle scripts with the invoking user's privileges. The MCP command delegates execution tonpx, which may retrieve and execute the version currently published under@xlmtools/mcp. Because the audited project contains onlySKILL.md, the executable package implementations and transitive dependencies cannot be reviewed or verified from this artifact.This does not establish that either named package is malicious. It establishes a mutable supply-chain boundary through which a compromised publisher account, malicious future release, or compromised transitive dependency could introduce arbitrary code after this skill has been audited.
Attack Path
- An attacker compromises the npm publisher account, package release process, registry delivery path, or a transitive dependency used by one of the referenced packages.
- The att ...[truncated 1362 chars]
- Remediation
View remediation
Remediation Suggestions
-
Pin each package to an exact, reviewed version rather than resolving the latest release:
bash npm install -g @xlmtools/cli@<reviewed-exact-version> npx --yes @xlmtools/mcp@<reviewed-exact-version> -
Publish cryptographic checksums or package signatures through a trusted channel and require verification before execution.
-
Supply a lockfile and software bill of materials that identify all direct and transitive dependency versions.
-
Document npm lifecycle scripts and package provenance so users can review what executes during installation.
-
Prefer a project-local, isolated installation over a global installation. Run the package in a sandbox or container with restricted filesystem and network access.
-
Use a trusted internal registry or allowlist where practical, and continuously monitor the package namespace and dependencies for publisher changes, unexpected releases, and known vulnerabilities.
-
Ensure the MCP host exposes only the minimum required directories, environment variables, credentials, and network permissions to the package.
-
Provide reproducible build instructions and immutable release artifacts so the distributed executable can be compared with reviewed source code.
-
