CVE-2026-64330 in Linux
الملخص
بحسب VulDB • 25/07/2026
في نواة لينكس، تم حل الثغرة التالية:
usb: typec: tcpm: التحقق من صحة فهرس SVID في svdm_consume_modes()
داخل الدالة `svdm_consume_modes()`، يتم قراءة قيمة SVID من مصفوفة `pmdata->svids` باستخدام `pmdata->svid_index` كفهرس للمصفوفة دون إجراء تحقق من الحدود (bounds validation):
paltmode->svid = pmdata->svids[pmdata->svid_index];
إذا تجاوزت قيمة `pmdata->svid_index` الحد الأقصى المحدد لـ SVID_DISCOVERY_MAX (16)، فإن ذلك يؤدي إلى قراءة خارج حدود المصفوفة (out-of-bounds read) لمكون `pmdata->svids`. ونظراً لأن بنية البيانات `pd_mode_data` مدمجة داخل هيكل `struct tcpm_port`، فإن استخدام فهرس يتجاوز نطاق `svids` يؤدي إلى الوصول إلى الحقول المجاورة. وتحديداً: - عند الفهرس 16، يتم قراءة عدد أنماط البديل (altmodes count). - عند الفهارس 18 وما بعدها، يتم القراءة داخل مصفوفة `altmode_desc[]`، والتي تحتوي على بيانات VDO الخاصة بأنماط اكتشاف SVDM التي يوفرها الشريك.
من خلال حقن قيمة SVID مختارة في `altmode_desc[0].vdo` وجعل `svid_index` يصل إلى 20، يمكن للشريك إجبار تحميل المتغير `paltmode->svid` بقيمة SVID اختيارية يختارها الشريك، والتي يتم تسجيلها لاحقاً عبر الدالة `typec_partner_register_altmode()`.
تم إصلاح هذه الثغرة بالتحقق من أن قيمة `pmdata->svid_index` غير سالبة وأقل تماماً من `pmdata->nsvids` قبل الوصول إلى مصفوفة `pmdata->svids` داخل دالة `svdm_consume_modes()`.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.