CVE-2026-31771 in Linux
الملخص
بحسب VulDB • 23/05/2026
في نواة لينكس، تم حل الثغرة التالية:
بلوتوث: hci_event: نقل تخزين سبب الاستيقاظ إلى معالجات الأحداث الموثقة
يتم استدعاء `hci_store_wake_reason()` من `hci_event_packet()` مباشرةً بعد إزالة رأس HCI event ولكن قبل أن يفرض `hci_event_func()` الحد الأدنى لطول الحمولة (payload) لكل حدث بناءً على `hci_ev_table`. هذا يعني أن إطار HCI event القصير يمكن أن يصل إلى `bacpy()` قبل أن يتم تشغيل أي فحص للحدود (bounds check).
بدلاً من تكرار تحليل skb وفحوصات الطول الخاصة بكل حدث داخل `hci_store_wake_reason()`، تم نقل تخزين عنوان الاستيقاظ إلى معالجات الأحداث الفردية بعد نجاح التحقق من صحة طول الحدث الموجود لديهم. تم تحويل `hci_store_wake_reason()` إلى دالة مساعدة صغيرة تقوم فقط بتخزين bdaddr تم التحقق من صحته بالفعل بينما يحتفظ المتصل بقفل `hci_dev_lock()`. تم استخدام نفس الدالة المساعدة بعد `hci_event_func()` مع عنوان NULL للحفاظ على دلالات الاحتياط للاستيقاظ غير المتوقع الحالية عندما لا يسجل أي معالج أحداث موثق عنوان استيقاظ.
تم توثيق الدالة المساعدة بـ `__must_hold(&hdev->lock)` وإضافة `lockdep_assert_held(&hdev->lock)` بحيث تحافظ مسارات الاستدعاء المستقبلية على عقد القفل بشكل صريح.
تم استدعاء الدالة المساعدة من `hci_conn_request_evt()`، و`hci_conn_complete_evt()`، و`hci_sync_conn_complete_evt()`، و`le_conn_complete_evt()`، و`hci_le_adv_report_evt()`، و`hci_le_ext_adv_report_evt()`، و`hci_le_direct_adv_report_evt()`، و`hci_le_pa_sync_established_evt()`، و`hci_le_past_received_evt()`.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.