T09 · Insecure Skill Coding Practices
- Location
scripts/playwright-stealth.js:42- Finding
Chromium Sandbox Disabled While Processing Arbitrary Remote Content
- Content
View full analysis
Vulnerability Details
File Location:
scripts/playwright-stealth.js:42-49;scripts/smzdm-scraper.js:15-21
Vulnerability Type: Browser isolation failure caused by unsafe launch configuration
Risk Level: HighVulnerable Code
scripts/playwright-stealth.js:42-49:javascript const browser = await chromium.launch({ headless: headless, args: [ '--no-sandbox', '--disable-setuid-sandbox', '--disable-blink-features=AutomationControlled', '--disable-features=IsolateOrigins,site-per-process', ], });scripts/smzdm-scraper.js:15-21:javascript const browser = await chromium.launch({ headless: false, args: [ '--disable-blink-features=AutomationControlled', '--disable-dev-shm-usage', '--no-sandbox', ] });Technical Analysis
Both scripts launch Chromium with its operating-system sandbox disabled. The stealth script additionally disables site and origin process isolation through
--disable-features=IsolateOrigins,site-per-process.These settings are not required for the declared web-scraping or anti-detection functionality. Because the scripts accept a target URL from the command line, they can process arbitrary attacker-controlled webpages. The Chromium sandbox and process isolation boundaries provide defense in depth when a browser renderer is compromised. Disabling them makes a browser vulnerability substantially more likely to expose the host environment directly.
The code does not itself contain a browser exploit. Successful host compromise would require a vulnerability affecting the installed Chromium version or another browser component. Nevertheless, explicitly removing the relevant containment controls unnecessarily increases the impact of such a vulnerability.
Attack Path
- An attacker supplies or persuades the user or agent to scrape an attacker-controlled URL.
- The Skill launche ...[truncated 1223 chars]
- Remediation
View remediation
Remediation Suggestions
- Remove
--no-sandboxand--disable-setuid-sandboxfrom all Chromium launch configurations. - Remove
--disable-features=IsolateOrigins,site-per-processunless a documented, security-reviewed compatibility requirement exists. - Run Chromium as a non-root user with its standard sandbox enabled.
- If a deployment environment cannot support Chromium's sandbox, require an explicit opt-in rather than disabling it by default.
- For exceptional unsandboxed deployments, place the complete Skill inside a separately hardened container or virtual machine with:
- A non-root user.
- A read-only root filesystem.
- No host filesystem mounts containing credentials.
- Dropped Linux capabilities.
- Seccomp and AppArmor or SELinux enforcement.
- Restricted outbound and internal network access.
- Strict CPU, memory, process, and execution-time limits.
- Validate allowed URL schemes and consider an outbound destination policy to prevent navigation to local files, loopback services, link-local metadata endpoints, and private network services.
- Keep Playwright and its bundled Chromium version patched and regularly test that the browser sandbox remains active.
- Remove
