Description
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.
Published: 2026-07-18
Score: 8.5 High
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The vulnerability originates in uproot's dynamic generation of Python class source from ROOT TStreamerInfo records. The software unquotes metadata such as streamer element names when inserting them into the generated code. An attacker can supply a crafted ROOT file containing Python expression‑breaking content in these fields. When uproot constructs and executes the reader methods, the injected expression is evaluated in the context of the calling process, enabling arbitrary Python code execution.

Affected Systems

Affected parties include users of the scikit‑hep uproot library version 5.7.4 and earlier. The bug is triggered when opening or processing a ROOT file that contains malicious TStreamerInfo metadata. The issue is present in all code paths that dynamically compile reader classes from file metadata. Switching to a newer uproot release that contains the commit c045c282… protects against this attack.

Risk and Exploitability

Severity is high with a CVSS score of 8.5. The EPSS score is reported as <1%, indicating a low exploitation probability under current data. The vulnerability is not listed in the CISA KEV catalog. Because the exploitation requires a user‑controlled ROOT file and a runtime environment that imports uproot, the likely attack vector is a compromised or malicious input file processed by an application. The risk is therefore significant for systems that automatically ingest or open untrusted ROOT files.

Generated by OpenCVE AI on July 30, 2026 at 23:11 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade to the latest uproot release that includes the commit c045c282 that escapes metadata fields during code generation.
  • Limit the use of ROOT files to trusted sources and validate file integrity before processing.
  • Isolate applications that use uproot in a restricted environment, such as a dedicated virtual environment or container with minimal privileges.

Generated by OpenCVE AI on July 30, 2026 at 23:11 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Thu, 23 Jul 2026 21:45:00 +0000

Type Values Removed Values Added
First Time appeared Scikit-hep
Scikit-hep uproot
Vendors & Products Scikit-hep
Scikit-hep uproot

Tue, 21 Jul 2026 03:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'total'}, 'version': '2.0.3'}


Sat, 18 Jul 2026 13:00:00 +0000

Type Values Removed Values Added
Description 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.
Title uproot 5.7.4 and prior Code Injection via TStreamerInfo Metadata
Weaknesses CWE-94
References
Metrics cvssV3_1

{'score': 7.8, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H'}

cvssV4_0

{'score': 8.5, 'vector': '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'}


Subscriptions

Scikit-hep Uproot
cve-icon MITRE

Status: PUBLISHED

Assigner: VulnCheck

Published:

Updated: 2026-08-06T20:05:50.291Z

Reserved: 2026-05-20T21:05:14.933Z

Link: CVE-2026-9147

cve-icon Vulnrichment

Updated: 2026-07-21T02:32:06.336Z

cve-icon NVD

No data.

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-07-30T23:15:06Z

Weaknesses
  • CWE-94

    Improper Control of Generation of Code ('Code Injection')