Skip to main content

uproot EUVDEUVD-2026-45374

| CVE-2026-9147 HIGH
Code Injection (CWE-94)
2026-07-18 VulnCheck GHSA-98vv-9pqj-g87v
8.5
CVSS 4.0 · Vendor: VulnCheck
Share

Severity by source

Vendor (VulnCheck) PRIMARY
8.5 HIGH
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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
vuln.today AI
7.8 HIGH

Attacker-controlled file must be opened by the victim, so AV:L and UI:R; no auth needed (PR:N), low complexity, and code execution yields full C:H/I:H/A:H with no scope change.

3.1 AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
4.0 AV:L/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
SUSE
HIGH
qualitative

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Attack Vector
Local
Attack Complexity
Low
Privileges Required
None
User Interaction
P
Scope
X

Lifecycle Timeline

3
Source Code Evidence Fetched
Jul 18, 2026 - 13:31 vuln.today
Analysis Generated
Jul 18, 2026 - 13:31 vuln.today
CVE Published
Jul 18, 2026 - 12:46 cve.org
HIGH 8.5

DescriptionCVE.org

uproot dynamically generates Python class source code from ROOT TStreamerInfo records in a file and compiles it at runtime. Some file-controlled streamer metadata fields (for example, streamer element names) are interpolated into the generated Python source without safe quoting via repr() or the !r format specifier. An attacker who can supply a crafted ROOT file can place Python expression-breaking content into a streamer metadata field. When uproot generates and invokes the corresponding reader method, the injected Python expression is evaluated in the context of the process opening the file, resulting in arbitrary Python code execution in applications that open or process attacker-controlled ROOT files with affected uproot code paths.

AnalysisAI

Arbitrary Python code execution in scikit-hep uproot (uproot5) arises because the library dynamically generates and compiles reader classes from a ROOT file's TStreamerInfo records, interpolating file-controlled streamer metadata (such as streamer element names) into generated Python source without repr()/!r safe quoting. A crafted ROOT file can inject expression-breaking content that is evaluated in the process opening the file, giving code execution to whoever processes attacker-supplied ROOT data. Reported by VulnCheck; no public exploit identified at time of analysis, and it is not listed in CISA KEV.

Technical ContextAI

uproot is a pure-Python reader for the CERN ROOT columnar file format widely used in high-energy physics. To deserialize custom C++ classes stored in a ROOT file, uproot reads the embedded TStreamerInfo schema and synthesizes Python reader methods on the fly, then compiles them at runtime. The root cause is CWE-94 (Improper Control of Generation of Code / code injection): several f-strings in src/uproot/streamers.py (the class_code generator) and an eval() in identify.py embedded attacker-influenced metadata - streamer element names, count names, and field names - directly into generated source. Because these values originate entirely from the file rather than trusted code, and were not passed through repr() or escaped, a value containing quote characters or Python expressions breaks out of the intended string literal and executes.

RemediationAI

Upstream fix available (PR/commit); released patched version not independently confirmed - apply the vendor's patched release once identified, tracking GHSA-6946-mq52-g438 (https://github.com/scikit-hep/uproot5/security/advisories/GHSA-6946-mq52-g438) and the fix commit c045c2824295d907d2e705f31110c742928e50e7 which introduces a _sanitize_string() helper, switches generated error messages to the !r (repr) format specifier, and replaces eval() with ast.literal_eval() in identify.py. Until a tagged patched version is confirmed and deployed, do not open or process ROOT files from untrusted or externally-supplied sources with vulnerable uproot code paths; where files must be ingested, run uproot inside an isolated sandbox or unprivileged container with no network egress and minimal filesystem access so that any injected code cannot pivot (trade-off: added pipeline complexity and latency). Validate provenance of ROOT files (restrict to trusted producers) as a compensating control, accepting that this does not stop a compromised upstream producer. Cite the exact fixed version from the vendor advisory when patching; do not assume a version number not published by the vendor.

More in Python

View all
CVE-2025-24016 CRITICAL POC
9.9 Feb 10

Wazuh SIEM platform versions 4.4.0 through 4.9.0 contain an unsafe deserialization vulnerability in the DistributedAPI t

CVE-2025-27520 CRITICAL POC
9.8 Apr 04

BentoML version 1.4.2 and earlier contains an unauthenticated remote code execution vulnerability through insecure deser

CVE-2025-2945 CRITICAL POC
9.9 Apr 03

pgAdmin 4 contains critical remote code execution vulnerabilities in the Query Tool download and Cloud Deployment endpoi

CVE-2013-5093 MEDIUM POC
6.8 Sep 27

The renderLocalView function in render/views.py in graphite-web in Graphite 0.9.5 through 0.9.10 uses the pickle Python

CVE-2025-32375 CRITICAL POC
9.8 Apr 09

BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Rated critica

CVE-2014-0224 HIGH POC
7.4 Jun 05

OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph

CVE-2024-21644 HIGH POC
7.5 Jan 08

pyLoad download manager version prior to 0.5.0b3.dev77 exposes the Flask SECRET_KEY through an unauthenticated endpoint.

CVE-2026-33017 CRITICAL POC
9.3 Mar 17

Langflow (a visual LLM pipeline builder) contains a critical unauthenticated code execution vulnerability (CVE-2026-3301

CVE-2017-9462 HIGH POC
8.8 Jun 06

In Mercurial before 4.1.3, "hg serve --stdio" allows remote authenticated users to launch the Python debugger, and conse

CVE-2026-39987 CRITICAL POC
9.3 Apr 08

Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/

CVE-2024-21645 MEDIUM POC
5.3 Jan 08

pyLoad is the free and open-source Download Manager written in pure Python. Rated medium severity (CVSS 5.3), this vulne

CVE-2026-55255 HIGH POC
8.4 Jun 19

Cross-user flow execution in Langflow (< 1.9.1) lets any authenticated API-key holder run another user's flow by passing

Vendor StatusVendor

SUSE

Severity: Important

Share

EUVD-2026-45374 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy