{"id":"CVE-2026-57572","aliases":["GHSA-r253-r9jw-qg44"],"title":"Crawl4AI: Unauthenticated RCE via Chromium launch-argument injection in browser_config.extra_args","summary":"Crawl4AI: Unauthenticated RCE via Chromium launch-argument injection in browser_config.extra_args","severity":"critical","cvss":10,"cvssVector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H","vendor":"crawl4ai","product":"crawl4ai","ecosystem":"pip","affected":["crawl4ai < 0.9.0"],"patched":["crawl4ai 0.9.0"],"published":"2026-06-18","updated":"2026-07-08","source":"OSV","sourceUrl":"https://osv.dev/vulnerability/GHSA-r253-r9jw-qg44","references":[{"url":"https://github.com/unclecode/crawl4ai/security/advisories/GHSA-r253-r9jw-qg44"},{"url":"https://github.com/unclecode/crawl4ai"}],"tags":["osv","pip"],"epss":0.00939,"epssPercentile":0.59389,"ingestedAt":"2026-07-08T18:25:52.512Z","slug":"CVE-2026-57572","body":"## Overview\n\n### Summary\n\nThe Docker API server accepted a request-supplied `browser_config.extra_args`, which flowed into Chromium's launch arguments. An attacker could inject Chromium switches that replace a child-process launch command (`--utility-cmd-prefix`, `--renderer-cmd-prefix`, `--gpu-launcher`, `--browser-subprocess-path`) together with `--no-zygote`, causing Chromium to fork/exec an attacker-controlled command as the container's runtime user. The Docker API is unauthenticated by default, so a single request yields arbitrary command execution.\n\nThe earlier `extra_args` SSRF patch (0.8.9) used a denylist scoped to proxy/DNS flags; a denylist of launch switches is inherently incomplete, and these command-execution switches were not covered.\n\n### Affected paths\n\n`/crawl`, `/crawl/stream`, `/crawl/job` accepting a request `browser_config.extra_args`.\n\n### Impact\n\nUnauthenticated remote code execution as the container runtime user; full read/write of application data, mounted secrets, environment, and tokens, and out-of-band exfiltration independent of the HTTP response.\n\n### Fix\n\n0.9.0 establishes a trust boundary for request-supplied configuration: `extra_args` (along with other power fields such as `proxy`, `user_data_dir`, `cdp_url`, `init_scripts`) is a forbidden field for untrusted request bodies. Any request that sets `extra_args` is rejected with HTTP 400 rather than scrubbed against an always-incomplete denylist. In-process SDK callers (trusted) are unaffected.\n\n### Workarounds\n\n- Upgrade to the patched version (0.9.0).\n- Enable authentication (`CRAWL4AI_API_TOKEN`) and restrict who can reach the API.\n- Run the container with a restrictive seccomp profile and no ability to exec helper binaries.\n\n### Credits\n\nY4tacker - reported the `--no-zygote` + `--utility-cmd-prefix` command-injection chain with a confirmed in-container PoC and an allowlist/reject recommendation.\nUDU_RisePho (hoanggxyuuki) - independently reported the request-supplied Chromium launch-flag RCE class (`--renderer-cmd-prefix`), confirmed still reproducing on 0.8.9.\n\n## Affected packages\n\n- `crawl4ai < 0.9.0`\n\n## Remediation\n\nUpgrade to a patched release:\n\n- `crawl4ai 0.9.0`","depth":"midnight","depthScore":55,"depthScoreParts":{"impact":55,"likelihood":0.2,"exploitation":0,"ransomware":0},"changes":[]}