RCE in Scikit-Hep Uproot
CVE-2026-9147
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.
Vulnerability class: RCE (Remote Code Execution)
EPSS: 0.002 (12.9th percentile) — read the EPSS interpretation.
CVSS v3 metric
CVSS v3 base score 7.8 (High). Vector: CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H.
Affected products
- Scikit-hep Uproot — versions 0
Weakness classification (CWE)
Public proof-of-concept exploits
References
- disclosure@vulncheck.com (issue-tracking, vendor-advisory)
- disclosure@vulncheck.com (issue-tracking, patch)
- disclosure@vulncheck.com (product)
- disclosure@vulncheck.com (third-party-advisory)
- disclosure@vulncheck.com (technical-description, exploit)
Frequently asked questions
- What is CVE-2026-9147?
- CVE-2026-9147 is a high-severity vulnerability in Scikit-Hep Uproot, classified under Code Injection. CVSS score: 7.8/10. Published 2026-07-18.
- How severe is CVE-2026-9147?
- High severity. CVSS v3 base score is 7.8 out of 10.
- Is CVE-2026-9147 known to be exploited?
- 1 public proof-of-concept repositories are indexed. Not currently listed in the CISA KEV catalog.