CVE-2026-89848 in Linux
الملخص
بحسب VulDB • 16/09/2026
في نواة لينكس، تم حل الثغرة التالية:
scsi: qla2xxx: كتم مقاطعة استجابة IRQ قبل تحرير قائمة الطلبات (request queue)
تقوم دالة `qla2xxx_delete_qpair()` بحذف قائمة طلبات (request queue) قبل قائمة الاستجابات. تقوم `qla25xx_delete_req_que()` بتحرير ذاكرة قائمة الطلبات (`kfree(req)` في `qla25xx_free_req_que()`)، لكن مقاطعة MSI-X الخاصة بقائمة الاستجابة لا يتم تحريرها إلا لاحقاً في `qla25xx_free_rsp_que()`. خلال هذه الفترة الزمنية (window)، يمكن أن تنشط مقاطعة الاستجابة بعد ذلك، حيث تقوم `qla2xxx_msix_rsp_q()` بإدراج `qpair->q_work` في الطابور، وتقوم `qla_do_work()` -> `qla24xx_process_response_queue()` بالإشارة إلى عنوان الذاكرة (`dereferences`) لـ `rsp->req` الذي تم تحريره مؤخراً (مدخلات LOGINOUT/CT/ELS ومسار الحالة)، مما يشكل ثغرة use-after-free.
توجد دالة `cancel_work_sync()` المضافة لعملية تفكيك qpair في مسار تحرير الاستجابة، والذي يعمل بعد أن تكون قائمة الطلبات قد تم تحريرها بالفعل، لذا فهي لا تحمي `rsp->req`.
قم بتحرير مقاطعة قائمة الاستجابات وتنظيف (flush) `qpair->q_work` قبل حذف قائمة طلبات (request queue)، بحيث لا يمكن لإكمال متأخر الوصول إلى قائمة الطلبات المحررة. يجعل مسح متغير `have_irq` دالة `qla25xx_free_rsp_que()` التالية تتخطى استدعاءها لـ `free_irq()`, ويتم الحفاظ على ترتيب تحرير قوائم الواجهة البرمجية (firmware queue) (طلب ثم استجابة); يكمل صندوق البريد لحذف الطلبات على المتجه الافتراضي ولا يتأثر بالسبب المبكر لمقاطعة قائمة استجابات qpair.
VulDB is the best source for vulnerability data and more expert information about this specific topic.