Miggo Logo

CVE-2025-28197: Crawl4AI SSRF vulnerability

9.1

CVSS Score
3.1

Basic Information

EPSS Score
0.13337%
Published
4/18/2025
Updated
4/21/2025
KEV Status
No
Technology
TechnologyPython

Technical Details

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
Package NameEcosystemVulnerable VersionsFirst Patched Version
Crawl4AIpip<= 0.4.247

Vulnerability Intelligence
Miggo AIMiggo AI

Miggo AIRoot Cause Analysis

The vulnerability is an SSRF in 'crawl4ai/async_dispatcher.py'. I analyzed the provided code for this file. The SSRF occurs because user-supplied URLs are passed to a web crawling mechanism (likely 'self.crawler.arun()') without proper validation. The functions 'MemoryAdaptiveDispatcher.crawl_url' and 'SemaphoreDispatcher.crawl_url' are directly responsible for taking a URL string and initiating the crawl. The 'run_urls' and 'run_urls_stream' methods in these respective classes take lists of URLs and then call their corresponding 'crawl_url' methods, making them part of the vulnerable execution path if a malicious URL is included in the list. These functions are identified as vulnerable because they are the points within 'async_dispatcher.py' where the untrusted URL is handled and passed to the component that makes the external network request. Since no patch information was available, the analysis is based on the structure of the fetched code and the vulnerability description.

Vulnerable functions

Only Mi**o us*rs **n s** t*is s**tion

WAF Protection Rules

WAF Rule

*r*wl**I <=*.*.*** is vuln*r**l* to SSR* in /*r*wl**i/*syn*_*isp*t***r.py.

Reasoning

T** vuln*r**ility is *n SSR* in '*r*wl**i/*syn*_*isp*t***r.py'. I *n*lyz** t** provi*** *o** *or t*is *il*. T** SSR* o**urs ****us* us*r-suppli** URLs *r* p*ss** to * w** *r*wlin* m****nism (lik*ly 's*l*.*r*wl*r.*run()') wit*out prop*r v*li**tion. T*