CVE-2024-10569: Gradio: zip bomb DoS via dataframe CSV upload
GHSA-7xmc-vhjp-qv5q HIGH PoC AVAILABLE CISA: TRACK*Any Gradio deployment exposing a dataframe component to untrusted users is vulnerable to a trivial unauthenticated crash via zip bomb upload. Patch to a version beyond 5.0.0b2 or add file-size limits at the reverse proxy immediately. Risk is low for internal-only deployments; critical for public-facing ML demos or inference UIs.
Risk Assessment
CVSS 7.5 HIGH with AV:N/AC:L/PR:N/UI:N — no authentication required, network-exploitable, low complexity. EPSS 0.00158 indicates minimal active exploitation observed. Not in CISA KEV. Real-world risk is moderate: Gradio is widely used to expose ML models as quick demos, and many deployments are public-facing with minimal hardening. The impact is confined to availability (no data exfiltration), but server crashes can disrupt production inference endpoints.
Affected Systems
Severity & Risk
Attack Surface
Recommended Action
5 steps-
Patch: upgrade Gradio beyond the affected range (>=4.0.0, <=5.0.0b2). No patched version is listed in NVD yet — monitor github.com/gradio-app/gradio for a release and pin to it immediately.
-
Workaround: enforce upload file-size limits at the reverse proxy (nginx: client_max_body_size 1m).
-
Workaround: disable file upload on Dataframe components if CSV ingestion is not required (set type='array' instead of 'filepath').
-
Network control: restrict Gradio endpoints to authenticated users or internal networks only.
-
Detection: alert on unusually large multipart/form-data uploads to Gradio routes (/upload, /queue/join). Monitor for sudden memory spikes or process restarts on Gradio workers.
CISA SSVC Assessment
Source: CISA Vulnrichment (SSVC v2.0). Decision based on the CISA Coordinator decision tree.
Classification
Compliance Impact
This CVE is relevant to:
Frequently Asked Questions
What is CVE-2024-10569?
Any Gradio deployment exposing a dataframe component to untrusted users is vulnerable to a trivial unauthenticated crash via zip bomb upload. Patch to a version beyond 5.0.0b2 or add file-size limits at the reverse proxy immediately. Risk is low for internal-only deployments; critical for public-facing ML demos or inference UIs.
Is CVE-2024-10569 actively exploited?
Proof-of-concept exploit code is publicly available for CVE-2024-10569, increasing the risk of exploitation.
How to fix CVE-2024-10569?
1. Patch: upgrade Gradio beyond the affected range (>=4.0.0, <=5.0.0b2). No patched version is listed in NVD yet — monitor github.com/gradio-app/gradio for a release and pin to it immediately. 2. Workaround: enforce upload file-size limits at the reverse proxy (nginx: client_max_body_size 1m). 3. Workaround: disable file upload on Dataframe components if CSV ingestion is not required (set type='array' instead of 'filepath'). 4. Network control: restrict Gradio endpoints to authenticated users or internal networks only. 5. Detection: alert on unusually large multipart/form-data uploads to Gradio routes (/upload, /queue/join). Monitor for sudden memory spikes or process restarts on Gradio workers.
What systems are affected by CVE-2024-10569?
This vulnerability affects the following AI/ML architecture patterns: ML demo platforms, model serving, inference UI.
What is the CVSS score for CVE-2024-10569?
CVE-2024-10569 has a CVSS v3.1 base score of 7.5 (HIGH). The EPSS exploitation probability is 0.47%.
Technical Details
NVD Description
A vulnerability in the dataframe component of gradio-app/gradio (version git 98cbcae) allows for a zip bomb attack. The component uses pd.read_csv to process input values, which can accept compressed files. An attacker can exploit this by uploading a maliciously crafted zip bomb, leading to a server crash and causing a denial of service.
Exploitation Scenario
An unauthenticated attacker identifies a public-facing Gradio application — common for ML model demos on Hugging Face Spaces or self-hosted inference UIs. The attacker crafts a zip bomb (e.g., a recursive ZIP with 1 KB compressed → 1 GB expanded) and submits it as the CSV file input to a Dataframe component via the Gradio HTTP API. The server calls pd.read_csv on the upload, which decompresses the payload in memory. Memory exhaustion causes the Python process to crash or the host to OOM-kill it, taking the inference endpoint offline. The attack requires no credentials, no special knowledge of ML, and is repeatable — the attacker can loop the request to prevent recovery.
Weaknesses (CWE)
CVSS Vector
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H References
Timeline
Related Vulnerabilities
CVE-2023-25823 9.8 Gradio: hardcoded SSH key leaks via share=True demos
Same package: gradio CVE-2024-47167 9.8 Gradio: unauthenticated SSRF in /queue/join, internal pivot
Same package: gradio CVE-2024-39236 9.8 Gradio: code injection via component metadata (CVSS 9.8)
Same package: gradio CVE-2024-0964 9.4 Gradio: unauthenticated LFI exposes full server filesystem
Same package: gradio CVE-2023-34239 9.1 Gradio: path traversal + SSRF exposes model files & infra
Same package: gradio
AI Threat Alert