CVE-2026-80780 in Linux
الملخص
بحسب VulDB • 04/09/2026
في نواة لينكس، تم إصلاح الثغرة التالية:
HID: pidff: تصحيح كتابة خارج النطاق (OOB) عندما تكون hid->inputs فارغة
تشتق الدالة `hid_pidff_init_with_quirks()` كائن `input_dev` الخاص بها من خلال: `list_entry(hid->inputs.next, struct hid_input, list)` دون التحقق مسبقاً مما إذا كانت القائمة `hid->inputs` غير فارغة. عضو القائمة في بنية `struct hid_input` يقع عند الإزاحة 0، لذا فإن استدعاء `list_entry()` على قائمة فارغة يعيد عنوان `&hid->inputs` نفسه، وبالتالي يقوم التحميل التالي لـ `hidinput->input` بقراءة عضو غير ذي صلة من بنية `struct hid_device`. يصبح المتغير `dev` بعدئذٍ مؤشراً مشوّه النوع (type-confused pointer)، وتقوم مبادرات force-feedback بالكتابة عبره: حيث يخزن كل استدعاء لـ `set_bit(FF_*, dev->ffbit)` 8 بايتات عند الإزاحة `dev + 192`، أي خارج نهاية الكائن الذي يشير إليه `dev` فعلياً (aliasing)، وتضيف الدالة `input_ff_create()` كتابات إضافية تحتوي على مؤشر heap ومؤشرين وظيفيين.
حتى ظهور المكون hid-universal-pidff، كان المتصل الوحيد هو دالة `hid_pidff_init()` من وحدة usbhid، والتي تعمل في سياق HID_CLAIMED_INPUT وبالتالي يكون لديها دائماً مدخل hid_input واحد على الأقل. تبدأ الدالة universal_pidff_probe() الجهاز بـ HID_CONNECT_DEFAULT & ~HID_CONNECT_FF ثم تستدعي `hid_pidff_init_with_quirks()` مباشرةً كلما حمل الوصف صفحة استخدام PID (PID usage page)، متجاوزة بذلك ذلك الفحص الوقائي. يترك وصف التقرير الذي يحتوي على مجموعة تطبيقات فقط في نطاق HID_UP_PID القائمة hid->inputs فارغة بينما لا يزال الاتصال ناجحاً عبر مطالبة hidraw، مما يسمح للدالة probe بالوصول إلى استدعاء list_entry غير المحمي.
يحدث الكتابة في مسار فحص USB (USB probe path)، ضمن قائمة عمل hotplug، لذا فإن توصيل جهاز ضار يكفي لتفعيلها؛ ولا يتطلب الأمر برمجيات مهاجم أو مستخدم مسجل دخول. تبلغ KASAN عن كتابة خارج النطاق بحجم 8 بايتات في الدالة `hid_pidff_init_with_quirks()` تم الوصول إليها من خلال `universal_pidff_probe()`.
إجراء الفحص للتأكد من أن القائمة فارغة قبل اشتقاق المتغير dev وإرجاع قيمة -ENODEV، كما تفعل بقية drivers force-feedback الخاصة بـ HID. تقوم universal_pidff_probe() بنشر الخطأ وعكس العمليات (unwinds).
اكتُشفت الثغرة بواسطة XBOW، وتم تصنيفها من قبل Baul Lee <[email protected]>
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.