T08 · Insecure Dependencies
- Location
SKILL.md:14- Finding
Unpinned Third-Party npm Package Installation and Execution
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 14–21; related package declaration at line 4
Vulnerability Type: Unpinned third-party dependency execution
Risk Level: MediumThe skill directs users to install or immediately execute
@playwright/mcpwithout specifying a reviewed version or verifying package integrity.bash npm install -g @playwright/mcp # Or npx @playwright/mcpIt also invokes another unpinned npm executable:
bash npx playwright install chromiumThe metadata similarly declares the dependency without a version constraint:
yaml metadata: {"openclaw":{"emoji":"🎭","os":["linux","darwin","win32"],"requires":{"bins":["playwright-mcp","npx"]},"install":[{"id":"npm-playwright-mcp","kind":"npm","package":"@playwright/mcp","bins":["playwright-mcp"],"label":"Install Playwright MCP"}]}}Technical Analysis
Unversioned
npm installandnpxcommands resolve a mutable package release at execution time rather than a specific artifact reviewed during the skill audit. In particular,npxcan download and immediately execute package code. npm installation can also run package lifecycle scripts, while the documented global installation modifies the user's environment.The project does not supply a lockfile, exact package version, registry restriction, or integrity digest. Consequently, the code executed by a user can differ from the code that existed when the skill was reviewed. No evidence shows that the named packages are currently malicious; the vulnerability is the unsafe supply-chain trust model.
Attack Path
- An attacker compromises the referenced npm package, its maintainer account, its publishing pipeline, or a resolved transitive dependency.
- The attacker publishes a malicious or backdoored release under the package name referenced by the skill.
- A user follows the documented
npm install -g @playwright/mcpornpx @playwright/mcpinstru ...[truncated 936 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin every npm dependency to a reviewed exact version, for example
@playwright/mcp@X.Y.Z, rather than relying on the latest published release. - Install dependencies locally instead of globally to limit environmental modification and make resolution reproducible.
- Commit and enforce a lockfile with npm integrity hashes, and use
npm ciin automated environments. - Invoke only the locally installed binary. If
npxis retained, usenpx --no-installso it cannot download an unexpected package at runtime. - Configure an approved npm registry and validate package provenance, publisher identity, signatures or attestations, and integrity before upgrades.
- Pin and verify browser artifacts installed by Playwright where supported.
- Run the MCP server in a sandbox or container with least-privilege filesystem and network access.
- Establish a controlled dependency-update process that includes release review, vulnerability scanning, and testing before changing pinned versions.
- Pin every npm dependency to a reviewed exact version, for example
