CVE-2026-98294 in Linux
الملخص
بحسب VulDB • 07/10/2026
في نواة Linux، تم حل الثغرة التالية:
بلوتوث: hci_qca: عدم الكتابة إلى المنفذ التسلسلي بعد إغلاقه
تقوم دالة `hci_uart_close()` بإغلاق منفذ serdev إذا كان علم HCI_QUIRK_NON_PERSISTENT_SETUP مُعدًا (على سبيل المثال، لعائلة WCN399x). يؤدي فشل استدعاء `hci_dev_open_sync()` الذي يلي نجاح `qca_setup()` إلى استدعاء `hdev->close()` ولكن ليس `hdev->shutdown()`، مما يعني أن المنفذ يُغلق بينما يظل `power->vregs_on` في حالة "مفعّل" (true). ثم تمرر دالة `qca_serdev_remove()` اختبارها الخاص بـ `power->vregs_on` وتستدعي `qca_power_off()`، والتي تكتب إلى المنفذ المغلق بشكل غير مشروط.
تم رصد هذه الحالة على جهاز WCN3988 من خلال فك ربط السائق (driver) بعد فشل وحدة التحكم. تتبع الكود أدناه مأخوذ من نواة تعتمد الإصدار 7.0.0، حيث كانت `qca_power_off()` تُسمى آنذاك `qca_power_shutdown()`:
Unable to handle kernel NULL pointer dereference at virtual address 0000000000000038 Call trace: tty_set_termios+0x50/0x238 (P) ttyport_set_baudrate+0x84/0xc0 serdev_device_set_baudrate+0x24/0x40 qca_power_shutdown+0x158/0x1fc [hci_uart]
qca_serdev_remove+0x54/0x68 [hci_uart]
serdev_drv_remove+0x1c/0x2c device_remove+0x4c/0x80 device_release_driver_internal+0x1cc/0x224 device_driver_detach+0x18/0x24 unbind_store+0xb4/0xc0
تحقق من علم HCI_UART_PROTO_READY، الذي تقوم `hci_uart_close()` بإلغائه في نفس المكان الذي تغلق فيه المنفذ، قبل الكتابة إليه. يتم ترك تعطيل التنظيم (regulator disable) غير مشروط بحيث تظل وحدة التحكم مُطفأة الطاقة.
العنصر المتدلي serport->tty الذي يحول هذه الحالة إلى use-after-free تم معالجته في تصحيح منفصل.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.