
uproot <= 5.7.4 Code-Injektion durch unsichere Generierung von Python-Quellcode aus ROOT-TStreamerInfo-Metadaten.
Schweregrad: Hoch, CVSS 4.0 8.5, CVSS 3.1 7.8 (vergeben von VulnCheck, der CNA)
Vektor (v4.0): CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Vektor (v3.1): CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
Betroffen: uproot <= 5.7.4
Behoben in: 5.7.5 / Commit c045c28
CWE: CWE-94 (Unsachgemäße Kontrolle der Generierung von Code, Code-Injektion); sekundär CWE-95 (Eval-Injektion)
Gemeldet von: Sai Teja Erukude
CNA: VulnCheck
Veröffentlicht: 18. Juli 2026
uproot und frühere Versionen generieren dynamisch Python-Klassenquellcode aus ROOT--Metadaten und kompilieren ihn zur Laufzeit.
5.7.4TStreamerInfoEinige dateigesteuerte Streamer-Metadatenfelder werden ohne sichere Quotierung in den generierten Python-Quellcode interpoliert. Ein Angreifer, der eine manipulierte ROOT-Datei bereitstellen kann, kann ausdruckbrechenden Inhalt in Streamer-Metadaten injizieren, beispielsweise einen manipulierten Elementnamen.
Wenn eine betroffene Anwendung die manipulierte ROOT-Datei öffnet und uproot die entsprechende Read-Methode generiert und aufruft, kann der injizierte Python-Ausdruck im Kontext des Host-Prozesses ausgeführt werden.
Ein Angreifer kann beliebigen Python-Code in Anwendungen ausführen, die angreiferkontrollierte ROOT-Dateien mit betroffenen uproot-Codepfaden öffnen oder verarbeiten.
Je nach Anwendung kann dies Folgendes ermöglichen:
Das Problem liegt im generierten-Quellcode-Pfad von uproot für ROOT-Streamer-Metadaten.
Der PoC erstellt eine ROOT-Datei, die manipulierte TStreamerInfo-Metadaten für eine ExploitTarget-Klasse enthält. Der manipulierte Streamer-Elementname bricht aus dem generierten Ausdruck aus und injiziert einen harmlosen pathlib-Aufruf.
Das gemeldete Verhalten ist:
TStreamerInfo-Metadaten.ExploitTarget.read_members-Methode führt den injizierten Ausdruck aus.root_file_builder.py erstellt malicious_tstreamerinfo.root mit manipulierten Streamer-Metadaten.
run_poc.py öffnet die Datei mit uproot, erzwingt die Generierung der dateigestützten ExploitTarget-Klasse, ruft die generierte read_members-Methode auf und überprüft die Marker-Datei-Nachweise.
Nur in einer lokalen Testumgebung ausführen:
python -m venv .venv
.venv\Scripts\activate
python -m pip install -r requirements.txt
python -B run_poc.py
Erwartete Nachweise bei verwundbaren Versionen:
uproot_version: 5.7.4
file_backed_element_name_contains_payload: True
class_code_contains_injected_pathlib_call: True
expected_exception: True
exception_type: DeserializationError
marker_exists: True
marker_contents:
executed through uproot generated read_members
success: True
Der Payload ist absichtlich harmlos. Er schreibt lediglich diese lokale Marker-Zeichenfolge:
executed through uproot generated read_members
Er startet keine Shell, verbindet sich nicht mit einem Netzwerkdienst, liest keine Geheimnisse, löscht keine Daten und ändert keine Dateien außerhalb des PoC-Verzeichnisses.
Aktualisieren Sie auf uproot 5.7.5 oder höher.
Wenn ein sofortiges Update nicht möglich ist:
TStreamerInfo-Metadaten vor der Verarbeitung.| Datum | Ereignis |
|---|---|
| 20. Mai 2026 | Schwachstelle bei VulnCheck eingereicht |
| 20. Mai 2026 | VulnCheck nahm Kontakt auf; CVE-2026-9147 vorläufig vergeben |
| 5. Juli 2026 | uproot 5.7.5 mit Patch veröffentlicht |
| 18. Juli 2026 | CVE-2026-9147 veröffentlicht |
Entdeckt und gemeldet von Sai Teja Erukude, koordiniert über VulnCheck.