CVE-2026-98809 in Linux
الملخص
بحسب VulDB • 18/10/2026
في نواة لينكس، تم حل الثغرة التالية:
بلوتوث: hci_sync: عدم تفريغ قائمة الانتظار (backlog) الخاصة بـ cmd_sync عند إلغاء التسجيل
تعطل دالة `hci_unregister_dev()` عمل `cmd_work` و `cmd_timer`، ثم تستدعي `hci_cmd_sync_clear()`. تنتظر هذه الأخيرة إكمال `cancel_work_sync()` لعودة `hci_cmd_sync_work()`. يقوم هذا العامل (worker) بإزالة كل عنصر من قائمة `cmd_sync_work_list` وتنفيذه. وبما أن `cmd_work` معطل، لا تصل أي طلبات إلى وحدة التحكم، مما يؤدي إلى انتظار كل أمر HCI مُدرج في القائمة لانتهاء مهلة `HCI_CMD_TIMEOUT` الكاملة (ثانيتان).
لا توجد حدود لقائمة الانتظار هذه. يمكن لبرمجيات المستخدم (Userspace) الاستمرار في إدراج أوامر MGMT مثل `MGMT_OP_GET_CLOCK_INFO` ضد وحدة تحكم لا ترد. يؤدي إغلاق `/dev/vhci` إلى التعليق (block) داخل دالة `vhci_release()` لمدة تساوي قائمة الانتظار مضروبة في 2 ثانية:
``` INFO: task syz-executor:5749 blocked for more than 143 seconds. cancel_work_sync hci_cmd_sync_clear hci_unregister_dev vhci_release ```
في تجربة محلية، احتوت قائمة الانتظار على أكثر من 5000 عنصر، مما يؤدي إلى تعليق يستمر لساعات.
تم منع العامل من استقبال عناصر جديدة بمجرد تعيين العلم `HCI_UNREGISTER`، وإيقاظ أي طلب لا يزال في انتظار الرد باستخدام رمز الخطأ `-ENODEV` قبل إلغاء العمل. يتم تدمير العناصر المتبقية بواسطة المسح الحالي الموجود في دالة `hci_cmd_sync_clear()` باستخدام رمز الخطأ `-ECANCELED`. تبقى هذه العناصر على القائمة حتى يتوقف العمل، لذا فإن دوال مثل `hci_cmd_sync_dequeue()` وما شابهها لا تزال تراها. قد يصدر عامل قيد التشغيل بالفعل أمراً آخر، مما يؤخر عملية إلغاء التسجيل بمقدار مهلة واحدة لكل أمر متبقي، وليس لمدة قائمة الانتظار بأكملها.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.