T08 · Insecure Dependencies
- Location
SKILL.md:14- Finding
Unpinned npm packages are installed and executed without integrity verification
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:4,SKILL.md:14-21, andSKILL.md:24-32
Vulnerability Type: Supply-chain exposure through unpinned third-party dependencies
Risk Level: MediumVulnerable Code
SKILL.md:4: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"}]}}SKILL.md:14-21:bash npm install -g @playwright/mcp # Or npx @playwright/mcpbash npx playwright install chromiumSKILL.md:24-32:bash # Start MCP Server (STDIO mode) npx @playwright/mcpbash # Headless mode npx @playwright/mcp --headless # Specific browser npx @playwright/mcp --browser firefoxTechnical Analysis
The documented installation and execution commands do not pin
@playwright/mcporplaywrightto exact, previously reviewed versions. The metadata also identifies@playwright/mcpwithout a version constraint. No lockfile or integrity hash is included in the project.Consequently, package resolution depends on mutable npm registry state at the time a user follows the instructions. In particular,
npxmay download and execute a package that is not already installed locally. Package installation can also run lifecycle scripts unless separately disabled. A compromised package release, dependency, publisher account, or registry response could therefore introduce code that was not present during this audit.The issue is supply-chain exposure rather than evidence that the currently published Playwright package is malicious.
Attack Path
- An attacker compromises the publisher account, package release process, transitive dependency, or relevant registry delivery path.
- The attacker publishes or serves a malicious version under a pa ...[truncated 1159 chars]
- Remediation
View remediation
Remediation Suggestions
-
Pin every executable package to an exact reviewed version, for example:
bash npm install -g @playwright/mcp@<reviewed-exact-version> npx --yes @playwright/mcp@<reviewed-exact-version> npx --yes playwright@<reviewed-exact-version> install chromium -
Add the exact version to the skill installation metadata rather than relying on the registry's current default release.
-
Prefer a project-local installation governed by a committed lockfile containing npm integrity hashes. Use deterministic installation commands such as
npm ci. -
Verify package publisher identity, release provenance, signatures or attestations, and integrity before updating the pinned version.
-
Review transitive dependency changes before accepting upgrades. Use automated dependency and vulnerability scanning as an additional control.
-
Disable lifecycle scripts during installation where operationally practical, then explicitly permit only reviewed setup steps:
bash npm ci --ignore-scripts -
Avoid running global npm installation commands with administrator or root privileges. Execute the MCP server under a dedicated, least-privileged account or sandbox with restricted filesystem and network access.
-
Replace repeated registry-resolving
npxcommands with execution of the verified, locally installed binary.
-
