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

الملخص

بحسب VulDB • 03/11/2026

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

io-wq: ترتيب بت الخروج (exit bit) مقابل مهمة إنشاء عميل العمل (worker creation task work)

تلغي الدالة io_wq_exit_workers() مهام العملاء المجدولة لإنشاء عملاء جدد باستخدام دالة task_work_cancel_match(). وتقوم هذه العملية بقراءة بسيطة لقيمة task->task_works.

تضيف الدالة io_queue_worker_create() الإدخال الجديد وتفحص علامة IO_WQ_BIT_EXIT لإلغائها إذا كانت قائمة العمل (workqueue) في طريقها بالفعل للإغلاق.

يجب أن يكون هذا الترتيب صحيحاً. تحتوي دالة task_work_add() على حاجز ذاكرة كامل (full barrier) عبر استخدام cmpxchg(). لكن الدالة io_wq_exit_start() تضبط البت باستخدام set_bit() والتي لا توفر أي ترتيب للذاكرة (memory ordering).

لذلك، كما أفهم الأمر (afaict)، في المعماريات ذات الترتيب الضعيف للذاكرة (weakly ordered architectures)، قد تقوم المهمة التي تغادر بقراءة task_works قبل أن تصبح قيمة تخزين البت مرئية. والجانب الآخر يفحص البت أيضاً قبل أن تكون القيمة المخزنة مرئية. وبالتالي، يبقى الإدخال مبرمجاً مع worker_refs وتنتظر العملية المغادرة على worker_done إلى ما لا نهاية.

إذا كانت المهمة تحتوي بعد ذلك على حلقات (rings)، فإن الدالة io_uring_del_tctx_node() توفر الحاجز عبر استخدام test_and_set_bit() في io_wq_set_exit_on_idle(). ولكن عندما تغلق جميع الحلقات، يختفي هذا الحاجز.

أضف الحاجز بعد استدعاء set_bit().

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

مسؤول

Linux

حجز

25/09/2026

إفشاء

03/11/2026

الاعتدال

تمت الموافقة

إدخال

VDB-430239

EPSS

0.00000

KEV

لا

النشاطات

منخفض

المصادر

Do you need the next level of professionalism?

Upgrade your account now!