CVE-2026-53755: Crawl4AI: SSRF via proxy settings in the Docker server bypasses the crawl-URL SSRF check

Published Jun 16, 2026
·
Updated

Summary

The Docker API server applied its SSRF destination check to the crawl target URL only, not to the proxy address. An unauthenticated request could supply a proxy pointing at an internal IP and route the browser through it, reaching internal services and cloud-metadata endpoints, while using a perfectly valid crawl URL. The Docker API is unauthenticated by default.

Affected paths

/crawl, /crawl/stream, and /crawl/job accept a browserconfig (and crawlerconfig). The following all feed Chromium's egress and were unchecked: - browserconfig.proxyconfig.server - browserconfig.proxy (deprecated field) - crawlerconfig.proxyconfig.server - --proxy-server / --proxy-pac-url / --proxy-bypass-list / --host-resolver-rules flags in browserconfig.extraargs

Attack

An attacker sends /crawl with a benign, validation-passing URL but a proxyconfig.server pointing at an internal IP. Chromium routes all requests through that proxy. For plain-HTTP targets the proxy receives the full request and can return any content, which is then returned verbatim in the crawl result (results[0].html / cleanedhtml / markdown). In a real deployment the proxy would be an attacker-controlled server pointing at cloud metadata (e.g. AWS IMDSv1 at 169.254.169.254) to retrieve IAM credential tokens.

Impact

Unauthenticated server-side request forgery to internal services and cloud-metadata endpoints, with the response returned to the attacker.

Fix

Every proxy destination is validated with the same global-routability check used for crawl URLs (reject any resolved address that is not isglobal, including IPv6 transition forms) before the browser is constructed; proxy/DNS-redirecting flags are stripped from extraargs. A legitimate public proxy still works. Honors CRAWL4AIALLOWINTERNALURLS.

Workarounds

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

Credits

Geo (geo-chen) - reported the proxyconfig.server SSRF with a clear PoC.

Other sources

Crawl4AI is an open-source LLM friendly web crawler & scraper. Prior to 0.8.9, the Docker API server applied its SSRF destination check to the crawl target URL only, not to the proxy address. An unauthenticated request could supply a proxy pointing at an internal IP and route the browser through it, reaching internal services and cloud-metadata endpoints, while using a perfectly valid crawl URL. The Docker API is unauthenticated by default. /crawl, /crawl/stream, and /crawl/job accept a browserconfig (and crawlerconfig). The following all feed Chromium's egress and were unchecked: browserconfig.proxyconfig.server, browserconfig.proxy (deprecated field), crawlerconfig.proxyconfig.server, and --proxy-server / --proxy-pac-url / --proxy-bypass-list / --host-resolver-rules flags in browserconfig.extraargs. This vulnerability is fixed in 0.8.9.

MITRE

Affected Software

2 affected componentsFixes available
pip/crawl4ai<=0.8.8
0.8.9
Kidocode Crawl4ai<0.8.9

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade pip/crawl4ai to a version that resolves this vulnerability.

    Fixed in 0.8.9
  2. Upgrade

    Upgrade to a fixed release to a version that resolves this vulnerability.

    Fixed in 0.8.9
  3. Configuration

    Enable authentication by setting CRAWL4AI_API_TOKEN so unauthenticated requests to the Docker API (e.g., /crawl, /crawl/stream, /crawl/job) are rejected.

    Crawl4AI Docker API / crawling endpoint CRAWL4AI_API_TOKEN = Enable authentication
  4. Configuration

    Ensure browser_config.proxy_config.server is not set to internal IPs; proxy destinations must be validated with the same global-routability check used for crawl target URLs (reject any resolved address that is not is_global, including IPv6 transition forms) before constructing the browser.

    browser_config (proxy settings) browser_config.proxy_config.server = Only allow globally routable destinations
  5. Configuration

    Avoid/stop using the deprecated browser_config.proxy field (and proxy/DNS-redirecting flags in browser_config.extra_args) since they are the proxy inputs that can feed Chromium egress; ensure they are stripped/ignored.

    browser_config (deprecated proxy field) browser_config.proxy = Do not use / strip proxy flags
  6. Configuration

    Ensure crawler_config.proxy_config.server is not set to internal IPs; proxy destinations must be validated with the same global-routability check used for crawl target URLs (reject any resolved address that is not is_global, including IPv6 transition forms) before the browser is constructed.

    crawler_config (proxy settings) crawler_config.proxy_config.server = Only allow globally routable destinations
  7. Configuration

    Do not supply attacker-controlled proxy/DNS-redirecting Chromium flags via browser_config.extra_args (e.g., --proxy-server / --proxy-pac-url / --proxy-bypass-list / --host-resolver-rules); ensure these are stripped before constructing Chromium.

    browser_config.extra_args (Chromium proxy flags) --proxy-server / --proxy-pac-url / --proxy-bypass-list / --host-resolver-rules = Do not set or strip these flags
  8. Compensating control

    Restrict the container's outbound network access (egress firewall / no metadata route) to prevent access to internal services and cloud-metadata endpoints (e.g., block 169.254.169.254).

Event History

Jun 16, 2026
Advisory Published
via GitHub·09:02 PM
Data Sourced
via GitHub·09:02 PM
DescriptionSeverityWeaknessAffected Software
Jun 23, 2026
CVE Published
via MITRE·06:15 PM
Data Sourced
via MITRE·06:15 PM
DescriptionSeverityWeakness
Data Sourced
via NVD·07:17 PM
DescriptionSeverityWeaknessAffected Software

Frequently Asked Questions

1

What is the severity of CVE-2026-53755?

The severity of CVE-2026-53755 is high, with a score of 8.6.

2

What type of vulnerability is identified in CVE-2026-53755?

CVE-2026-53755 is a Server-Side Request Forgery (SSRF) vulnerability.

3

How can CVE-2026-53755 be exploited?

CVE-2026-53755 can be exploited by sending an unauthenticated request with a proxy pointing to an internal IP, allowing access to internal services.

4

What impact does CVE-2026-53755 have on security?

CVE-2026-53755 can potentially expose internal services and cloud-metadata endpoints to unauthorized access.

5

How do I fix CVE-2026-53755?

To fix CVE-2026-53755, ensure that the Docker API server applies proper SSRF checks to both the crawl target URL and the proxy address.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203