Back to skill

Security audit

browser-automation

Security checks for vulnerabilities and agentic risk

Overview

This browser automation skill is mostly coherent, but it can route sensitive browser actions and entered credentials through an external AI service while also keeping browser state and captured artifacts on disk.

Review carefully before installing. Avoid using this skill on real accounts, internal sites, regulated data, payment flows, or secrets unless you are comfortable with browser activity and prompts being processed by SkillBoss API Hub and with screenshots, downloads, cached analysis, cookies, and profile data persisting locally. Prefer a fresh isolated profile and do not put passwords or tokens directly into natural-language act prompts.

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
EXAMPLES.md:109
Finding
Credentials May Be Disclosed Through Third-Party AI-Processed Browser Actions## Vulnerability Details **File Location**: `EXAMPLES.md:109-117` **Supporting Locations**: `REFERENCE.md:82-88`, `REFERENCE.md:341-348` **Vulnerability Type**: Sensitive data exposure through an external AI service **Risk Level**: High ### Vulnerable Code Snippets `EXAMPLES.md:109-117`: ```bash 2. **Act**: Fill in username: ```bash browser act "Fill in the username field with 'myusername'" ``` 3. **Act**: Fill in password: ```bash browser act "Fill in the password field with 'mypassword'" ``` ``` `REFERENCE.md:82-88`: ```markdown **Implementation Details**: - Uses Stagehand's `page.act()` which leverages SkillBoss API Hub (auto-routed) - AI model interprets natural language and executes corresponding browser actions ``` `REFERENCE.md:341-348`: ```typescript new Stagehand({ env: "LOCAL", verbose: 0, enableCaching: true, model: "skillboss/auto", // routed via SkillBoss API Hub (https://api.heybossai.com/v1/pilot) localBrowserLaunchOptions: { cdpUrl: wsUrl, }, }) ``` ### Technical Analysis The documented login workflow places the password directly inside the natural-language argument passed to `browser act`. The reference states that `page.act()` uses an auto-routed SkillBoss API Hub AI model and identifies the external endpoint as `https://api.heybossai.com/v1/pilot`. Consequently, a real password entered according to the documented workflow may become part of a request sent to a third-party AI service. Running Chrome locally does not necessarily keep action instructions local: the browser environment is configured as `LOCAL`, while interpretation of the action is separately routed through the external model. The documentation does not describe a local selector-based secret-entry mechanism, sensitive-value redaction, explicit consent before external transmission, or the external provider's logging and retention behavior. The audited package ...[truncated 1493 chars]
Remediation
## Remediation Suggestions 1. Prohibit passwords, tokens, recovery codes, and similar secrets in natural-language `browser act` prompts. 2. Add a local-only secret-entry command that accepts a selector and reads the value through a protected channel, such as standard input without echo or an approved secret manager. 3. Ensure secret values are injected directly into the local Playwright/CDP operation and are never included in model prompts, logs, screenshots, caches, exceptions, or telemetry. 4. Implement automatic sensitive-field detection and reject AI-mediated actions containing plaintext values for password, token, or payment fields. 5. Clearly notify users when page content or action instructions will be sent to an external AI provider, and require explicit consent before transmission. 6. Document the provider endpoint, data retention policy, logging behavior, subprocessors, encryption controls, and deletion process. 7. Add automated tests using sentinel secrets to verify that outbound AI requests, application logs, and cached artifacts never contain sensitive values. 8. Replace the password example with a secure workflow, for example: ```bash browser type-secret --selector 'input[type="password"]' ``` The command should prompt locally for the value and inject it without sending the value to an AI model. 9. Avoid capturing screenshots immediately after secret entry unless password masking is verified, and disable model-analysis caching for authentication workflows.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (12)

Credential Access

