Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach unauthenticated Crawl4AI Docker API
-
ExploitPOST CrawlerRunConfig with huge delay_before_return_html/mean_delay/max_range
-
ExecutionUnclamped fields hold browser pages open and stall rate limiter
-
ImpactPage pool exhausted, other crawls blocked or failing
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource allocation 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 | The target must be a Crawl4AI Docker API server (version <= 0.9.4) reachable over the network, with the untrusted /crawl or /crawl/stream endpoints accepting CrawlerRunConfig bodies; the default setup is affected because JWT auth (security.jwt_enabled) is off by default, so any client that can reach the server can submit the request. The specific trigger is sending oversized delay_before_return_html, mean_delay, or max_range values, which _clamp_untrusted() leaves uncapped even though it caps page_timeout and other time fields. Exploitation via /crawl/stream is more severe because it has no wall-clock deadline, whereas /crawl is bounded by limits.wall_clock_s (300s default). Limiting factors: enabling JWT auth and/or keeping the API off untrusted networks prevents it, and upgrading to 0.9.5 (which clamps the three fields to 60s) fully remediates; note the published PoC additionally supplies a bearer token. |
| Impact | The CVSS 4.0 score of 8.7 is driven entirely by availability impact (VA:H) with the vector AV:N/AC:L/AT:N/PR:N/UI:N and no confidentiality or integrity impact - consistent with the CWE-770 resource-exhaustion denial of service described. Exploitation is attractive from an ease standpoint: network-reachable, low attack complexity, no user interaction, and per the vendor advisory JWT auth is off by default, so in a default deployment no authentication is required. The vuln.today decision label is 'this_week', reported by VulnCheck. There is NO CISA KEV listing and NO EPSS score in the provided data, so there is no evidence of active exploitation or a quantified exploitation probability; this is not a confirmed in-the-wild threat. A concrete proof-of-concept (curl requests and a library-level check) is published in the GHSA advisory. CONFLICT TO NOTE: the CVSS vector asserts PR:N (unauthenticated) and the advisory states JWT is disabled by default, yet the PoC itself sends an 'Authorization: Bearer $TOKEN' header - verify whether your deployment requires an API token independently of JWT. Net assessment: a real, easy-to-trigger availability issue worth near-term patching, but the blast radius is bounded to denial of service (no data exposure or code execution) and the affected product's production footprint is limited, so it is a this-week priority rather than an emergency. |
| Exploit ScenarioDerived | An attacker who can reach a default-configured Crawl4AI Docker API server sends a POST to /crawl or /crawl/stream containing a CrawlerRunConfig body with an enormous delay_before_return_html (e.g. 1000000000), mean_delay, or max_range value. The server accepts these unclamped fields and holds browser pages open or stalls the rate limiter for the duration, and a handful of such requests exhaust the page pool so other users' crawls stall or fail. A working proof-of-concept is published in the GHSA advisory; because /crawl/stream has no wall-clock deadline (unlike /crawl, which is bounded to 300s by default), the stream endpoint can tie up pages indefinitely. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 29, 2026
Denial of service in Crawl4AI's Docker API server (versions <= 0.9.4) lets unauthenticated remote attackers exhaust the browser page pool by submitting oversized delay_before_return_html, mean_delay, or max_range values to /crawl or /crawl/stream. The server's _clamp_untrusted() routine caps fields such as page_timeout but passes these three through unchanged, so a request can hold a page for an arbitrary delay or stall the rate limiter; /crawl/stream is more exposed because it lacks the 300-second wall-clock deadline that bounds /crawl. The CVSS 4.0 score of 8.7 reflects availability-only impact, no CISA KEV entry is reported, and a public proof-of-concept is included in the vendor advisory.
RemediationAI
Vendor-released patch: crawl4ai 0.9.5. Upgrading to 0.9.5 clamps delay_before_return_html, mean_delay and max_range to 60 seconds for untrusted bodies and falls back to field defaults for negative, NaN or non-numeric values. If upgrading immediately is not possible, enable JWT authentication (security.jwt_enabled) and keep the Docker API off untrusted networks; the trade-off is that JWT requires distributing tokens to legitimate clients, and network isolation may reduce availability for intended users. Note that /crawl/stream lacks a wall-clock deadline and is therefore the more severe exposure path, while /crawl is bounded by limits.wall_clock_s (300 seconds by default) but is still affected. Advisory: https://github.com/unclecode/crawl4ai/security/advisories/GHSA-rhjm-7hj7-75fx.
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
Crawl4AI is a Python web-crawling library for LLM pipelines, and its Docker API server accepts CrawlerRunConfig JSON bodies on /crawl and /crawl/stream. In crawl4ai/async_configs.py, _clamp_untrusted() applies caps to page_timeout, wait_for_timeout, body_visibility_timeout and max_scroll_steps when handling Provenance.UNTRUSTED bodies, but UNTRUSTED_FIELD_ALLOWLIST['CrawlerRunConfig'] also admits delay_before_return_html, mean_delay and max_range, which pass through without bounds. AsyncPlaywrightCrawlerStrategy._crawl_web() calls asyncio.sleep(config.delay_before_return_html) while holding a browser page, and AsyncWebCrawler.arun_many() uses mean_delay and max_range as the rate-limiter base delay. This is CWE-770 (Allocation of Resources Without Limits or Throttling): the service allocates page and rate-limiter resources based on untrusted numeric input without constraining them. /crawl is bounded by limits.wall_clock_s (300 seconds by default), whereas /crawl/stream has no such deadline, making stream requests the more severe path. CPE cpe:2.3:a:unclecode:crawl4ai:*:*:*:*:*:*:*:* maps to the pip package crawl4ai.
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:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
Network-reachable, low-complexity request against a default config with JWT off (PR:N, AV:N, AC:L); impact is availability-only resource exhaustion, so C:N/I:N/A:H and no scope change.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
Crawl4AI before 0.9.5 contains a denial of service vulnerability in the Docker API server where _clamp_untrusted() fails to cap the delay_before_return_html, mean_delay, and max_range fields of untrusted CrawlerRunConfig bodies. Unauthenticated attackers can send huge values to /crawl or /crawl/stream to hold browser pages or stall the rate limiter, exhausting the page pool and blocking other crawls.
Articles & Coverage 2
Technical POC Analysis
CWE-770 (Allocation of Resources Without Limits or Throttling) - a clamp-coverage gap, not a missing check.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
Crawl4AI's Docker API server (versions up to 0.9.4) contains an unauthenticated denial-of-service vulnerability that allows attackers to exhaust the browser page pool, causing service outages. The impact is organizational: any team or customer relying on the web crawling service will experience downtime, disrupting data collection and dependent workflows. Leadership should prioritize remediation due to the high availability impact and the absence of a vendor patch.
No vendor-released patch identified at time of analysis. Interim mitigations: restrict access to trusted networks, apply rate limiting, deploy WAF rules to block malicious parameters, and monitor for abnormal page pool exhaustion.
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-113186
GHSA-wh3g-v33g-c47f
NVD
CVE.org
EPSS
Exploit-DB