Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconDiscover exposed Crawl4AI Docker API
-
DeliveryPre-stage symlink inside ALLOWED_OUTPUT_DIR
-
ExploitPOST /screenshot with crafted output_path
-
InstallWin TOCTOU race against validate_output_path
-
C2Write payload to cron or executable path
-
ExecuteWait for scheduler or invocation
-
ImpactExecute code as container user
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Path canonicalization, traversal prevention
MITRE ATT&CK
2 techniques across 2 tactics: Discovery, Collection The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Target must be a Crawl4AI Docker API server <= 0.8.7 exposing the POST /screenshot or POST /pdf endpoints with the default unauthenticated configuration (CRAWL4AI_API_TOKEN unset). The attacker must supply an output_path inside ALLOWED_OUTPUT_DIR where a symlink can be planted or a TOCTOU race won against validate_output_path; reaching code execution additionally requires that the container's runtime user have write permission to an executable or cron location (e.g., /etc/cron.d/, a binary on PATH), so hardened deployments running as an unprivileged user with a read-only root filesystem are limited to arbitrary writes within writable mounts rather than RCE. CVSS AC:H/AT:P reflects the symlink-staging and race-window requirements that limit reliability. |
| Impact | CVSS 4.0 of 9.2 (AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H) reflects an unauthenticated network-reachable write with high attack complexity and a present attack requirement - the attacker must win a TOCTOU race or pre-position a symlink, which is non-trivial but feasible against a long-lived container. Exploitation impact is conditional: it only reaches code execution where the runtime user can write to executable or cron locations, so hardened containers (non-root, read-only rootfs) materially reduce real risk even before patching. No EPSS, KEV, or POC data was provided, so this should be treated as no public exploit identified at time of analysis despite the high CVSS; the unauthenticated-by-default posture and the fact that VulnCheck published an advisory raise priority for any internet-exposed Crawl4AI Docker deployment. |
| Exploit ScenarioDerived | An attacker reachable to an unauthenticated Crawl4AI Docker server sends repeated POST /screenshot or POST /pdf requests with an output_path that points through a directory the attacker can race or pre-symlink, swapping in a symlink targeting /etc/cron.d/ or a binary the runtime user can overwrite. Winning the TOCTOU race between validate_output_path and the open() call writes attacker-controlled image/PDF bytes outside ALLOWED_OUTPUT_DIR; on hosts where the container runs as a user with write access to executable or cron paths, this yields code execution at the next scheduler tick. No public POC has been identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jun 23, 2026
Arbitrary file write in Crawl4AI Docker API server before 0.8.8 lets unauthenticated remote attackers escape the ALLOWED_OUTPUT_DIR via symlinks and a TOCTOU race on the output_path parameter of the /screenshot and /pdf endpoints, potentially escalating to code execution where the runtime user can write to executable or cron paths. No public exploit identified at time of analysis, but the API is unauthenticated by default and the GHSA confirms the issue was found in an internal security audit.
RemediationAI
Vendor-released patch: upgrade pip package crawl4ai to 0.8.8 or later, which resolves the real path of the output_path parent, re-checks containment after symlink resolution, and writes with O_NOFOLLOW (see PR https://github.com/unclecode/crawl4ai/pull/3 and advisory https://github.com/unclecode/crawl4ai/security/advisories/GHSA-7cx2-g3h9-382p). If immediate upgrade is not possible, enable authentication by setting CRAWL4AI_API_TOKEN - this closes unauthenticated access but will break any existing clients that do not send the token - and run the container with a read-only root filesystem to neutralize the write-to-execute primitive, which may break other features that expect writable paths outside ALLOWED_OUTPUT_DIR. As a network-level control, restrict ingress to /screenshot and /pdf endpoints to trusted internal callers only until the upgrade is applied.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in pypi
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/scraping framework (pip package crawl4ai) commonly run via its Docker API server. The vulnerable validate_output_path function in 0.8.7 performed string-only containment checks against ALLOWED_OUTPUT_DIR without resolving symlinks, and the subsequent open() call followed symlinks, producing the classic CWE-22 path traversal pattern combined with a CWE-367 TOCTOU race between validation and write. The 0.8.8 fix resolves the parent's real path, re-checks containment, and writes with O_NOFOLLOW via a new write_output_file helper. The CPE cpe:2.3:a:crawl4ai:crawl4ai:*:*:* covers all versions up to and including 0.8.7.
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:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Unauthenticated network endpoint (AV:N/PR:N), but exploitation requires winning a TOCTOU race and symlink staging (AC:H); arbitrary write enables full host compromise when runtime user can write executables.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
1DescriptionCVE.org
Crawl4AI before 0.8.8 contains an arbitrary file write vulnerability in the screenshot and PDF endpoints that allows unauthenticated attackers to write files outside the intended directory via symlink and time-of-check-time-of-use (TOCTOU) attacks on the output_path parameter. Remote attackers can exploit insufficient path validation and symlink following to achieve arbitrary file write and potential code execution on systems where the runtime user has write access to executable or cron locations.
Executive ViewAI
Crawl4AI Docker API server (versions before 0.8.8) contains a critical arbitrary file write vulnerability enabling unauthenticated remote attackers to bypass directory restrictions and potentially achieve code execution. The API is unauthenticated by default, creating significant risk for any organization exposing this service to untrusted networks. No vendor-released patch identified at time of analysis, requiring immediate interim containment measures.
Restrict network access via firewall rules or VPN to trusted networks only; disable /screenshot and /pdf endpoints if not operationally critical; run containers with minimal filesystem permissions and remove write access to executable directories and system cron paths; implement file integrity monitoring on output directories; place the API behind an authenticating reverse proxy; monitor system logs for unexpected file write activity in restricted paths.
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
Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
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 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
Credential exfiltration in Crawl4AI's Docker API server (all versions before 0.8.8) lets remote unauthenticated attacker
EUVD-2026-38432
GHSA-wx2c-3cp2-f6qw
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB