CVE-2026-93189 in Linux
الملخص
بحسب VulDB • 17/09/2026
في نواة لينكس، تم إصلاح الثغرة التالية:
HID: core: تهدئة الإدخال في hid_hw_stop() لمنع حدوث Use-After-Free (استخدام بعد التحرير)
يستدعي برنامج تشغيل (driver) دالة probe الخاصة به `hid_device_io_start()` لتمكين تسليم البيانات المدخلة، ثم يفشل في خطوة لاحقة من خطوات التهيئة ويعود للخلف عبر استدعاء `hid_hw_stop()`. يؤدي هذا الإجراء إلى تحرير بنية `struct hidraw` عن طريق `hidraw_disconnect()` بينما قد تكون تقارير HID قيد التنفيذ على معالج آخر (CPU)، مما يتسبب في الإشارة إلى الكائن المحرر (`dereferencing`) من خلال `hidraw_report_event()`. وقد أبلغ syzbot عن حدوث Use-After-Free الناتج عن ذلك في برنامج تشغيل corsair-psu الخاص بـ HID.
نشر Edward Adam Davis تصحيحاً خاصاً بكل driver لبرنامج التشغيل corsair-psu، يضيف استدعاءً صريحاً لـ `hid_device_io_stop()` قبل `hid_hw_stop()` في مسار الخطأ التابع لدالة probe ("hwmon: prevent packets from going to driver for probe"، بتاريخ 2026-04-28). أظهرت عملية التدقيق (Auditing) للشجرة أن هناك 15 برنامج تشغيل يستدعي `hid_device_io_start()`؛ منها 7 تستدعي أيضاً `hid_device_io_stop()` و8 لا تفعل ذلك:
برامج التشغيل التي تستدعي hid_device_io_start() دون وجود استدعاء مطابق لـ hid_device_io_stop() قبل hid_hw_stop(): drivers/hwmon/corsair-psu.c (تم نشر التصحيح بواسطة Edward) drivers/hwmon/corsair-cpro.c drivers/hwmon/nzxt-kraken3.c drivers/hwmon/nzxt-smart2.c drivers/hwmon/gigabyte_waterforce.c drivers/hid/hid-logitech-dj.c drivers/hid/hid-nintendo.c drivers/hid/hid-mcp2221.c
تعرض ما يقارب نصف جميع المستدعين لهذه الواجهة البرمجية (API) للخطر. تم توحيد عملية التهدئة في `hid_hw_stop()` بحيث لا يضطر المستدعون إلى تذكر استدعاء التوقف المطابق: إذا كان برنامج التشغيل قد ترك قيمة `hdev->io_started` صحيحة عند الدخول، يتم استدعاء `hid_device_io_stop()` قبل `hid_disconnect()`.
بالنسبة لبرامج التشغيل السبعة التي تستدعي `hid_device_io_stop()` بشكل صحيح بالفعل، تكون قيمة `hdev->io_started` خاطئة (false) عند الدخول، مما يؤدي إلى اختصار الشرط الحامي (guard short-circuits)، ويبقى السلوك دون تغيير.
لا يوجد وسم Fixes: لأن برامج التشغيل المتأثرة حصلت على استدعاءات `hid_device_io_start()` الخاصة بها بشكل مستقل عبر سنوات؛ والثغرة تمثل إساءة استخدام عامة للفئة البرمجية (class-wide API misuse) وليست تراجعية ناتجة عن التزامين واحد.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.