<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Crawl4ai (&lt;= 0.8.9) - CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/products/crawl4ai--0.8.9/</link><description>Trending threats, MITRE ATT&amp;CK coverage, and detection metadata. Fed continuously.</description><generator>Hugo</generator><language>en</language><managingEditor>hello@craftedsignal.io</managingEditor><webMaster>hello@craftedsignal.io</webMaster><lastBuildDate>Thu, 18 Jun 2026 17:41:17 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/products/crawl4ai--0.8.9/feed.xml" rel="self" type="application/rss+xml"/><item><title>Crawl4AI Unauthenticated SSRF in Docker API `crawl/stream` Endpoint</title><link>https://feed.craftedsignal.io/briefs/2026-06-crawl4ai-ssrf/</link><pubDate>Thu, 18 Jun 2026 17:41:17 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-06-crawl4ai-ssrf/</guid><description>A remote, unauthenticated attacker can exploit an unpatched Server-Side Request Forgery (SSRF) vulnerability in Crawl4AI Docker API versions up to 0.8.9, specifically targeting the `/crawl/stream` endpoint, to read internal network services and cloud-metadata endpoints, potentially exposing sensitive information like IAM credentials.</description><content:encoded><![CDATA[<p>A remote, unauthenticated attacker can exploit an unpatched Server-Side Request Forgery (SSRF) vulnerability in the Crawl4AI Docker API server, specifically targeting versions up to 0.8.9. The vulnerability exists because the <code>handle_stream_crawl_request</code> function, used by <code>POST /crawl/stream</code> and <code>POST /crawl</code> with <code>crawler_config.stream=true</code>, fails to validate the destination of provided seed URLs. This oversight allows attackers to supply URLs pointing to internal networks, private IP addresses, or cloud-metadata endpoints (e.g., <code>http://169.254.169.254/</code>). The server then fetches the content from these internal resources and streams the response directly back to the attacker, potentially leading to unauthorized access to sensitive information like cloud IAM credentials or details about internal services. This critical flaw highlights a gap in the API's security checks, which was previously intended to prevent such attacks on non-streaming paths but was overlooked for streaming functionalities. The Docker API is often unauthenticated by default, increasing the attack surface.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>Attacker identifies an internet-facing Crawl4AI Docker API server (version &lt;= 0.8.9).</li>
<li>Attacker crafts an unauthenticated <code>POST</code> request targeting the <code>/crawl/stream</code> endpoint, or the <code>/crawl</code> endpoint with <code>crawler_config.stream=true</code>.</li>
<li>Within the request body, the attacker includes a malicious seed URL pointing to an internal, private, or link-local address, such as <code>http://169.254.169.254/latest/meta-data/</code>.</li>
<li>The Crawl4AI server's <code>handle_stream_crawl_request</code> function processes the request without applying the necessary <code>validate_url_destination</code> check.</li>
<li>The server initiates an outbound connection to the specified internal URL, fetching the content of the internal resource (e.g., cloud instance metadata).</li>
<li>The fetched response body (e.g., AWS IAM temporary credentials) is then streamed back by the Crawl4AI server to the unauthenticated attacker's client.</li>
<li>The attacker receives and extracts sensitive internal information or credentials from the streamed response.</li>
<li>Attacker potentially uses the obtained credentials to escalate privileges or access other internal cloud resources.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>This unauthenticated Server-Side Request Forgery (SSRF) allows remote attackers to read arbitrary internal services and cloud-metadata endpoints. This can expose highly sensitive information such as cloud IAM temporary credentials (e.g., from <code>http://169.254.169.254/latest/meta-data/iam/security-credentials/</code>), internal network topology, or other confidential data hosted on inaccessible internal systems. The vulnerability is considered high severity due to its unauthenticated nature and direct access to internal resources, which is similar in class and impact to previously identified SSRF flaws in the project. Successful exploitation could lead to privilege escalation, data exfiltration, or broader compromise of cloud environments.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Upgrade Crawl4AI instances to version 0.9.0 or later to patch the SSRF vulnerability.</li>
<li>Enable authentication on the Crawl4AI Docker API and restrict access to authorized users/systems only.</li>
<li>Implement egress filtering or network segmentation to restrict outbound network access from Crawl4AI containers, preventing connections to internal or metadata service IP ranges like <code>169.254.169.254</code>.</li>
<li>Deploy the provided Sigma rules to your SIEM to detect attempts at exploiting the <code>/crawl/stream</code> or <code>/crawl</code> (with <code>crawler_config.stream=true</code>) endpoints with internal IP addresses.</li>
<li>Ensure webserver access logs are enabled and ingested into your SIEM for the Crawl4AI application to allow detection of malicious <code>POST</code> requests targeting <code>/crawl/stream</code> or <code>/crawl</code>.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>ssrf</category><category>web-application</category><category>docker</category><category>unauthenticated</category><category>api-exploitation</category></item><item><title>Crawl4AI Unauthenticated RCE via Chromium Launch-Argument Injection</title><link>https://feed.craftedsignal.io/briefs/2026-06-crawl4ai-unauth-rce/</link><pubDate>Thu, 18 Jun 2026 17:40:10 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-06-crawl4ai-unauth-rce/</guid><description>An attacker can achieve unauthenticated remote code execution (RCE) in Crawl4AI Docker deployments by injecting malicious Chromium launch arguments, such as `--utility-cmd-prefix` and `--no-zygote`, into the `browser_config.extra_args` field of the API request, allowing for arbitrary command execution as the container's runtime user.</description><content:encoded><![CDATA[<p>A critical unauthenticated remote code execution (RCE) vulnerability exists in Crawl4AI, affecting versions up to 0.8.9, where the Docker API server improperly processes <code>browser_config.extra_args</code> from untrusted request bodies. This flaw allows an attacker to inject Chromium launch arguments, specifically those that can replace child-process launch commands like <code>--utility-cmd-prefix</code>, <code>--renderer-cmd-prefix</code>, <code>--gpu-launcher</code>, or <code>--browser-subprocess-path</code>, when combined with <code>--no-zygote</code>. By leveraging these arguments, Chromium is forced to fork and execute an attacker-controlled command as the container's runtime user, leading to full compromise. The vulnerability stems from an incomplete denylist approach in earlier versions, which failed to cover critical command execution switches. If exploited, an attacker gains complete control over the container, including access to sensitive application data, mounted secrets, environment variables, and tokens, enabling out-of-band data exfiltration.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>An attacker identifies an exposed and unauthenticated Crawl4AI Docker API endpoint.</li>
<li>The attacker sends an unauthenticated HTTP POST request to a vulnerable API path, such as <code>/crawl</code>, <code>/crawl/stream</code>, or <code>/crawl/job</code>.</li>
<li>The request body includes <code>browser_config.extra_args</code> containing specially crafted Chromium launch arguments.</li>
<li>Malicious arguments typically include a child-process launch command (e.g., <code>--utility-cmd-prefix</code>) combined with <code>--no-zygote</code>.</li>
<li>The Crawl4AI application passes these arguments to Chromium during its launch configuration.</li>
<li>Chromium, influenced by the injected arguments, forks and executes an attacker-controlled command instead of its intended child process.</li>
<li>The attacker's command executes as the container's runtime user, achieving remote code execution.</li>
<li>Post-exploitation, the attacker can access sensitive data, exfiltrate information, or establish further persistence within the compromised container.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation of this vulnerability leads to unauthenticated remote code execution (RCE) as the container's runtime user. This grants attackers full read/write access to all application data, mounted secrets, environment variables, and security tokens within the affected container. Attackers can exfiltrate sensitive data out-of-band, install additional malware, or pivot to other systems. Organizations using vulnerable Crawl4AI Docker deployments are at severe risk of data breaches, system compromise, and significant operational disruption.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li><strong>Upgrade Crawl4AI to version 0.9.0 immediately</strong> to address the fundamental trust boundary issue that allows injection of dangerous configuration.</li>
<li><strong>Enable authentication</strong> by configuring <code>CRAWL4AI_API_TOKEN</code> and restrict API access to trusted networks and users.</li>
<li><strong>Run Crawl4AI containers with a restrictive seccomp profile</strong> to limit the ability of processes within the container to execute helper binaries, mitigating the impact of potential RCE.</li>
<li><strong>Deploy the Sigma rules in this brief</strong> to your SIEM for detection of exploitation attempts and post-exploitation activity.</li>
<li><strong>Ensure process creation logging is enabled for Linux containers</strong> to allow detection of suspicious <code>chromium</code> child processes.</li>
</ul>
]]></content:encoded><category domain="severity">critical</category><category domain="type">advisory</category><category>RCE</category><category>web-vulnerability</category><category>Chromium</category><category>container</category><category>Docker</category><category>Linux</category></item></channel></rss>