browse

SAFE max severity MEDIUMSkillSpector Do not install 77 registry clawhub.ai last scanned 1 scan

Verdict safe, but 7 findings (4 medium, 3 low), mainly command injection, data exfiltration, policy violation. Most recent scan 2026-02-05.

The skill provides legitimate browser automation functionality using the Stagehand CLI and Browserbase platform, but contains several MEDIUM severity security concerns. Primary issues include: (1) credential management practices that create multiple copies of API keys across the filesystem without security guidance, (2) demonstration of arbitrary JavaScript execution via page.evaluate() without injection warnings, and (3) dependency management recommendations using version ranges that allow automatic updates, creating supply chain risk. The skill also has documentation issues including missing referenced files and truncated content. While the core functionality appears legitimate, the security guidance is insufficient for a skill that handles credentials and executes code in browser contexts. Users following this skill could inadvertently create insecure automation functions.

Scanner's overall assessment (LLM analyzer)

Second scanner: NVIDIA SkillSpector

The two scanners disagree: Cisco found nothing and SkillSpector says do not install. One of them has a blind spot here; read the skill before trusting either. How the two scanners compare across the whole corpus: Two scanners, one corpus.

What this skill does

Complete guide for creating and deploying browser automation functions using the stagehand CLI

Package
7 files, 43 KB
SKILL.md
1352 words, 12+ sections
Code
None. Instructions only.
Requires
bins: stagehand; env: BROWSERBASE_API_KEY BROWSERBASE_PROJECT_ID
Homepage
https://browserbase.com

SKILL.md covers: Browser Automation & Functions Skill · When to Use · Prerequisites · Set Up Credentials · Complete Workflow · Step 1: Explore the Site Interactively · Step 2: Initialize Function Project · Step 3: ⚠️ FIX package.json IMMEDIATELY · Step 4: Write Automation Code · Step 5: Test Locally · Step 6: Deploy to Browserbase · or: stagehand fn publish index.ts

Findings

MEDIUM CODE EXECUTION detected by YARA Command Injectionstatic

