T09 · Insecure Skill Coding Practices
- Location
scripts/launch_browser.py:23- Finding
Chrome Sandbox Disabled While Loading User-Controlled URLs
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill does launch a Selenium Chrome browser, but its packaged script and documentation disagree in ways that could leave browsers running and expose users to arbitrary web content with weakened browser isolation.
Install only after reviewing and tightening it: use explicit invocation, restrict or confirm URLs, remove --no-sandbox unless there is equivalent container isolation, pin and verify dependencies, and make the shipped script match the documented screenshot-and-exit workflow.
scripts/launch_browser.py:23Chrome Sandbox Disabled While Loading User-Controlled URLs
references/setup.md:14Unpinned Python Dependency and Unverified ChromeDriver Installation
scripts/launch_browser.py:43Unbounded Browser Lifetime and Misleading Documented Behavior
The core browser-launch behavior matches part of the description: it starts Selenium-controlled Chrome, opens a URL, and supports headless mode and optional proxy. However, the declared description specifically says the skill takes a screenshot and reports progress, and the provided code does neither. Instead, it opens the page and waits indefinitely until termination. That is a material description-to-behavior mismatch because expected user-visible capabilities are missing and the operational flow is different from a screenshot task.
Triggering on generic words like open, browser, or screenshot is overly broad and can cause unintended activation on unrelated conversations. Because activation leads to launching a browser and visiting a supplied URL, this raises the risk of untrusted navigation, internal resource access, or disk writes without clear user intent.
The skill can read environment variables to discover executable paths, yet it declares no explicit tool scope or permissions boundary. In an agent ecosystem, missing scope declarations weakens reviewability and can allow a skill with code execution capabilities to access more host context than operators expect.
The skill lacks a clear warning that it will visit arbitrary URLs and save screenshots locally, both of which carry security and privacy risk. In context, a Selenium-driven browser can reach attacker-controlled pages, trigger requests to internal services, and capture sensitive content into files that may persist on disk.
The documentation says screenshots are saved to /home/main/clawd/diffusion_pdfs/, but the code actually writes to $HOME/screenshot.png or /tmp/screenshot.png. This discrepancy can mislead operators about where potentially sensitive screenshots are stored, causing accidental exposure, improper retention, or failure to monitor the real output location.
The example output reports a fixed path under /home/main/clawd/diffusion_pdfs/, but the script returns a different runtime-derived path. Misreporting artifact locations undermines auditability and can lead users or downstream automation to fetch the wrong file while the real screenshot remains elsewhere on disk.
This markdown file contains commands that install software packages and place executables into privileged system paths, which can affect system integrity and require elevated privileges. The guide does not include any warning or disclosure about these side effects, rollback considerations, or the need to review commands before running them.
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
# Ubuntu/Debian
sudo apt-get update
sudo apt-get install -y google-chrome-stable
# Fedora
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
# Ubuntu/Debian
sudo apt-get update
sudo apt-get install -y google-chrome-stable
# Fedora
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
# Ubuntu/Debian
sudo apt-get update
sudo apt-get install -y google-chrome-stable
# Fedora
The manifest says the skill will open a URL, take a screenshot, and report progress. In this file, the code only starts Chrome, navigates to the URL, then idles indefinitely until interrupted; there is no screenshot logic and no progress reporting output or callbacks.
No suspicious patterns detected.