T05 · Unauthorized Access and Privilege Escalation
- Location
scripts/dedication_automation.mjs:511- Finding
Undocumented Automation Performs Actions in Authenticated Third-Party Accounts
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The core Browserbase automation is mostly disclosed, but the package also ships an undocumented ChatGPT/Suno automation path and uses high-risk default persistence and installation behavior.
Review before installing. Use this only if you are comfortable with Browserbase cloud sessions holding authenticated browser state, recordings, logs, cookies, downloads, screenshots, and live control URLs. Treat control URLs and cookie output as secrets, isolate workspaces per site or account, disable recording/logging/captcha solving/persistence when not needed, and avoid the undocumented dedication npm script unless you intentionally want it to act in ChatGPT and Suno under your accounts. Install dependencies in a dedicated virtual environment with pinned versions rather than using the built-in system-level installer.
scripts/dedication_automation.mjs:511Undocumented Automation Performs Actions in Authenticated Third-Party Accounts
scripts/requirements.txt:1Unpinned Dependencies Are Automatically Installed into the System Python Environment
scripts/browserbase_manager.py:657Authentication State, Session Recordings, and Logs Are Persisted Remotely by Default
The declared description frames the skill as session management, but the documented behavior goes much further: arbitrary page interaction, authenticated content extraction, JavaScript execution, cookie retrieval, download access, logs, recordings, and live remote control. That mismatch is dangerous because policy engines, reviewers, and users may approve the skill for a narrower purpose while it actually enables extensive authenticated browsing and potential data exfiltration.
Skill manipulates agent memory, state, or stored context. Memory corruption can alter personality, override safety rules, or cause unpredictable behavior.
`POST /v1/contexts` with `{"projectId": "<project-id>"}`
Returns object with `id`.
### Delete Context
`DELETE /v1/contexts/{id}` → 204 No Content (permanent)
### Session Logs
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).
Returns object with `id`.
### Delete Context
`DELETE /v1/contexts/{id}` → 204 No Content (permanent)
### Session Logs
`GET /v1/sessions/{id}/logs` → Array of log entries (timestamps, methods, params)
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
value = os.environ.get(name)
if not value:
output_error(f"Environment variable {name} is not set. "
f"Set it or configure via OpenClaw's skills.entries[\"browserbase-sessions\"].env "
f"(and you can use skills.entries[\"browserbase-sessions\"].apiKey for BROWSERBASE_API_KEY).")
sys.exit(1)
return value
Skill manipulates agent memory, state, or stored context. Memory corruption can alter personality, override safety rules, or cause unpredictable behavior.
})
except urllib.error.HTTPError as e:
body = e.read().decode() if e.fp else ""
output_error(f"Failed to delete context (HTTP {e.code}): {body}")
sys.exit(1)
except Exception as e:
output_error(f"Failed to delete context: {e}")
Skill manipulates agent memory, state, or stored context. Memory corruption can alter personality, override safety rules, or cause unpredictable behavior.
})
except urllib.error.HTTPError as e:
body = e.read().decode() if e.fp else ""
output_error(f"Failed to delete context (HTTP {e.code}): {body}")
sys.exit(1)
except Exception as e:
output_error(f"Failed to delete context: {e}")
The script materially exceeds the stated skill purpose of creating/managing Browserbase sessions by automating logged-in ChatGPT and Suno workflows to generate content. In an agent-skill context, this is dangerous because it uses persisted authenticated browser contexts to act in third-party services, increasing the chance of unauthorized actions, account misuse, and unexpected charges under the user's identity.
Session persistence is an intended feature here, but in this skill context it materially increases risk because it preserves authenticated state across runs and potentially across users or tasks. That is not inherently malicious, yet without strong safeguards and warnings it can expose long-lived authenticated sessions, enabling unauthorized reuse if workspace data or context identifiers are mishandled.
This skill gives the OpenClaw agent the ability to:
- **Create cloud browser sessions** via Browserbase's infrastructure
- **Persist authentication** across sessions using Contexts (cookies, local storage,
session storage are saved and restored automatically)
- **Use workspaces for persistence** — a workspace ties together a Context + active session id
The README describes persistence of cookies, local storage, and session storage across sessions without warning that these artifacts may contain authentication tokens and other sensitive account data. Because the skill is specifically designed to maintain logged-in browser state, insufficient guidance increases the risk of credential theft, cross-user leakage, or insecure retention of secrets.
The README promotes automatic CAPTCHA solving and session recording as enabled by default, but does not clearly warn users about compliance, privacy, or consent requirements. In a browser automation skill that may access third-party accounts and protected flows, this can lead to unauthorized circumvention of access controls or recording of sensitive user activity without adequate notice.
The skill exposes powerful capabilities including shell, network, file read/write, environment access, and browser automation, but it does not declare any explicit tool scope or allowed-tools restrictions. In practice, this means an agent may invoke broad system and network actions under the guise of browser session management, increasing the chance of unintended command execution, data access, or exfiltration beyond the user's expectations.
The skill is explicitly designed to persist authenticated browser state across interactions, including cookies, storage, tabs, and workspace state. While that is a legitimate feature, it materially increases security risk because stolen local workspace files, reused contexts, or overbroad agent actions can access already-authenticated sessions and sensitive account data without requiring fresh login.
---
name: browserbase-sessions
description: Create and manage persistent Browserbase cloud browser sessions with authentication persistence. Use when you need to automate browsers, maintain logged-in sessions across interactions, scrape authenticated pages, or manage cloud browser instances.
license: MIT
homepage: https://docs.browserbase.com
metadata: {"author":"custom","version":"2.5.0","openclaw":{"emoji":"🌐","requires":{"bins":["python3"]},"primaryEnv":"BROWSERBASE_API_KEY"}}
The reference explicitly documents session recording, logs, downloads, and persistent browser contexts, all of which can contain cookies, authentication tokens, personal data, and sensitive page contents. In a skill whose purpose is to maintain logged-in browser sessions, omitting clear privacy, retention, and consent warnings increases the chance that operators will unintentionally capture and persist sensitive authenticated data.
Persistent contexts and workspaces intentionally preserve authentication state across sessions, including cookies and storage. In this skill's context that is core functionality, but it is still security-relevant because compromise of the local state, remote context, or associated sharing/export features can expose long-lived authenticated access.
install Install Python deps + Playwright Chromium (best-effort)
setup Validate credentials and run a smoke test
list-projects List accessible Browserbase projects (helps find Project ID)
create-context Create a new persistent context
delete-context Delete a context
list-contexts List locally saved named contexts
create-workspace Create a named workspace (context + tab history)
The skill advertises session management but actually exposes broad browser automation, page reading, cookie access, downloads, screenshots, recordings, and JS execution. That capability expansion increases the blast radius substantially because an agent granted this skill can interact with authenticated sites and extract sensitive content well beyond simple session lifecycle management.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
# ---------------------------------------------------------------------------
_WORKSPACE_NAME_RE = re.compile(r"^[a-zA-Z0-9][a-zA-Z0-9_-]{0,63}$")
_BROWSERBASE_API_BASE = "https://api.browserbase.com/v1"
def _utc_now_iso() -> str:
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
# ---------------------------------------------------------------------------
_WORKSPACE_NAME_RE = re.compile(r"^[a-zA-Z0-9][a-zA-Z0-9_-]{0,63}$")
_BROWSERBASE_API_BASE = "https://api.browserbase.com/v1"
def _utc_now_iso() -> str:
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
# ---------------------------------------------------------------------------
_WORKSPACE_NAME_RE = re.compile(r"^[a-zA-Z0-9][a-zA-Z0-9_-]{0,63}$")
_BROWSERBASE_API_BASE = "https://api.browserbase.com/v1"
def _utc_now_iso() -> str:
subprocess module calls execute external commands. Without careful input validation, this enables command injection.
def _run_subprocess(argv: list[str]) -> tuple[bool, dict[str, Any]]:
"""Run a subprocess and return (ok, info)."""
try:
cp = subprocess.run(argv, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, check=True)
return True, {
"returncode": cp.returncode,
"stdout": _truncate_output(cp.stdout),
The built-in messaging explicitly encourages sharing a live browser control link with the user, which can expose authenticated state and sensitive page data to whoever receives that URL. In the context of persistent authenticated sessions, this materially increases the chance of inadvertent session exposure or unauthorized remote control.
The execute-js command permits arbitrary JavaScript execution in the context of authenticated pages. That enables direct access to DOM content, tokens visible to page scripts, local/session storage, and arbitrary in-page actions, making the skill much more powerful and dangerous than its stated session-management purpose suggests.
The get-cookies command returns all cookies from the browser context, which can include session and authentication cookies for logged-in sites. In a skill specifically designed to maintain persistent authenticated browser sessions, this is highly sensitive because cookie disclosure can enable session hijacking or downstream credential abuse.
Session recordings can capture page content, user interactions, secrets typed into pages, and authenticated activity, and this command writes that data directly to disk. Persisting such material locally without strong warnings, retention limits, or access controls raises the risk of accidental disclosure and sensitive-data sprawl.
The suggested user message automates passing through free-form human instructions together with a live control link, normalizing the exposure of direct session access in plain language. This reduces friction for unsafe sharing and can lead agents or operators to disclose access to authenticated browser sessions without adequate review.
The file contains extensive application-specific logic for prompting ChatGPT, parsing responses, detecting Suno UI state, filling forms, and initiating song creation. That hidden task-specific automation is risky in a session-management skill because users may grant browser/session access expecting infrastructure help, while the code performs unrelated authenticated actions on external services.
No suspicious patterns detected.