Back to skill

Security audit

Web Tester

Security checks for vulnerabilities and agentic risk

Overview

This is a coherent web UI testing skill, but users should run its browser automation and package-install examples only in controlled test environments.

Before installing or using this skill, pin Playwright/Selenium-related dependencies or run them from a lockfile-managed project, use test accounts and staging URLs by default, and treat screenshots/reports as potentially sensitive artifacts that should not be committed or stored in shared locations unnecessarily.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:44
Finding

Unpinned Third-Party Dependencies Are Downloaded and Executed

Content
View full analysis

Vulnerability Details

File Location: SKILL.md:44, SKILL.md:106, SKILL.md:192, and SKILL.md:253
Vulnerability Type: Supply-chain risk caused by unpinned package retrieval and execution
Risk Level: Medium

Vulnerable Code

SKILL.md:44:

bash
npx -y playwright@latest test --browser=chromium -g "test name"

SKILL.md:106:

bash
npx playwright install chromium

SKILL.md:192:

javascript
// npm install @axe-core/playwright

SKILL.md:253:

text
Install: `pip install selenium webdriver-manager`

Technical Analysis

The documented setup commands retrieve third-party packages without pinning them to reviewed, exact versions or verifying their integrity. In particular, npx -y playwright@latest downloads and executes the package currently associated with the mutable latest tag while automatically approving installation.

The npm and pip installation examples similarly omit exact versions, hashes, lockfiles, and provenance verification. Consequently, the code that users execute can change after this skill has been reviewed. Package lifecycle hooks, package runtime code, and transitive dependencies may execute with the permissions of the user running the command.

This does not establish that the named packages are malicious. The vulnerability is the unsafe dependency-consumption pattern, which creates exposure if a package release, maintainer account, registry, or transitive dependency is compromised.

Attack Path

  1. An attacker compromises a referenced package, one of its transitive dependencies, a maintainer account, or the relevant package-distribution channel.
  2. The attacker publishes a malicious release or causes a malicious version to be selected by the mutable version resolution.
  3. A user or agent follows the instructions in SKILL.md, such as running npx -y playwright@latest or an unpinned pip install.
  4. The package manager down ...[truncated 1274 chars]
Remediation
View remediation

Remediation Suggestions

  1. Replace mutable tags such as @latest with exact, reviewed package versions.
  2. Declare npm dependencies in package.json and commit a trusted lockfile, such as package-lock.json.
  3. Use deterministic installation commands such as npm ci rather than dynamically resolving dependencies during skill execution.
  4. Execute locally installed tools with npx --no-install so that invocation fails rather than downloading an unexpected package.
  5. Pin Python dependencies to exact versions and, where practical, enforce package hashes with pip install --require-hashes -r requirements.txt.
  6. Review and update pinned versions through a controlled dependency-update process that includes vulnerability scanning and testing.
  7. Verify package provenance, registry configuration, and integrity metadata before installation.
  8. Run browser automation and package installation inside a disposable, least-privilege container or sandbox.
  9. Do not expose unrelated repository credentials, production secrets, or host directories to the dependency installation environment.
  10. Consider disabling or restricting package lifecycle scripts where compatible with the selected dependencies.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (12)

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

MCP server references in the skill manifest without version pinning are a rug-pull risk.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding

The command uses npx -y playwright@latest, which fetches and executes the latest package version at runtime. This creates a supply-chain risk because future malicious or compromised releases would be automatically trusted and executed by users of the skill.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The generated test scripts demonstrate live form submission and authentication flows but do not warn that running them may mutate state in production-like environments. In browser automation, this can trigger account actions, data creation, or unintended transactions if users point tests at live systems.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
90% confidence
Finding

npx playwright install chromium runs an unpinned package from the registry if Playwright is not already installed locally. That means the skill can cause execution of whatever version resolves at the time, exposing users to dependency or publisher compromise.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
90% confidence
Finding

This test execution command relies on npx playwright without a fixed version, allowing runtime resolution of the package. If the registry package or dependency chain is compromised, users may execute attacker-controlled code when following the skill instructions.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
90% confidence
Finding

Running npx playwright --headed without version pinning can fetch and execute a mutable remote package version. In an automation skill, users are likely to copy-paste commands directly, increasing practical exploitability of a supply-chain attack.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
90% confidence
Finding

This specific test-selection command still depends on an unpinned npx playwright package. The issue is not the test filter but the implicit trust in the latest resolved package version at execution time.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
90% confidence
Finding

Generating an HTML report through npx playwright has the same supply-chain exposure as the other commands. Because this skill is operational documentation, users may run it in CI or on developer workstations where code execution impact is meaningful.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
84% confidence
Finding

npx playwright show-report is also unpinned, though it is somewhat less impactful than install or test commands because it is typically used after Playwright is already present. Even so, it still permits mutable package resolution and should be treated consistently.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
88% confidence
Finding

The installation guidance npx playwright install is unpinned and can resolve to a changing remote package. In a skill meant for browser automation setup, this is a realistic path to unintended execution of compromised package code.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
87% confidence
Finding

The quick-start examples take screenshots and write files to /tmp without warning users that artifacts will be created on disk. While not inherently malicious, silent file creation can expose sensitive UI contents or credentials captured during testing, especially on shared CI runners or developer systems.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.