Detects dangerous code execution patterns in agent skills (Python/Bash): eval(selector, els => els.map(el => el.textContent)

SKILL.md:246

const data = await page.$$eval(selector, els =>
Remediation: Review and remove code execution pattern
MEDIUM Hardcoded API Credentials in Environment Configuration Data Exfiltrationllm

The skill requires BROWSERBASE_API_KEY and BROWSERBASE_PROJECT_ID environment variables and instructs users to run 'stagehand fn auth login' which stores credentials in ~/.stagehand/config.json. The workflow then copies these credentials to .env files in project directories. This creates multiple copies of sensitive credentials across the filesystem, increasing exposure risk. Additionally, the skill does not provide guidance on securing these credentials or cleaning them up after use.

SKILL.md

```yaml
requires:
  env: ['BROWSERBASE_API_KEY', 'BROWSERBASE_PROJECT_ID']
```

```bash
stagehand fn auth login   # Stores in ~/.stagehand/config.json
# Later copied to .env files in each project
```
Remediation: 1. Add explicit warnings about credential security 2. Recommend using credential managers or secure vaults 3. Provide cleanup instructions for removing .env files 4. Suggest using environment-specific credential injection rather than file-based storage 5. Add .env to .gitignore examples
MEDIUM Arbitrary JavaScript Execution via page.evaluate() Command Injectionllm

The skill demonstrates using page.evaluate() to execute arbitrary JavaScript in the browser context without input validation or sandboxing guidance. The example shows 'Complex extraction logic' as a placeholder, which could lead users to implement unsafe code execution patterns. Combined with user-controlled parameters (params object), this creates a code injection risk if users pass unsanitized input directly into evaluate() calls.

SKILL.md

```typescript
const data = await page.evaluate(() => {
  // Complex extraction logic
  r
```

The code snippet is incomplete but demonstrates evaluate() usage without security guidance. Users may implement: `page.evaluate(params.userCode)` leading to arbitrary code execution.
Remediation: 1. Add explicit warnings about code injection risks in page.evaluate() 2. Provide examples of input validation and sanitization 3. Recommend using page.locator() and other safe APIs instead of evaluate() where possible 4. Show how to safely pass parameters to evaluate() using serializable data only 5. Warn against executing user-provided code strings
MEDIUM Dependency Version Unpinning Recommendation Creates Supply Chain Risk Unauthorized Tool Usellm

The skill explicitly instructs users to change dependency versions from 'latest' to caret ranges (^0.0.5, ^1.58.0) in the package.json fix. While this is better than 'latest', caret ranges still allow automatic minor/patch updates that could introduce malicious code or breaking changes. For security-critical browser automation with credential access, this creates supply chain attack surface. The skill also references '@browserbasehq/sdk-functions' version ^0.0.5 which is a pre-1.0 package with unstable API guarantees.

SKILL.md

```json
"dependencies": {
  "@browserbasehq/sdk-functions": "^0.0.5",
  "playwright-core": "^1.58.0"
}
```

Caret (^) allows: 0.0.5 → 0.0.x updates, 1.58.0 → 1.x.x updates. Pre-1.0 versions are particularly unstable.
Remediation: 1. Recommend exact version pinning for security-critical dependencies: '0.0.5' not '^0.0.5' 2. Add guidance on using lock files (pnpm-lock.yaml) and committing them 3. Suggest regular security audits: 'pnpm audit' 4. Warn about pre-1.0 package instability 5. Recommend reviewing changelogs before updating dependencies
LOW Skill does not specify a license Policy Violationstatic

Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms.

SKILL.md

Remediation: Add 'license' field to SKILL.md frontmatter (e.g., MIT, Apache-2.0)
LOW Missing allowed-tools Declaration Data Exfiltrationllm

The skill does not declare an 'allowed-tools' field in the YAML manifest, making it unclear which agent capabilities are required or safe to use. While this field is optional per the agent skills specification, its absence reduces transparency about the skill's intended tool usage, particularly given that the skill involves external binary execution (stagehand CLI) and credential management.

SKILL.md

YAML manifest shows:
- allowed-tools: Not specified

But skill uses: Bash commands (stagehand CLI), file operations (.env, package.json), external binary execution
Remediation: Add allowed-tools declaration to manifest: ```yaml allowed-tools: [Bash, Read, Write] ``` This documents that the skill requires shell command execution and file system access.
LOW Missing Referenced Files Without Explanation Social Engineeringllm

The skill references four Python files (a.py, generated.py, invocation.py, page.py) that are not found in the package. The instruction body appears to be truncated (ends with 'r' mid-word), suggesting incomplete documentation. While not directly malicious, this creates confusion about the skill's completeness and may indicate packaging errors or missing components.

SKILL.md

Referenced files not found:
- a.py
- generated.py
- invocation.py
- page.py

Instruction body truncated at: '// Complex extraction logic\n  r'
Remediation: 1. Complete the truncated instruction body 2. Either include the referenced Python files or remove references to them 3. Clarify whether these files are examples, templates, or required components 4. Ensure skill package is complete before distribution

What is in the package

FileKindSize
README.mddoc594 B
SKILL.mddoc11 KB
skills/auth/SKILL.mddoc4.2 KB
skills/browser-automation/SKILL.mddoc11 KB
skills/create/SKILL.mddoc4.5 KB
skills/fix/SKILL.mddoc4.8 KB
skills/functions/SKILL.mddoc6.9 KB

External hosts referenced

api.browserbase.com browserbase.com news.ycombinator.com slow-site.com

Hostnames that appear in the skill's files. Referencing a host is not a finding; compare against the findings above and the skill's stated purpose.

Environment variables referenced

BROWSERBASE_CONNECT_URL BROWSERBASE_API_KEY BROWSERBASE_DEBUG_URL BROWSERBASE_PROJECT_ID

Package contents recorded 2026-10-22. The scan above ran against the version current at scan time; the two can differ if the skill has since been updated.

What we checked

What we did not check

Sources