Back to skill

Security audit

Chen Agent Browser

Security checks for vulnerabilities and agentic risk

Overview

This browser automation skill is not clearly malicious, but it exposes powerful live-browser, session, storage, network, and JavaScript controls with limited scoping and safety guidance.

Install only if you trust the agent-browser package and are comfortable giving the agent broad browser-control authority. Prefer pinned reviewed versions, run it in a sandbox or test environment, avoid production accounts unless necessary, treat saved state files as secrets, and require explicit approval before submitting forms, uploading files, changing account settings, intercepting traffic, or running eval.

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:17
Finding

Unpinned Third-Party Dependencies and Mutable Source Revisions

Content
View full analysis

Vulnerability Details

File Location: SKILL.md:17-25; additional occurrence in CONTRIBUTING.md:17-20
Vulnerability Type: T08: Insecure Dependencies
Risk Level: Medium

Vulnerable Code

SKILL.md:17-25:

bash
npm install -g agent-browser
agent-browser install
agent-browser install --with-deps
bash
git clone https://github.com/vercel-labs/agent-browser
cd agent-browser
pnpm install
pnpm build
agent-browser install

CONTRIBUTING.md:17-20:

bash
npm install -g agent-browser@latest

Technical Analysis

The documented npm installation does not pin agent-browser to an exact, reviewed version. The contribution guide explicitly installs the mutable latest release. The alternative source workflow clones the current default branch without pinning a reviewed commit or signed, immutable release tag.

Package installation and build operations can execute npm or pnpm lifecycle scripts with the permissions of the invoking user. Consequently, the effective code executed by these instructions can change after this Skill has been reviewed. Risk may arise from a compromised future package release, repository revision, maintainer account, or transitive dependency.

The global installation command increases the potential scope of filesystem changes, while agent-browser install --with-deps may install additional system dependencies. The reviewed documentation does not direct users to verify release signatures, checksums, package integrity, or a pinned dependency lockfile before execution.

Attack Path

  1. An attacker compromises the upstream npm package, source repository, maintainer credentials, release process, or a transitive dependency.
  2. The attacker publishes malicious code under a newer package version, the latest npm tag, or the repository's default branch.
  3. A user follows the documented npm install -g agent-browser, `npm install -g agent-browser@latest ...[truncated 1151 chars]
Remediation
View remediation

Remediation Suggestions

  1. Pin agent-browser to an exact, reviewed npm version rather than using an unqualified package name or @latest.
  2. Record and verify the expected package integrity digest before installation.
  3. For source installation, check out a reviewed commit hash or cryptographically signed, immutable release tag instead of building the repository's current default branch.
  4. Commit a lockfile and require frozen or immutable lockfile installation so transitive dependency versions cannot drift.
  5. Add documented checksum or signature verification for downloaded browser binaries and other installation artifacts.
  6. Review package lifecycle and build scripts before permitting their execution, and consider disabling lifecycle scripts where compatible with the package.
  7. Run installation with a dedicated, least-privileged account or inside a sandbox or container. Do not use administrative privileges unless a reviewed dependency explicitly requires them.
  8. Explain the additional changes made by agent-browser install --with-deps and require explicit user approval before system-level dependencies are installed.
  9. Establish a controlled update process in which new versions are reviewed, tested, and pinned before the documentation is updated.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Memory PoisoningPersistent Context Injection, Context Window Stuffing, Memory Manipulation
  • Rogue AgentSelf-Modification, Session Persistence
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (10)

Self-Modification

High
Category
Rogue Agent
Confidence
85% confidence
Finding

Skill modifies its own code, configuration, or behavior at runtime. Self-modification enables an agent to escalate privileges, disable safety constraints, or install persistent backdoors.

Content

Scanner excerpt · CONTRIBUTING.md (reported line 60)May include surrounding context.

md
## Adding New Commands to the Skill

Update SKILL.md when the upstream CLI adds new commands.
- Keep the Installation section
- Add new commands in the correct category
- Include usage examples

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The manifest description frames the skill as limited to navigation, clicking, typing, and snapshots, but the body exposes materially broader powers including JavaScript execution, network interception, cookie/storage manipulation, authentication handling, file upload, and session persistence. This mismatch can cause downstream agents or policy systems to under-trust-boundary the skill and invoke it in contexts where those higher-risk capabilities were not expected.

Content

No source excerpt is available for this finding.

Context Window Stuffing

Medium
Category
Memory Poisoning
Confidence
85% confidence
Finding

Skill attempts to fill the context window with filler content, displacing legitimate instructions and safety constraints. This can degrade agent performance or bypass safety boundaries.

Content

Scanner excerpt · SKILL.md (reported line 41)May include surrounding context.

agent-browser open # Navigate to page agent-browser snapshot -i # Get interactive elements with refs agent-browser click @e1 # Click element by ref agent-browser fill @e2 "text" # Fill input by ref agent-browser close # Close browser

text

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The interaction examples show clicking, filling forms, checking boxes, uploads, and other state-changing actions on live sites, but there is no warning that these commands can have real-world side effects such as submitting forms, changing account settings, making purchases, or uploading data. In an autonomous-agent context, omission of that warning increases the chance of unsafe execution against production systems.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

Cookie manipulation, localStorage access, and persisted session state enable the skill to read, modify, and retain authentication material beyond a single browsing action. In an agent setting, this can lead to credential theft, account takeover persistence, cross-task data leakage, or reuse of privileged sessions in unintended contexts.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

Network interception and mock-response features allow the tool to observe, block, and modify browser traffic, which can be used to tamper with application behavior, capture sensitive API data, or falsify test results. Those capabilities exceed simple automation and materially increase abuse potential if an agent is allowed to invoke the skill broadly.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The agent-browser eval command enables arbitrary JavaScript execution inside the browser context, which is substantially more powerful than ordinary browser interaction and can extract secrets from the DOM, alter application state invisibly, or bypass intended interaction constraints. Because this capability is not justified or prominently declared in the manifest, agents may use it without appropriate safeguards or review.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The skill includes examples for logging in and saving/loading authenticated browser state, but it does not warn that credentials and serialized session artifacts are sensitive secrets that can grant account access if leaked. In practice, agents may store auth.json insecurely, reuse it across tasks, or expose it in logs and workspaces.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
93% confidence
Finding

Saving and later loading browser session state preserves authenticated context across runs, which can bypass reauthentication and extend the lifetime of privileged access beyond the original task. In agent environments, persisted sessions are especially risky because workspace files may be accessible to other tasks, users, or logs.

Content

Scanner excerpt · SKILL.md (reported line 236)May include surrounding context.

bash
agent-browser state save auth.json    # Save session state
agent-browser state load auth.json    # Load saved state

Example: Form submission

Session Persistence

Medium
Category
Rogue Agent
Confidence
93% confidence
Finding

The example that reloads a saved authenticated state into a later session normalizes reuse of login artifacts without discussing isolation, expiry, or secure handling. That pattern can facilitate lateral movement between tasks and unauthorized reuse of another user's browser session if the state file is exposed.

Content

Scanner excerpt · SKILL.md (reported line 265)May include surrounding context.

agent-browser wait --url "/dashboard" agent-browser state save auth.json

Later sessions: load saved state

agent-browser state load auth.json agent-browser open https://app.example.com/dashboard

text

Static analysis

No suspicious patterns detected.