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

Content
View full analysis

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
View 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
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

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

md
"apiKey": {
      "required": true,
      "configured": false,
      "description": "SKILLBOSS_API_KEY exported (i.e $SKILLBOSS_API_KEY) or in .env file"
    },
    "browserCommand": {
      "required": true,

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · setup.json (reported line 17)May include surrounding context.

json
"apiKey": {
      "required": true,
      "configured": false,
      "description": "SKILLBOSS_API_KEY exported (i.e $SKILLBOSS_API_KEY) or in .env file"
    },
    "browserCommand": {
      "required": true,

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · setup.json (reported line 29)May include surrounding context.

json
"apiKey": {
      "required": true,
      "configured": false,
      "description": "SKILLBOSS_API_KEY exported (i.e $SKILLBOSS_API_KEY) or in .env file"
    },
    "browserCommand": {
      "required": true,

Missing User Warnings

Medium
Category
Not specified by scanner
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.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
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.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
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.

Content

Scanner excerpt · REFERENCE.md (reported line 347)May include surrounding context.

md
env: "LOCAL",
  verbose: 0,
  enableCaching: true,
  model: "skillboss/auto",  // routed via SkillBoss API Hub (https://api.heybossai.com/v1/pilot)
  localBrowserLaunchOptions: {
    cdpUrl: wsUrl,
  },

Missing User Warnings

Medium
Category
Not specified by scanner
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.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
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.

Content

Scanner excerpt · REFERENCE.md (reported line 530)May include surrounding context.

md
## 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

Missing User Warnings

Medium
Category
Not specified by scanner
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.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
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.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
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.

Content

No source excerpt is available for this finding.

Vague Triggers

Low
Category
Not specified by scanner
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.

Content

No source excerpt is available for this finding.