T08 · Insecure Dependencies
- Location
SKILL.md:13- Finding
Unpinned npm Package Is Downloaded and Executed Through npx
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 13-38
Vulnerability Type: Unpinned third-party dependency execution
Risk Level: MediumVulnerable Code
yaml install: - kind: node package: doubletick-cli bins: - doubletickbash npx doubletick-cli loginjson { "mcpServers": { "doubletick": { "command": "npx", "args": ["-y", "doubletick-cli"] } } }Technical Analysis
The skill instructs users and the MCP host to execute
doubletick-cliwithout specifying an exact package version or verifying an integrity digest. In particular, the MCP configuration usesnpx -y, which permits npm to resolve, download, and execute the currently available package without interactive confirmation.Consequently, the code ultimately executed can change after the skill has been audited. If a future package release, npm account, package ownership, or transitive dependency is compromised, launching the MCP server could execute attacker-controlled code. The reviewed
SKILL.mddoes not itself contain a malicious payload; the risk arises from unsafe dependency resolution and execution.Attack Path
- An attacker compromises the npm publisher account, package ownership, release process, or a dependency of
doubletick-cli. - The attacker publishes a malicious package version that satisfies the unpinned package reference.
- A user follows the documented login command or starts the configured MCP server.
npx, particularly with the-yoption, resolves and downloads the malicious version without asking the user to approve the installation.- The malicious package executes with the permissions and environment of the user running the agent or MCP host.
- The payload can access resources available to that process and perform actions under the user's operating-system account.
Impact Assessment
Successful explo ...[truncated 535 chars]
- An attacker compromises the npm publisher account, package ownership, release process, or a dependency of
- Remediation
View remediation
Remediation Suggestions
- Pin
doubletick-clito a reviewed exact version in every installation and execution command, such asdoubletick-cli@X.Y.Z. - Replace the runtime
npx -y doubletick-cliinvocation with a lockfile-controlled local installation and execute the installed binary directly. - Commit and enforce a package lockfile containing integrity hashes, using deterministic installation such as
npm ci. - Verify the package publisher, provenance, signatures where available, and npm integrity metadata before approving upgrades.
- Review direct and transitive dependency changes before updating the pinned version.
- Run the MCP server with least privilege in an isolated environment, exposing only the files, environment variables, and credentials required for its declared email-tracking function.
- Avoid automatic installation approval for security-sensitive runtime startup. If dynamic installation remains necessary, require explicit confirmation and validate the resolved package version and integrity before execution.
- Pin
