T03 · Remote Payload Retrieval and Execution
- Location
INSTALL.md:168- Finding
Remote Node.js setup script is executed as root without verification
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This is a powerful anti-detection browser skill with disclosed legitimate uses, but its install, startup, network exposure, and cookie-handling guidance create review-worthy security risk.
Install only in a tightly isolated environment. Pin and verify the Camoufox binary, avoid curl-to-bash setup, bind the API to localhost, require a strong bearer token for every browser-control endpoint, disable permissive CORS, do not use seccomp=unconfined, and treat imported cookies as live account credentials with 600 permissions and no diagnostic printing.
INSTALL.md:168Remote Node.js setup script is executed as root without verification
INSTALL.md:70Unpinned native browser binary is downloaded and executed without integrity verification
scripts/startup.sh:6Startup script executes server code from a predictable writable temporary directory
INSTALL.md:195Browser management API is documented with optional authentication and unsafe network exposure
TROUBLESHOOTING.md:157Troubleshooting instructions make session-cookie credentials world-readable and print their values
AGENTS.md:211Agent guidance recommends disabling the container seccomp sandbox
Recommending --security-opt seccomp=unconfined weakens container isolation by disabling syscall filtering, expanding the blast radius of a browser compromise or malicious content execution. Given this skill drives an anti-detection browser against arbitrary external sites, reducing sandbox protections materially increases host risk.
### "EPERM: Sandbox" error
Container needs seccomp profile adjustment. Add `--security-opt seccomp=unconfined` to Docker run args, or Camoufox will auto-fallback to non-sandboxed mode.
### "Tab no longer exists (browser was restarted)"
Browser was idle too long and shut down. Create a new tab.
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
.env Snippet# File: ~/.openclaw/.env (or wherever OpenClaw reads its env vars)
CAMOUFOX_EXECUTABLE=/root/.cache/camoufox/camoufox
CAMOFOX_API_KEY=cf-api-xxxx-xxxx-xxxx-xxxxxxxxxx
CAMOFOX_CRASH_REPORT_ENABLED=false
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).
npm update -g @jo-inc/camofox # if installed globally via npm
# or reinstall from source:
rm -rf /root/.cache/camoufox/*
npm install -g @jo-inc/camofox
openclaw gateway restart
Tool calls are chained to bypass individual safety checks or escalate capabilities beyond what any single tool call would allow.
These libraries are required by the Firefox-based Camoufox binary to render pages correctly:
sudo apt-get update && sudo apt-get install -y \
libgtk-3-0 \
libgdk-pixbuf2.0-0 \
libdbus-glib-1-2 \
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).
chmod +x /root/.cache/camoufox/camoufox
rm -f /tmp/camoufox.tar.gz
If you need a specific version, replace `latest` with e.g. `v0.0.1`.
YARA rule matched a known malware signature (reverse shell, backdoor, ransomware, C2 framework, or info stealer).
d/camoufox-linux-amd64.tar.gz"
tar xzf /tmp/camoufox.tar.gz -C /root/.cache/camoufox/ chmod +x /root/.cache/camoufox/camoufox
rm -f /tmp/camoufox.tar.gz
If you need a specific version, replace `latest` with e.g. `v0.0.1`.
### Step 3: Set Environment Variables
The OpenClaw plugin needs to know where the Camoufox binary lives:
```bash
# Add to ~/.bashrc for persistence
echo 'export CAMOUFOX_EXECUTABLE=/root/.cache/camoufox/camoufox' >> ~/.bashrc
source ~/.bashrc
# Verify it's set
echo $CAMOUFOX_EXECUTABLE
Optional but recommended environment variables:
| Variable | Default | Description |
|---|---|---|
CAMOUFOX_EXECUTABLE | unset | Path to camoufox binary (required) |
CAMOUFOX_API_KEY | none | API key for authenticated features (cookie import) |
CAMOUFOX_CRASH_REPORT_ENABLED | true | Set false to disable anonymized crash telemetry |
Place the skill in the OpenClaw skills direct
Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.
# Create a test tab
curl -X POST http://localhost:9377/tab/create \
-H "Content-Type: application/json" \
-d '{"url": "https://www.example.com"}'
Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.
curl -s http://localhost:9377/tabs/list | python3 -m json.tool
This is the specific high-risk uninstall deletion of the cached Camoufox binary directory. While legitimate for removal, it is still destructive and should be clearly flagged to prevent accidental data loss.
pkill -f "camoufox" 2>/dev/null
# Remove the binary
rm -rf /root/.cache/camoufox/
# Remove the skill directory
rm -rf ~/.openclaw/workspace/skills/camofox-default-browser/
This is the specific high-risk uninstall deletion of the cached Camoufox binary directory. While legitimate for removal, it is still destructive and should be clearly flagged to prevent accidental data loss.
pkill -f "camoufox" 2>/dev/null
# Remove the binary
rm -rf /root/.cache/camoufox/
# Remove the skill directory
rm -rf ~/.openclaw/workspace/skills/camofox-default-browser/
This is the specific recursive deletion of the installed skill directory under the user's home directory. It is valid uninstall behavior but should not be presented without clear warnings and confirmation guidance because it can permanently remove local changes.
rm -rf /root/.cache/camoufox/
# Remove the skill directory
rm -rf ~/.openclaw/workspace/skills/camofox-default-browser/
# Remove environment variable from bashrc
sed -i '/export CAMOUFOX_EXECUTABLE/d' ~/.bashrc
This is the specific recursive deletion of the installed skill directory under the user's home directory. It is valid uninstall behavior but should not be presented without clear warnings and confirmation guidance because it can permanently remove local changes.
rm -rf /root/.cache/camoufox/
# Remove the skill directory
rm -rf ~/.openclaw/workspace/skills/camofox-default-browser/
# Remove environment variable from bashrc
sed -i '/export CAMOUFOX_EXECUTABLE/d' ~/.bashrc
Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.
# Basic health check
curl -s http://localhost:9377/health | python3 -m json.tool
# Expected response fields: status, uptime, tabs, memory_mb, version
# status should always be "ok"
Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.
# Basic health check
curl -s http://localhost:9377/health | python3 -m json.tool
# Expected response fields: status, uptime, tabs, memory_mb, version
# status should always be "ok"
Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.
# Basic health check
curl -s http://localhost:9377/health | python3 -m json.tool
# Expected response fields: status, uptime, tabs, memory_mb, version
# status should always be "ok"
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).
Store .txt/.cookies files outside Leave them in world-readable /tmp
public web root directories
Set file permissions 600 (owner only) chmod 777 for convenience
Use dedicated files per account Mix multiple accounts in one file
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
1. **Rotate regularly** — Replace cookies every time login credentials change or suspicious activity is detected.
2. **Scope minimally** — Import only what you need. Use `domainSuffix` filter instead of bulk imports.
3. **Segregate by purpose** — Separate work, personal, and testing cookies into different files.
4. **Never commit to version control** — Add `*.cookies`, `*cookies.txt`, `*.netrc` to `.gitignore` immediately.
---
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).
Clean any stale socket files that may linger:
rm -f /tmp/camofox-server.sock
Restart the server:
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).
Clear corrupted browser cache:
rm -rf /root/.cache/camoufox/cache-*
Check crash logs for specifics:
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).
Clear corrupted browser cache:
rm -rf /root/.cache/camoufox/cache-*
Check crash logs for specifics:
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).
Clear corrupted browser cache:
rm -rf /root/.cache/camoufox/cache-*
Check crash logs for specifics:
The skill explicitly promotes anti-detection browsing to bypass WAFs, CAPTCHAs, and bot blocking, which materially increases the ability to evade site security controls. In an agent skill, normalizing these capabilities creates a misuse-ready pathway for unauthorized scraping, account abuse, or policy circumvention beyond ordinary browser automation.
The skill frames evasive browsing against anti-bot defenses as a standard, preferred workflow for external websites. That normalizes security-control circumvention and increases the likelihood that agents will apply stealth tooling broadly, including in contexts where the operator lacks authorization.
Describing cookie-authenticated sessions without warning that cookies are equivalent to bearer credentials can lead operators or downstream agents to treat sensitive session material casually. In this context, imported cookies could grant direct access to private accounts and data if mishandled, logged, or reused across tasks.
Documenting arbitrary JavaScript execution in page context without guardrails increases the risk of unsafe scripted actions, data extraction, and abuse of authenticated web application state. In an agent setting, this capability can be used to invoke app APIs, manipulate DOM state, or exfiltrate sensitive page content with little friction.
Detected: suspicious.exposed_secret_literal