Skip to main content

Crawl4AI CVE-2026-53754

HIGH
Server-Side Request Forgery (SSRF) (CWE-918)
2026-06-16 https://github.com/unclecode/crawl4ai GHSA-4qqr-vv2q-cmr5
7.5
CVSS 3.1 · GitHub Advisory
Share

Severity by source

GitHub Advisory PRIMARY
7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
vuln.today AI
7.5 HIGH

Network-reachable unauthenticated Docker API (PR:N, AV:N, AC:L); SSRF to IMDS yields high confidentiality via credential theft, but no direct write or DoS, so I:N and A:N.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from GitHub Advisory.

CVSS VectorGitHub Advisory

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
None
Availability
None

Lifecycle Timeline

3
Source Code Evidence Fetched
Jun 16, 2026 - 21:43 vuln.today
Analysis Generated
Jun 16, 2026 - 21:43 vuln.today
CVE Published
Jun 16, 2026 - 21:00 github-advisory
HIGH 7.5

DescriptionGitHub Advisory

Summary

The Docker API server's SSRF protection (validate_webhook_url / validate_url_destination in deploy/docker/utils.py) used an explicit IPv4/IPv6 CIDR blocklist that missed several address families. An attacker could reach internal services and cloud metadata endpoints (e.g. 169.254.169.254) despite the filter by encoding an internal IPv4 address inside an IPv6 transition form, or by using the IPv6 unspecified address.

Because the Docker API is unauthenticated by default (jwt_enabled: false), no credentials are required.

Affected paths

The blocklist was applied to crawl URLs (POST /crawl, /md, /html, /screenshot, /pdf, /execute_js) and webhook URLs (/crawl/job, /llm/job). All shared the same incomplete check.

Bypasses

The following all resolve to (or route to) blocked internal addresses but were NOT caught:

  • IPv6 unspecified ::
  • NAT64 64:ff9b::a9fe:a9fe (embeds 169.254.169.254)
  • 6to4 2002:a9fe:a9fe:: (embeds 169.254.169.254)
  • IPv4-mapped ::ffff:169.254.169.254
  • IPv4-compatible ::a9fe:a9fe

The error message also echoed the resolved internal IP, acting as a minor DNS/oracle leak.

Impact

Server-Side Request Forgery: an unauthenticated attacker can make the server fetch internal-network URLs and cloud instance-metadata endpoints, potentially exposing internal services and cloud credentials.

Fix

The blocklist is replaced by a single rule: reject any resolved IP where not ip.is_global, evaluated on the address AND every embedded IPv4 transition form (v4-mapped, NAT64 64:ff9b::/96, 6to4 2002::/16, v4-compat ::/96). Error messages are now opaque and no longer echo the resolved IP.

Workarounds

  • Upgrade to the patched version.
  • Enable authentication (CRAWL4AI_API_TOKEN).
  • Restrict the container's outbound network access (egress firewall / no metadata route).

Credits

Internal security audit (Crawl4AI maintainers).

AnalysisAI

Server-Side Request Forgery in Crawl4AI's Docker API server (versions <= 0.8.7) allows unauthenticated remote attackers to bypass the IPv4/IPv6 CIDR blocklist in validate_webhook_url/validate_url_destination by using IPv6 transition forms (NAT64, 6to4, IPv4-mapped, IPv4-compatible) or the unspecified address. Since the Docker API ships with jwt_enabled:false by default, attackers can pivot the server into fetching cloud metadata endpoints like 169.254.169.254, potentially exposing IAM credentials. …

Unlock full vulnerability intelligence

  • Risk assessment & exploitation conditions
  • Attack chain visualization
  • Remediation with exact patch versions
  • Threat intelligence from 22 sources
  • Personal watchlist & email alerts

Free forever · No credit card required

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata

Access
Identify exposed Crawl4AI Docker API
Delivery
Craft URL with IPv6 transition encoding of 169.254.169.254
Exploit
POST to /crawl or webhook endpoint
Execution
SSRF filter bypass, server fetches IMDS
Persist
Cloud IAM credentials returned in response
Impact
Assume role and pivot into cloud account

Vulnerability AssessmentAI

Exploitation Exploitable against any Crawl4AI Docker API deployment <= 0.8.7 running with the default jwt_enabled:false (no CRAWL4AI_API_TOKEN set) where the attacker can reach one of the vulnerable endpoints (/crawl, /md, /html, /screenshot, /pdf, /execute_js, /crawl/job, /llm/job). … Additional conditions and limiting factors are described in the full assessment.
Risk Assessment CVSS 3.1 base 7.5 (AV:N/AC:L/PR:N/UI:N/C:H/I:N/A:N) accurately reflects an unauthenticated network-reachable SSRF with high confidentiality impact via metadata theft. … Full risk analysis with EPSS, KEV, and SSVC signal comparison available after sign-in.
Exploit Scenario An attacker discovers a Crawl4AI Docker API exposed to the internet (or accessible from a tenant in the same VPC) and issues an unauthenticated POST /crawl with url set to http://[::ffff:169.254.169.254]/latest/meta-data/iam/security-credentials/. The server resolves the IPv6 form, the legacy blocklist fails to match, and the response containing AWS instance-credentials is returned in the crawl output. …
Remediation Vendor-released patch: upgrade pip/crawl4ai to 0.8.8 or later, which replaces the explicit CIDR blocklist with an ipaddress.is_global check evaluated across all IPv6 transition encodings (v4-mapped, NAT64 64:ff9b::/96, 6to4 2002::/16, v4-compat ::/96) and also makes error messages opaque to remove the DNS/oracle leak; see https://github.com/unclecode/crawl4ai/security/advisories/GHSA-4qqr-vv2q-cmr5. … Detailed patch versions, workarounds, and compensating controls in full report.

Recommended ActionAI

Within 24 hours: Identify all systems running Crawl4AI versions <= 0.8.7; confirm network connectivity from these systems to cloud metadata endpoints (169.254.169.254 for AWS, etc.). …

Sign in for detailed remediation steps and compensating controls.

Threat intelligence, references, and detailed analysis are available after sign-in.

Share

CVE-2026-53754 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy