T09 · Insecure Skill Coding Practices
Warning
- Location
- SKILL.md:20
- Finding
- Chrome Is Launched with Its Security Sandbox Disabled<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 20-31; the unsafe option also recurs at lines 44-46, 76-78, 128, 131, and 157-159 **Vulnerability Type**: Unsafe browser security configuration **Risk Level**: Medium ### Vulnerable Code ```bash ### 1. Headless mode (general automation) google-chrome --headless=new --no-sandbox --disable-gpu --user-data-dir=/tmp/chrome-data ### 2. Headed mode + Xvfb + DevTools (recommended for MCP users) xvfb-run -a google-chrome --no-sandbox \ --disable-gpu --remote-debugging-port=9222 \ --user-data-dir=/tmp/chrome-profile ``` The documentation also characterizes `--no-sandbox` as mandatory for servers: ```text | `--no-sandbox` | Skip the sandbox (required on servers) | ``` ### Technical Analysis The instructions consistently launch Chrome with `--no-sandbox`, disabling a principal browser isolation boundary. Chrome normally uses process sandboxing to restrict renderer and other low-privilege browser processes after they process untrusted web content. Browser automation routinely opens externally controlled pages. If such a page exploits a renderer or browser-component vulnerability, disabling the sandbox can make it substantially easier for the exploit to access resources available to the Chrome operating-system account. Presenting this option as universally required on servers encourages an unsafe default even where the Chrome sandbox is supported. This finding does not by itself provide code execution; exploitation requires a separate browser vulnerability or another method of executing code in a normally sandboxed Chrome process. ### Attack Path 1. An operator launches Chrome using one of the documented commands containing `--no-sandbox`. 2. The automation session navigates to an attacker-controlled or compromised website. 3. The page exploits a suitable Chrome renderer or browser-component vulnerability. 4. Because the normal Chrome sandbox is disabled, the malicious process has fewe ...[truncated 667 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions - Remove `--no-sandbox` from all default command examples. - Run Chrome as a dedicated, unprivileged operating-system user with its standard sandbox enabled. - Do not claim that disabling the sandbox is universally required on servers. - If a narrowly defined container environment cannot support Chrome's sandbox, document the exception rather than making it the default. - For exceptional unsandboxed deployments, use a hardened container or virtual machine with: - No host filesystem mounts beyond strictly required paths. - A read-only root filesystem where practical. - Dropped Linux capabilities. - `no-new-privileges`. - Seccomp and mandatory access-control profiles. - Restricted outbound and local-network access. - No sensitive credentials in the process environment. - Never run unsandboxed Chrome as `root`. - Use a temporary, minimally permissioned profile and delete it securely after the session. ]]>