High
Category
Privilege Escalation
Content
"apiKey": {
      "required": true,
      "configured": false,
      "description": "SKILLBOSS_API_KEY exported (i.e $SKILLBOSS_API_KEY) or in .env file"
    },
    "browserCommand": {
      "required": true,
Confidence
60% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Credential Access

High
Category
Privilege Escalation
Content
"apiKey": {
      "required": true,
      "configured": false,
      "description": "SKILLBOSS_API_KEY exported (i.e $SKILLBOSS_API_KEY) or in .env file"
    },
    "browserCommand": {
      "required": true,
Confidence
60% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Credential Access

High
Category
Privilege Escalation
Content
"apiKey": {
      "required": true,
      "configured": false,
      "description": "SKILLBOSS_API_KEY exported (i.e $SKILLBOSS_API_KEY) or in .env file"
    },
    "browserCommand": {
      "required": true,
Confidence
60% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Missing User Warnings

Medium
Confidence
90% confidence
Finding
The authenticated login example normalizes entering credentials into a browser session while noting that Chrome's persistent profile may preserve session cookies between runs. Without an explicit warning about credential handling, session reuse, and cross-task privacy leakage, users may unknowingly expose authenticated state or sensitive account data to later runs or other tasks.

Missing User Warnings

Medium
Confidence
84% confidence
Finding
The documentation says screenshots are automatically taken after navigation and actions, but it does not clearly foreground that page contents will be persistently captured to disk. In browser automation, screenshots can contain credentials, personal data, session details, or internal application content, creating an avoidable data retention and exposure risk.

External Transmission

Medium
Category
Data Exfiltration
Content
env: "LOCAL",
  verbose: 0,
  enableCaching: true,
  model: "skillboss/auto",  // routed via SkillBoss API Hub (https://api.heybossai.com/v1/pilot)
  localBrowserLaunchOptions: {
    cdpUrl: wsUrl,
  },
Confidence
91% confidence
Finding
The configuration documents that AI-driven browser actions are routed through an external service endpoint, which implies page context, prompts, and possibly sensitive browser-derived data may be transmitted off-host. In a local browser automation tool with persistent profiles and access to internal pages, this external transmission materially increases confidentiality risk if users are not clearly informed and protected.

Missing User Warnings

Medium
Confidence
87% confidence
Finding
The reference explicitly states that downloads start automatically and are saved to a local directory, but it does not present a strong user-facing warning about this behavior or the risks of silently persisting untrusted files. In a browser automation context, automatic downloads can be triggered by visited pages and may lead to storage of malicious or sensitive files without clear operator awareness.

External Transmission

Medium
Category
Data Exfiltration
Content
## Version Information

- **Stagehand**: Uses `@browserbasehq/stagehand` package v2.5.2+
- **Model**: SkillBoss API Hub (auto-routed via https://api.heybossai.com/v1/pilot) for browser actions
- **CLI Tool**: TypeScript CLI in `src/cli.ts`
- **Agent SDK**: SkillBoss API Hub SDK for conversation framework
- **Browser**: Local Chrome/Chromium installation
Confidence
89% confidence
Finding
The version information reiterates that the model is auto-routed via an external API, confirming remote processing as part of normal operation. Because the tool also has full network access, persistent browser state, and can access localhost/internal resources, this makes external data exposure more dangerous in practice than a generic SaaS mention.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The description advertises form filling, button clicking, and interaction with web applications without warning that these actions can submit sensitive information, trigger purchases, change account settings, or otherwise cause real external side effects. In an automation skill, omission of this warning increases the chance of unintended high-impact actions by users or downstream agents.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The skill auto-selects a remote browser backend when an API key is present, but it does not warn the user that browsing actions, page contents, form data, screenshots, or extracted data may be transmitted to an external service. This creates a meaningful privacy and data-handling risk because users may believe all browsing stays local when it may instead leave the host environment without explicit consent.

Missing User Warnings

Low
Confidence
93% confidence
Finding
The download example states that files are automatically written to a local directory, but it does not clearly warn users that visiting a file URL causes a disk write. This can lead to unexpected storage of untrusted content, accumulation of sensitive files, or confusion about where artifacts are saved.

Vague Triggers

Low
Confidence
86% confidence
Finding
Because this is a JSON manifest file, vague-trigger review applies. The setupInstructions and verifySetup fields describe commands like 'Run: npm install', 'Run: npm link', and 'Run browser navigate https://example.com' without clarifying the required working directory, repository context, or when these commands should not be used, making the activation scope of the setup process somewhat ambiguous.

Static analysis

No suspicious patterns detected.