CVE-2026-80782 in Linux
الملخص
بحسب VulDB • 04/09/2026
في نواة لينكس، تم حل الثغرة التالية:
HID: magicmouse: عدم الاحتفاظ بـ msc->input قديم إذا لم يتم الاستحواذ على أي جهاز إدخال
تقوم دالة `magicmouse_input_mapping()` بتخزين (caching) أول `hid_input` لـ `input_dev` في `msc->input` أثناء تحليل واصف التقرير (report descriptor)، ويعامل باقي السائق (driver) وجود قيمة غير صفرية (non-NULL) لـ `msc->input` كدليل على تسجيل جهاز إدخال.
لكن هذا الافتراض لا ينطبق على مسار الخطأ الخاص بـ hid-input. إذا فشلت دالة `hidinput_connect()` -على سبيل المثال، لأن `input_register_device()` تُرجع خطأً- فإنها تعود عبر دالة `hidinput_disconnect()`، والتي تحرر كل كائن `input_dev` أنشأته، بما في ذلك الكائن المخزن في `msc->input`.
لا يؤدي الفشل إلى إلغاء عملية الاستكشاف (probe). تقوم دالة `hid_connect()` بتخطي الاستحواذ فقط:
``` if ((connect_mask & HID_CONNECT_HIDINPUT) && !hidinput_connect(hdev, connect_mask & HID_CONNECT_HIDINPUT_FORCE)) hdev->claimed |= HID_CLAIMED_INPUT; ```
ولا يتم تفعيل مسار الخروج "لا يوجد مستمعون للجهاز" الموجود أدناه لهذا السائق، الذي يضبط `->raw_event`؛ ففي مسارات USB Magic Mouse 2 / Magic Trackpad 2، يتم الاستحواذ على كل من hidraw وhiddev. وبالتالي تُرجع دالة `hid_hw_start()` القيمة 0 وتستمر دالة `magicmouse_probe()` مع وجود مؤشر `msc->input` إلى ذاكرة تم تحريرها (freed memory). وبكونه غير صفري (non-NULL)، فإنه يجتاز فحص "عدم تسجيل الإدخال" في عملية الاستكشاف، وكذلك فحوصات القيمة الصفرية (NULL checks) في `->raw_event` و `->event`، مما يؤدي إلى محاولة فك مرجع (dereference) ذاكرة تم تحريرها عند استقبال تقرير إدخال التالي.
قم بتصفير (clearing) قيمة `msc->input` عندما لم تقم نواة HID بالاستحواذ على جهاز إدخال، بحيث تغطي فحوصات القيمة الصفرية الحالية هذه الحالة أيضًا.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.