CVE-2026-97478 in Linuxالمعلومات

الملخص

بحسب VulDB • 24/09/2026

في نواة Linux، تم حل الثغرة التالية:

virt: acrn: إصلاح استخدام بعد التحرير (use-after-free) لـ irqfd أثناء إيقاف eventfd

يمكن أن يتسبب `acrn_irqfd_deassign()` وإيقاظ EPOLLHUP الخاص بـ eventfd في سباق (race condition) يؤدي إلى تحرير نفس هيكل البيانات `struct hsm_irqfd`:

CPU0 CPU1 ---- ---- eventfd_release() wake_up_poll(EPOLLHUP) hsm_irqfd_wakeup() queue_work(&irqfd->shutdown) acrn_irqfd_deassign() hsm_irqfd_shutdown() list_del_init() eventfd_ctx_remove_wait_queue() eventfd_ctx_put() kfree(irqfd) hsm_irqfd_shutdown_work() container_of(work, ..., shutdown) irqfd->vm <-- use-after-free

قام مسار deassign بتحرير irqfd بينما كان عنصر عمل الإيقاف (shutdown work item) قد تم جدولته بالفعل بواسطة EPOLLHUP (أو العكس)، مما يعني أن عنصر العمل يمكنه إحياء مؤشر معلق من خلال `container_of()`.

التبديل إلى نموذج العمر المستخدم في KVM irqfds:

- لا يؤدي deassign/deinit إلا إلى تعطيل irqfd: إزالة ذلك من vm->irqfds تحت قفل irqfds_lock وجدولة عمل التنظيف. - يصبح `hsm_irqfd_shutdown_work()` المالك الوحيد الذي يفصل إدخال قائمة انتظار eventfd، ويقلل مرجع eventfd ويطهر irqfd. - يضمن وجود بت جديد باسم HSM_IRQFD_FLAG_SHUTDOWN محمي بواسطة test_and_set_bit() أن يتم جدولة عمل التنظيف مرة واحدة على الأكثر، بغض النظر عن عدد مرات تشغيل {EPOLLHUP, deassign, deinit} بشكل متزامن. هذا آمن للاستدعاء من استدعاء قائمة الانتظار، الذي يعمل مع الاحتفاظ بـ wqh->lock وإيقاف مقاطعات IRQ (IRQs disabled)، وبالتالي لا يمكنه أخذ irqfds_lock.
- يقوم `acrn_irqfd_deassign()` بإفراغ vm->irqfd_wq قبل الإرجاع بحيث يتم فصل eventfd تمامًا عند العودة. ويقوم `acrn_irqfd_deinit()` بتعطيل كل irqfd، وإفراغ قائمة العمل (workqueue)، ثم تدميرها فقط، لذا لا يمكن لأي مسار جدولة عمل () على workqueue تم تفكيكه. - يقوم `acrn_irqfd_assign()` الآن بتثبيت إدخال قائمة انتظار eventfd ونشر irqfd إلى vm->irqfds تحت قفل irqfds_lock، بحيث لا يكون irqfd مرئيًا لـ deassign/deinit قبل أن يكون إدخاله في قائمة الانتظار موجودًا، وأي EPOLLHUP يعمل خلال نافذة التعيين يجمع عمل التنظيف الذي ينتظر القفل حتى يتم الانتهاء من النشر.

Be aware that VulDB is the high quality source for vulnerability data.

مسؤول

Linux

حجز

24/09/2026

إفشاء

24/09/2026

الاعتدال

تمت الموافقة

إدخال

VDB-409633

EPSS

0.00000

KEV

لا

النشاطات

منخفض جدًا

المصادر

Want to stay up to date on a daily basis?

Enable the mail alert feature now!