Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate with valid API token
-
ExploitSubmit crafted regex to /crawl against attacker page
-
ExecutionCatastrophic backtracking holds Python GIL
-
ImpactEntire Docker server freezes including /health
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V2 - Validation and Business Logic Regex complexity limits
MITRE ATT&CK
1 technique across 1 tactic: Impact The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires (1) the Crawl4AI Docker API server deployment mode - the library imported directly is not affected unless the host application itself passes untrusted regexes into these strategies; (2) a valid API bearer token (PR:L / authenticated client); and (3) a crawl target page the attacker can control or influence whose text triggers backtracking (e.g. 'a'*n + 'X'). The specific sinks are RegexExtractionStrategy.custom, RegexChunking.patterns, and schema fields of type 'regex' in JsonCssExtractionStrategy/JsonXPathExtractionStrategy/JsonLxmlExtractionStrategy, which lacked entries in UNTRUSTED_FIELD_ALLOWLIST so _filter_untrusted_fields() let the caller-supplied patterns through. Limiting factors: a token is required (not unauthenticated), only the affected 0.9.x Docker builds are impacted, and the built-in RegexExtractionStrategy patterns remain safe/available - only caller-supplied patterns are the vector. |
| Impact | This is a genuine but bounded availability issue, not a drop-everything emergency. The input CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:H) correctly frames it: network-reachable, low attack complexity, but requiring low-level privileges (PR:L) - a valid API token - and producing availability-only impact (VA:H), with no confidentiality or integrity effect. The vuln.today Decision label is 'this_week' (not act_now/emergency), which aligns with the picture of an authenticated denial-of-service rather than an unauthenticated RCE. There is no CISA KEV listing and no EPSS score in the input, so there is no signal of active or widespread exploitation - consistent with an authenticated-only bug reported via coordinated disclosure (VulnCheck, researcher Zhixi 'Jace' Sun). A complete, working proof-of-concept is published in the GHSA advisory itself (the curl command plus the (a+)+$ pattern), so the barrier to reproduction is effectively zero for anyone holding a token. The main thing moderating real-world risk is the authentication requirement and the narrow exposure: only the Docker API server deployment mode is affected, and the library used directly is not affected unless an application itself forwards untrusted regexes into these strategies. Net: a real, easily-reproduced DoS that trusted-token-holders or anyone who can obtain/leak a token can trigger, best handled on the vendor's 'this_week' cadence rather than as an active-exploitation fire drill. |
| Exploit ScenarioDerived | An attacker holding a valid Docker API token hosts a page containing a long run of 'a' characters (e.g. 40) ending in 'X', then sends a single /crawl request supplying the catastrophic-backtracking pattern (a+)+$ via RegexExtractionStrategy.custom (or RegexChunking.patterns, or a regex-typed schema field). Python's re engine holds the GIL while the match backtracks exponentially, so the entire server stops answering every request - including /health - for all users, and the crawl deadline cannot interrupt it. A full working PoC is published in the GHSA advisory, so exploitation requires no additional development. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 22, 2026
Authenticated clients of the Crawl4AI Docker API server (0.9.0 through 0.9.4) can freeze the entire service, including the /health endpoint, by submitting a catastrophic-backtracking regular expression in a /crawl request body through RegexExtractionStrategy.custom, RegexChunking.patterns, or a schema field of type 'regex' in the JSON extraction strategies. Python's re engine does not release the GIL while matching, so a single crafted pattern combined with an attacker-influenced page blocks the event loop and the crawl deadline cannot interrupt it. Exploitation requires a valid API bearer token and a crawl target whose text triggers the backtracking; a public proof-of-concept request is published in the vendor advisory, no active exploitation has been reported, and the vendor fixed the issue in 0.9.5. The library imported directly is not exposed unless the host application itself feeds untrusted regexes into these strategies.
RemediationAI
Upgrade crawl4ai to 0.9.5, which the vendor advisory and release tag identify as the fixed version, and which is delivered by upstream commit 8aea2006e2cdb96a185e50b20633fc323dff6429 - that change refuses caller-supplied regexes from untrusted request bodies by adding 'custom' for RegexExtractionStrategy and 'patterns' for RegexChunking to UNTRUSTED_FIELD_ALLOWLIST, and by walking extraction schemas to reject any field of type 'regex' in JsonCssExtractionStrategy, JsonXPathExtractionStrategy and JsonLxmlExtractionStrategy (including schema fields nested inside 'nested' fields or wrapped in a {"type": "dict"} envelope). The trade-off is that legitimate API clients can no longer pass custom or chunking regexes through /crawl; the built-in RegexExtractionStrategy patterns remain available and trusted in-process configuration still works. If an immediate upgrade is not possible, the vendor-specified workaround is to reject at the reverse proxy any crawler_config body containing RegexExtractionStrategy, RegexChunking, or a schema field with "type": "regex" - this filters the payload rather than the exploit, so it must be kept in sync with the API schema - and to issue API tokens only to trusted clients, since a valid bearer token is required to reach the vulnerable sinks. Because the match cannot be interrupted or timed out by the crawl deadline, request timeouts and container restart policies are ineffective as mitigation for a request already in flight. Advisory: https://github.com/unclecode/crawl4ai/security/advisories/GHSA-j843-8p47-rhxp.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
CWE-1333 (inefficient regular expression complexity) in the Python Crawl4AI package. The flaw sits in the untrusted-configuration filtering layer: RegexExtractionStrategy and RegexChunking are listed in UNTRUSTED_ALLOWED_TYPES in crawl4ai/async_configs.py but had no corresponding entry in UNTRUSTED_FIELD_ALLOWLIST, so _filter_untrusted_fields() passed their caller-supplied 'custom' and 'patterns' fields straight through from an untrusted /crawl request body. Three sinks then compile and execute those patterns without any bound on pattern complexity or run time: RegexExtractionStrategy.__init__() compiles each custom pattern and extract() runs it with finditer() over crawled content, RegexChunking.chunk() runs re.split(pattern, ...), and JsonCssExtractionStrategy (plus the XPath and Lxml variants) runs re.search(pattern, value) for every schema field declared with "type": "regex". Catastrophic backtracking such as (a+)+$ against content like 'a'*n + 'X' grows roughly 4x per two additional characters (about 1.5 s at n=24, hours at n=40). Extraction runs in a worker thread, but CPython's re engine holds the interpreter lock while matching, so the event loop cannot serve other requests and asyncio.wait_for crawl deadlines cannot cancel the match. The trigger requires the attacker to control or influence the crawled page content; the built-in RegexExtractionStrategy patterns are unaffected.
Know when Crawl4ai gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
Reachable over the network with one simple request (AV:N/AC:L) but needs a valid API token (PR:L); impact is availability-only server freeze (A:H, C:N/I:N) with no scope change (S:U).
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
Crawl4AI 0.7.0 before 0.9.5 contains an inefficient regular expression complexity vulnerability in the Docker API server that allows authenticated API clients to supply unbounded regular expressions in /crawl request bodies. Attackers can submit catastrophic-backtracking patterns via RegexExtractionStrategy.custom, RegexChunking.patterns or JsonCss, JsonXPath and JsonLxml schema regex fields against a crafted page to freeze the entire server, including /health.
Executive ViewAI
CVE-2026-115508 affects Crawl4AI Docker API server versions 0.9.0 through 0.9.4, where an authenticated attacker with a valid API token can freeze the entire service, including health checks, by submitting a crafted regular expression during a crawl request. This denial-of-service condition can disrupt web crawling operations, impacting dependent data pipelines and business processes; leadership should prioritize remediation because a single malicious request from an insider or compromised token can halt the service, though no active exploitation has been reported.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
Remote code execution in Crawl4AI Docker API before 0.8.0 via hooks parameter. The /crawl endpoint accepts Python code i
Authentication bypass in Crawl4AI Docker API server (versions prior to 0.8.7) allows remote unauthenticated attackers to
Arbitrary local file disclosure in Crawl4AI's Docker API (versions before 0.8.0) lets unauthenticated remote attackers r
Remote code execution in Crawl4AI's Docker API server (versions prior to 0.9.0) lets unauthenticated attackers run arbit
Arbitrary file write in Crawl4AI (the open-source LLM-friendly web crawler by unclecode) before version 0.9.0 lets a mal
Arbitrary file write in Crawl4AI Docker API server before 0.8.8 lets unauthenticated remote attackers escape the ALLOWED
Arbitrary JavaScript execution in Crawl4AI's Docker API server (versions before 0.8.7) lets remote attackers submit code
Server-side request forgery in Crawl4AI's Docker API server (versions before 0.8.7) allows remote unauthenticated attack
Server-side request forgery in Crawl4AI (unclecode) versions 0.7.0 through 0.9.3 lets unauthenticated, remote API client
Server-side request forgery in Crawl4AI before 0.8.7 allows unauthenticated remote attackers to coerce the server into f
Crawl4AI <=0.4.247 is vulnerable to SSRF in /crawl4ai/async_dispatcher.py. Rated critical severity (CVSS 9.1), this vuln
Arbitrary file write in Crawl4AI's Docker API server (versions before 0.8.7) lets remote unauthenticated attackers overw
EUVD-2026-108340
GHSA-q4c3-mqc5-j3m8
NVD
CVE.org
Exploit-DB