Back to skill

Security audit

Aipex Browser

Security checks for vulnerabilities and agentic risk

Overview

This browser-control skill is coherent, but it asks users to install a persistent unpinned MCP bridge with broad access to browser tabs, screenshots, form fields, downloads, and full editor contents.

Install only if you trust the AIPex extension and npm bridge publisher, and prefer pinning a reviewed bridge version instead of using unpinned `npx -y`. Avoid using this skill on sensitive tabs unless needed, confirm before screenshots are sent to an LLM, and do not let it read editors, enter passwords, or save downloads without explicit intent.

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:50
Finding
Unpinned Third-Party npm Package Is Downloaded and Executed Automatically<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 50–59; repeated at lines 71–72, 81, 90–91, 103–104, and 118–119 **Vulnerability Type**: `T08: Insecure Dependencies` **Risk Level**: Medium ### Vulnerable Code ```markdown Add the following to the agent's MCP configuration. No manual installation is needed — `npx` downloads and runs `aipex-mcp-bridge` automatically. ### Cursor (`.cursor/mcp.json`) ```json { "mcpServers": { "aipex-browser": { "command": "npx", "args": ["-y", "aipex-mcp-bridge"] } } } ``` ``` Equivalent unpinned execution is also prescribed for Claude Desktop, Claude Code, VS Code Copilot, Windsurf, and the custom-port configuration. ### Technical Analysis The recommended configuration invokes: ```bash npx -y aipex-mcp-bridge ``` No exact package version, integrity hash, lockfile, or verified artifact is specified. Consequently, `npx` can retrieve and execute whichever package release the npm registry resolves at runtime. The `-y` option suppresses the normal installation confirmation, reducing the opportunity for users to inspect the resolved package and version. This creates a supply-chain trust boundary in which the effective executable can change after the Skill itself has been reviewed. If the npm publisher account, package release process, registry response, or another relevant distribution component is compromised, malicious code could execute under the local account that launches the MCP server. The configuration is intended to remain in an MCP client configuration, so the exposure can recur whenever the MCP server is launched. The audit did not find evidence that the currently referenced package is malicious; the vulnerability is the unsafe, unpinned execution model. ### Attack Path 1. An attacker compromises the npm publisher account, release pipeline, or another component capable of altering the package version resolved for `aipex-mcp-bridge`. 2. The attacker publishes a malicio ...[truncated 1387 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Pin the package to an exact, reviewed version in every configuration: ```json { "command": "npx", "args": ["-y", "aipex-mcp-bridge@1.2.3"] } ``` Replace the example version with a release that has been independently audited. 2. Prefer installing through a lockfile-controlled project using `npm ci`, rather than resolving the package dynamically whenever the MCP server starts. 3. Verify package provenance and integrity through npm provenance attestations, trusted publisher documentation, and recorded artifact hashes where the deployment mechanism supports them. 4. Remove `-y` when interactive confirmation is practical so users can inspect the package name and resolved version before first execution. 5. Use a locally installed, reviewed executable in the MCP configuration instead of allowing `npx` to fetch code at launch time. 6. Run the bridge under a dedicated, least-privileged account or sandbox. Restrict filesystem access, environment variables, network destinations, and browser-extension permissions to those required for browser automation. 7. Establish a controlled upgrade process in which new versions are reviewed, tested, and explicitly approved before changing the pinned version. 8. Apply the corrected configuration consistently to all examples in `SKILL.md`, including Cursor, Claude Desktop, Claude Code, VS Code Copilot, Windsurf, and custom-port variants. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Output HandlingUnvalidated Output Injection, Cross-Context Output, Unbounded Output
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (7)

Rp1

Medium
Category
MCP Rug Pull
Confidence
88% confidence
Finding
The skill declares use of `npx` to fetch and execute an MCP bridge package without pinning a specific version, which creates a supply-chain risk. A future malicious or compromised package release could be pulled automatically and executed locally with the user's privileges when the skill is set up.

Rp1

Medium
Category
MCP Rug Pull
Confidence
98% confidence
Finding
The setup instruction explicitly tells users to run `npx -y aipex-mcp-bridge`, which downloads and executes the latest published package version at runtime. This is dangerous because any compromise of the npm package, publisher account, or dependency chain could lead to arbitrary code execution on the local machine.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The skill instructs use of `capture_screenshot(sendToLLM=true)` but does not clearly warn that page screenshots may be transmitted to the LLM, potentially exposing sensitive on-screen information. In a browser automation context, screenshots can easily contain credentials, personal data, session details, or proprietary content, making the omission materially risky.

Missing User Warnings

Medium
Confidence
88% confidence
Finding
The skill exposes browser-wide enumeration and screenshot capabilities that can access titles, URLs, and visible contents of all open tabs, which may include sensitive personal, corporate, or authentication-related data. In an agent skill context, documenting and normalizing these capabilities without clear privacy boundaries, consent requirements, or data-minimization guidance increases the risk of over-collection and unintended exfiltration.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The form-filling examples include email and password-style values, which can normalize handling of credentials without any caution about secrets management, masking, or user consent. In a browser automation skill, this makes it easier for an agent to solicit, store, or replay sensitive authentication data in unsafe ways.

Unbounded Output

Medium
Category
Output Handling
Content
### `get_editor_value`

Read the full text content of a code editor (Monaco, CodeMirror, ACE) or textarea without truncation. Call before overwriting to avoid data loss.

| Parameter | Type | Required | Description |
|---|---|---|---|
Confidence
86% confidence
Finding
`get_editor_value` is documented to return full editor contents without truncation, which can expose large amounts of sensitive source code, secrets, proprietary text, or embedded credentials from an active browser session. In an MCP/browser-agent setting, unrestricted full-content reads create a direct data-exfiltration channel and can also increase blast radius by bypassing minimization controls.

Missing User Warnings

Low
Confidence
82% confidence
Finding
The skill advertises downloading content and saving data locally but does not warn users that these actions can write files to disk or alter local user data. In a browser-control skill, this can lead to unanticipated persistence of sensitive content, clutter, or overwriting/retention risks, especially when handling extracted web data.

Static analysis

No suspicious patterns detected.