Back to skill

Security audit

m5stack-chrome-browser-control

Security checks for vulnerabilities and agentic risk

Overview

This skill openly provides powerful local Chrome control, but it is broad enough to expose logged-in browser sessions and relies on an unpinned package install.

Install only if you intentionally want OpenClaw to control your local Chrome session. Prefer a dedicated Chrome profile with only the accounts needed for the task, avoid exposing personal or administrative tabs, pin and review the MCP package version instead of using `@latest`, and turn off remote debugging when finished.

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

Error
Location
SKILL.md:35
Finding
Unpinned Third-Party Package Executed with Access to Authenticated Browser Sessions## Vulnerability Details **File Location**: `SKILL.md`, lines 35–41 **Vulnerability Type**: Insecure third-party dependency execution **Risk Level**: High ```json "command": "npx", "args": [ "chrome-devtools-mcp@latest", "--autoConnect" ] ``` ### Technical Analysis The configuration instructs `npx` to execute `chrome-devtools-mcp@latest`. The mutable `latest` tag does not identify a fixed, previously reviewed artifact. A future invocation can therefore download and execute a package version whose contents differ from the version originally audited. The configuration provides no exact version pin, lockfile, integrity hash, or other package-verification mechanism. This creates a supply-chain exposure: compromise of the package, its publisher account, or its release process could cause attacker-controlled code to execute under the user's account. The package is especially sensitive because `--autoConnect` connects it to the local Chrome DevTools endpoint. As documented elsewhere in the Skill, this interface can enumerate and control tabs, read page contents and Outlook messages, fill fields, click controls, and capture screenshots. The dependency consequently operates across a high-trust boundary involving authenticated browser sessions. ### Attack Path 1. An attacker compromises the package publisher, package registry entry, or release process for `chrome-devtools-mcp`, or causes an unsafe release to become the package's `latest` version. 2. The user installs or restarts the configured OpenClaw gateway. 3. `npx` resolves `chrome-devtools-mcp@latest`, downloads the altered release, and executes it with the user's operating-system privileges. 4. The process automatically connects to Chrome's local remote-debugging endpoint at `127.0.0.1:9222`. 5. The malicious process enumerates open tabs and accesses authenticated browser contexts. 6. It can read sensitive page content, capture screenshots, manipulate web applications, or transmit accessible data using ...[truncated 916 chars]
Remediation
## Remediation Suggestions 1. Replace `chrome-devtools-mcp@latest` with an exact, reviewed version; do not use mutable tags or version ranges. 2. Use a lockfile and a deterministic installation process where supported. 3. Verify package provenance, publisher identity, release signatures, and registry integrity metadata before installation and upgrades. 4. Cache or vendor a reviewed artifact and validate its cryptographic hash before execution. 5. Establish a controlled update process in which new versions are reviewed and tested before deployment. 6. Run the MCP server under a dedicated, least-privileged operating-system account or sandbox with restricted filesystem and network access. 7. Use a dedicated Chrome profile containing only the sessions required for the requested task. Do not expose unrelated personal, administrative, financial, or corporate sessions through the debugging endpoint. 8. Enable remote debugging only while actively required, bind it exclusively to localhost, and disable it after use. 9. Limit the MCP server's available browser targets and capabilities where technically possible, and monitor package and browser-control activity for unexpected access.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • 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
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (3)

Missing User Warnings

High
Confidence
98% confidence
Finding
The skill explicitly enables control of the user's local Chrome session and access to arbitrary Outlook mailboxes and browser pages, which can expose email contents, tokens, and other private data from already-authenticated sessions. In this context, the absence of an explicit privacy warning and consent boundary is particularly dangerous because the skill relies on remote debugging and can operate across any open tab the user has logged into.

Vague Triggers

Medium
Confidence
94% confidence
Finding
The trigger scope is broad enough to match routine browser-related requests, yet the skill grants powerful local-browser automation via DevTools. This increases the chance the skill is invoked in situations where the user did not clearly intend to authorize access to tabs, authenticated sessions, or sensitive web content.

Natural-Language Policy Violations

Low
Confidence
86% confidence
Finding
All user-facing natural-language content in the skill is written only in Chinese, with no indication that the user can choose another language or locale. Under the stated policy, forcing a specific language without opt-in is a language/locale policy violation unless clearly justified as region-specific, which is not documented here.

Static analysis

No suspicious patterns detected.