Back to skill

Security audit

browser-mcp

Security checks for vulnerabilities and agentic risk

Overview

This skill is a browser automation helper, but it gives an agent control over a logged-in Chrome session and documents an unsafe remote debugging setup.

Install only if you intentionally want an agent to control a Chrome profile you own and understand that it can see logged-in pages and act with that browser's account privileges. Do not expose Chrome DevTools Protocol directly to a network; use a dedicated automation profile, keep debugging bound to localhost, avoid wildcard origins, and require explicit confirmation before form submission, account changes, purchases, or other state-changing actions.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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)

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:228
Finding
Unauthenticated Chrome DevTools Protocol Exposure Enables Browser Session Takeover<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:228-247` **Vulnerability Type**: Unauthenticated and unencrypted exposure of a privileged browser debugging interface **Risk Level**: High ### Vulnerable Code ```powershell chrome.exe --remote-debugging-port=9222 --remote-allow-origins=* ``` ```text 2. Firewall configuration (allow inbound port 9222) 3. Obtain the LAN IP address of the Windows computer (for example, `192.168.1.100`) ``` ```json "browser": { "profiles": { "user": { "driver": "remote", "cdpUrl": "ws://<your-windows-ip>:9222", "attachOnly": false, "color": "#00AA00" } } } ``` ### Technical Analysis The documented remote setup starts Chrome with a debugging port and the permissive `--remote-allow-origins=*` option, opens TCP port 9222 through the Windows firewall, and connects to the endpoint using an unencrypted `ws://` URL. Chrome DevTools Protocol provides highly privileged control over the browser. Depending on the available targets and Chrome configuration, a connected client can enumerate tabs, inspect page content, execute JavaScript in page contexts, read sensitive information rendered by authenticated applications, and perform browser actions as the logged-in user. The project explicitly describes this browser as the owner's logged-in Chrome session, increasing the sensitivity of the exposed interface. No authentication, encrypted transport, client certificate, tunnel, or source-address restriction is specified. Restricting use to a “trusted network” is only operational guidance and does not establish an access-control boundary. The wildcard origin option also removes an important restriction against untrusted web origins attempting to interact with the debugging service. ### Attack Path 1. A user follows the documented instructions and starts Chrome with remote debugging on port 9222 and wildcard allowed origins. 2. The user permits inbound access to TCP/9222 through the host fi ...[truncated 1447 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. **Do not expose CDP directly to the network** - Keep the debugging endpoint bound to loopback. - Do not create a general inbound firewall rule for TCP/9222. 2. **Use an authenticated encrypted tunnel** - Access the loopback-only endpoint through SSH port forwarding or a properly authenticated VPN. - Restrict VPN or tunnel access to explicitly authorized devices and users. - Apply host firewall rules limiting connections to the tunnel interface and approved source addresses. 3. **Remove wildcard origin access** - Eliminate `--remote-allow-origins=*`. - If an origin exception is unavoidable, permit only the exact trusted origin required by the deployment. 4. **Use a dedicated browser profile** - Do not expose the owner's primary logged-in browser. - Create an isolated automation profile containing only the accounts and data required for the task. - Avoid storing high-value credentials or unrelated authenticated sessions in that profile. 5. **Apply least privilege** - Set `attachOnly: true` where supported and appropriate. - Limit the accessible debugging targets and automation capabilities. - Run the browser under a non-administrative operating-system account. 6. **Protect transport and endpoint access** - Do not use plaintext `ws://` across a network. - Use an authenticated tunnel that provides encryption and server identity verification. - Monitor access attempts and terminate debugging sessions when they are no longer needed. 7. **Update the documentation** - Replace the direct LAN exposure example with a secure loopback-plus-tunnel configuration. - Clearly warn that CDP is a privileged administrative interface and must not be exposed directly to untrusted or shared networks. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • 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 (8)

Vague Triggers

High
Confidence
95% confidence
Finding
The trigger phrases are broad enough to match ordinary browsing requests such as opening sites, searching, or 'click in and take a look,' which can cause this skill to activate in many routine contexts without clear user intent for remote browser automation. In this skill’s context, activation grants control over an attached live Chrome session and can drive navigation, clicks, and form interaction, increasing the risk of unintended actions in a user’s active browser environment.

Vague Triggers

High
Confidence
98% confidence
Finding
The trigger description uses very broad everyday phrases such as opening websites, searching, clicking in, viewing details, and operating webpages. This can cause the skill to activate for ambiguous requests and unexpectedly grant powerful browser-control capabilities, especially dangerous here because the browser session is logged in and can submit forms or navigate sensitive sites.

Missing User Warnings

High
Confidence
97% confidence
Finding
The skill describes remote control of a logged-in browser and form-submission capabilities but does not clearly warn about privacy exposure, account misuse, or unintended state-changing actions. In this context, the omission is dangerous because users may not realize the agent can access authenticated content and perform irreversible actions on their behalf.

Context-Inappropriate Capability

High
Confidence
99% confidence
Finding
The skill explicitly supports attaching to another person's logged-in Chrome session, including remote CDP access over the network. This enables control of an already-authenticated browser context on an external workstation, which can expose private data, perform actions as that user, and bypass normal session-isolation expectations.

Missing User Warnings

Medium
Confidence
92% confidence
Finding
The README advertises remote control of Chrome, element interaction, and form filling, but does not prominently warn users that the skill may operate on an attached existing browser session containing logged-in accounts, cookies, and sensitive data. This omission can lead users to enable the skill without understanding that automated actions may submit forms, alter session state, or expose private information from active tabs.

Natural-Language Policy Violations

Medium
Confidence
83% confidence
Finding
Nearly all operational instructions, examples, and trigger descriptions are presented only in Chinese, with no indication that the skill supports other languages or that Chinese is a justified regional requirement. This creates a natural-language locale restriction without user opt-in.

Natural-Language Policy Violations

Medium
Confidence
87% confidence
Finding
L003 的自然语言描述整体以中文固定呈现技能触发与用途,但未说明这是面向特定中文环境的受限技能,也没有提供语言选择或用户自定义空间。按语言/locale 策略,若技能对语言有隐含强制性,应有明确的用户选择或合理限定。

Context-Inappropriate Capability

Medium
Confidence
93% confidence
Finding
The skill documentation includes host-level operational commands such as restarting the OpenClaw gateway and manually launching Chrome with remote debugging enabled. Those actions exceed ordinary browser automation and can cause the agent or user to alter local system state, broadening the skill's authority and increasing the chance of unsafe execution paths.

Static analysis

No suspicious patterns detected.