
uproot <= 5.7.4 में ROOT TStreamerInfo मेटाडेटा से असुरक्षित Python स्रोत जनरेशन के माध्यम से कोड इंजेक्शन।
गंभीरता: उच्च, CVSS 4.0 8.5, CVSS 3.1 7.8 (CNA, VulnCheck द्वारा निर्धारित)
वेक्टर (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
CNA: VulnCheck
प्रकाशित: 18 जुलाई, 2026
uproot 5.7.4 और उससे पहले के संस्करण ROOT TStreamerInfo मेटाडेटा से Python क्लास सोर्स गतिशील रूप से उत्पन्न करते हैं और इसे रनटाइम पर संकलित करते हैं।
कुछ फ़ाइल-नियंत्रित स्ट्रीमर मेटाडेटा फ़ील्ड को सुरक्षित उद्धरण के बिना उत्पन्न Python सोर्स में इंटरपोलेट किया जाता है। एक हमलावर जो एक क्राफ्टेड ROOT फ़ाइल प्रदान कर सकता है, वह स्ट्रीमर मेटाडेटा में Python एक्सप्रेशन-ब्रेकिंग सामग्री इंजेक्ट कर सकता है, जैसे कि एक क्राफ्टेड एलिमेंट नाम।
जब कोई प्रभावित एप्लिकेशन क्राफ्टेड ROOT फ़ाइल खोलता है और uproot संबंधित रीडर विधि उत्पन्न करके उसे आमंत्रित करता है, तो इंजेक्ट किया गया Python एक्सप्रेशन होस्टिंग प्रोसेस के संदर्भ में निष्पादित हो सकता है।
एक हमलावर उन एप्लिकेशनों में मनमाना Python कोड निष्पादित कर सकता है जो प्रभावित uproot कोड पथों के साथ हमलावर-नियंत्रित ROOT फ़ाइलें खोलते हैं या संसाधित करते हैं।
एप्लिकेशन के आधार पर, यह निम्न की अनुमति दे सकता है:
समस्या ROOT स्ट्रीमर मेटाडेटा के लिए uproot के उत्पन्न-स्रोत पथ में है।
PoC एक ROOT फ़ाइल बनाता है जिसमें ExploitTarget क्लास के लिए क्राफ्टेड TStreamerInfo मेटाडेटा होता है। क्राफ्टेड स्ट्रीमर एलिमेंट नाम उत्पन्न एक्सप्रेशन से बाहर निकलकर एक हानिरहित 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 मेटाडेटा को सत्यापित करें या अस्वीकार करें।| दिनांक | घटना |
|---|
Sai Teja Erukude द्वारा खोजा और रिपोर्ट किया गया, VulnCheck के माध्यम से समन्वित।
| May 20, 2026 | VulnCheck को भेद्यता प्रस्तुत की गई |
| May 20, 2026 | VulnCheck ने आउटरीच शुरू किया; CVE-2026-9147 अस्थायी रूप से आवंटित किया गया |
| July 5, 2026 | uproot 5.7.5 पैच के साथ जारी किया गया |
| July 18, 2026 | CVE-2026-9147 प्रकाशित |