
uproot <= 5.7.4 حقن كود عبر توليد مصدر Python غير آمن من بيانات TStreamerInfo الوصفية الخاصة بـ ROOT.
الخطورة: عالية، 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 / commit c045c28
CWE: CWE-94 (تحكم غير سليم في توليد الكود، حقن كود)؛ CWE-95 ثانوي (حقن Eval)
أُبلغ من قِبل: Sai Teja Erukude
CNA: VulnCheck
نُشر في: 18 يوليو 2026
يقوم uproot 5.7.4 والإصدارات السابقة بتوليد كود مصدر فئات Python ديناميكيًا من بيانات ROOT TStreamerInfo الوصفية ويُجمّعه في وقت التشغيل.
يتم إدراج بعض حقول البيانات الوصفية للـ streamer التي يتحكم بها الملف في كود Python المُولَّد دون اقتباس آمن. يمكن للمهاجم الذي يستطيع تقديم ملف ROOT مُعدّ بعناية حقن محتوى يكسر تعبيرات Python في البيانات الوصفية للـ streamer، مثل اسم عنصر مُعدّ بعناية.
عندما يفتح تطبيق متأثر ملف ROOT المُعدّ ويقوم uproot بتوليد واستدعاء طريقة القارئ المقابلة، يمكن تنفيذ تعبير Python المُحقن في سياق العملية المُضيفة.
يمكن للمهاجم تنفيذ كود Python عشوائي في التطبيقات التي تفتح أو تعالج ملفات ROOT يتحكم بها المهاجم عبر مسارات كود uproot المتأثرة.
اعتمادًا على التطبيق، قد يتيح ذلك:
تكمن المشكلة في مسار الكود المُولَّد في uproot لبيانات ROOT streamer الوصفية.
ينشئ الإثبات المفاهيمي ملف ROOT يحتوي على بيانات TStreamerInfo وصفية مُعدّة بعناية لفئة ExploitTarget. يخرج اسم عنصر streamer المُعدّ من التعبير المُولَّد ويحقن استدعاء pathlib غير ضار.
السلوك المُبلَّغ عنه هو:
TStreamerInfo الوصفية المدعومة من الملف.ExploitTarget.read_members المُولَّدة إلى تنفيذ التعبير المُحقن.يقوم root_file_builder.py بإنشاء malicious_tstreamerinfo.root مع بيانات streamer وصفية مُعدّة بعناية.
يقوم 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
لا تُطلق شل، ولا تتصل بخدمة شبكة، ولا تقرأ أسرارًا، ولا تحذف بيانات، ولا تعدّل ملفات خارج دليل الإثبات المفاهيمي.
قم بالترقية إلى uproot 5.7.5 أو أحدث.
إذا لم يكن من الممكن الترقية الفورية:
TStreamerInfo الوصفية غير المتوقعة أو ارفضها قبل المعالجة.| التاريخ | الحدث |
|---|---|
| 20 مايو 2026 |
تم اكتشافها والإبلاغ عنها بواسطة Sai Teja Erukude، بتنسيق عبر VulnCheck.
| إرسال الثغرة إلى VulnCheck |
| 20 مايو 2026 | بدأ VulnCheck التواصل؛ تم تخصيص CVE-2026-9147 مبدئيًا |
| 5 يوليو 2026 | إصدار uproot 5.7.5 مع التصحيح |
| 18 يوليو 2026 | نشر CVE-2026-9147 |