
uproot <= 5.7.4 में ROOT TStreamerInfo मेटाडेटा से असुरक्षित Python स्रोत जनरेशन के माध्यम से कोड इंजेक्शन।
गंभीरता: उच्च, CVSS 4.0 8.5, CVSS 3.1 7.8 (VulnCheck, CNA द्वारा निर्धारित)
वेक्टर (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
वेक्टर (v3.1): CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
प्रभावित: uproot <= 5.7.4
में ठीक किया गया: 5.7.5 / कमिट c045c28
CWE: CWE-94 (कोड जनरेशन का अनुचित नियंत्रण, कोड इंजेक्शन); द्वितीयक CWE-95 (Eval इंजेक्शन)
खोजकर्ता और रिपोर्टर: Sai Teja Erukude
प्रकाशित: 18 जुलाई, 2026
uproot 5.7.4 और उससे पहले के संस्करण ROOT TStreamerInfo मेटाडेटा से गतिशील रूप से Python क्लास स्रोत उत्पन्न करते हैं और उसे रनटाइम पर कंपाइल करते हैं।
कुछ फ़ाइल-नियंत्रित स्ट्रीमर मेटाडेटा फ़ील्ड को सुरक्षित कोटिंग के बिना उत्पन्न Python स्रोत में इंटरपोलेट किया जाता है। एक हमलावर जो एक तैयार किया गया ROOT फ़ाइल प्रदान कर सकता है, वह स्ट्रीमर मेटाडेटा में Python एक्सप्रेशन को तोड़ने वाली सामग्री इंजेक्ट कर सकता है, जैसे कि एक तैयार किया गया एलिमेंट नाम।
जब कोई प्रभावित एप्लिकेशन तैयार की गई ROOT फ़ाइल खोलता है और uproot संबंधित रीडर मेथड उत्पन्न करके उसे इनवोक करता है, तो इंजेक्ट किया गया Python एक्सप्रेशन होस्टिंग प्रोसेस के संदर्भ में निष्पादित हो सकता है।
एक हमलावर उन एप्लिकेशन में मनमाना Python कोड निष्पादित कर सकता है जो प्रभावित uproot कोड पाथ के साथ हमलावर-नियंत्रित ROOT फ़ाइलें खोलते या प्रोसेस करते हैं।
एप्लिकेशन के आधार पर, यह निम्नलिखित की अनुमति दे सकता है:
यह समस्या ROOT स्ट्रीमर मेटाडेटा के लिए uproot के जनरेटेड-सोर्स पाथ में है।
PoC एक ExploitTarget क्लास के लिए तैयार किया गया TStreamerInfo मेटाडेटा युक्त ROOT फ़ाइल बनाता है। तैयार किया गया स्ट्रीमर एलिमेंट नाम जनरेट किए गए एक्सप्रेशन से बाहर निकलता है और एक सौम्य pathlib कॉल इंजेक्ट करता है।
रिपोर्ट किया गया व्यवहार इस प्रकार है:
TStreamerInfo मेटाडेटा पढ़ता है।ExploitTarget के लिए Python क्लास स्रोत उत्पन्न करता है।read_members मेथड को इनवोक करने पर इंजेक्ट किया गया एक्सप्रेशन निष्पादित होता है।root_file_builder.py तैयार किए गए स्ट्रीमर मेटाडेटा के साथ malicious_tstreamerinfo.root बनाता है।
run_poc.py uproot के साथ फ़ाइल खोलता है, फ़ाइल-आधारित ExploitTarget क्लास के जनरेशन को बाध्य करता है, जनरेट किए गए read_members मेथड को इनवोक करता है, और मार्कर-फ़ाइल साक्ष्य को सत्यापित करता है।
केवल स्थानीय परीक्षण वातावरण में चलाएँ:
python -m venv .venv
.venv\Scripts\activate
python -m pip install -r requirements.txt
python -B run_poc.py
संवेदनशील संस्करणों पर अपेक्षित प्रमाण:
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
पेलोड जानबूझकर हानिरहित है। यह केवल यह स्थानीय मार्कर स्ट्रिंग लिखता है:
executed through uproot generated read_members
यह शेल स्पॉन नहीं करता, नेटवर्क सेवा से कनेक्ट नहीं होता, सीक्रेट्स नहीं पढ़ता, डेटा नहीं हटाता, या PoC निर्देशिका के बाहर फ़ाइलों को संशोधित नहीं करता।
uproot 5.7.5 या उसके बाद के संस्करण में अपग्रेड करें।
यदि तत्काल अपग्रेड संभव न हो:
TStreamerInfo मेटाडेटा को सत्यापित करें या अस्वीकार करें।| तिथि | घटना |
|---|---|
| 20 मई, 2026 | भेद्यता VulnCheck को सबमिट की गई |
| 20 मई, 2026 | VulnCheck ने संपर्क आरंभ किया; CVE-2026-9147 अस्थायी रूप से आवंटित |
| 5 जुलाई, 2026 | पैच के साथ uproot 5.7.5 जारी |
| 18 जुलाई, 2026 | CVE-2026-9147 प्रकाशित |
Sai Teja Erukude द्वारा खोजा और रिपोर्ट किया गया।
प्रकटीकरण का समन्वय VulnCheck के माध्यम से किया गया।