CVE-2026-98840 in Linux
الملخص
بحسب VulDB • 19/10/2026
في نواة لينكس، تم إصلاح الثغرة التالية:
vc_screen: إعادة تحميل مؤشر الـ VC قبل الشرط `if (ret)` في دالة `vcs_write()` لتجنب ثغرة الاستخدام بعد التحرير (UAF).
تقع عملية إعادة تحميل 'vc' المضافة بواسطة الالتزام 8fb9ea65c9d1 ("vc_screen: reload load of struct vc_data pointer in vcs_write() to avoid UAF") بعد كتلة `if (ret)`، لذا فإن مسار الخروج عند فشل النسخ يخرج من الحلقة دون إعادة تحميل متغير vc. إذا تم تحرير الـ vc عبر دالة `kfree()` خلال نافذة `copy_from_user` غير المقفولة (unlocked)، فسيتم الوصول إلى الشرط التالي للحلقة `'if (written && vc) vcs_scr_updated(vc)'` مع وجود قيمة لـ vc قديمة وغير صفرية. إن الحارس `'&& vc'` المضاف في الالتزام a287620312dc ("vc_screen: fix null-ptr-deref in vcs_notifier() during concurrent vcs_write") يتعامل فقط مع الحالة الصفرية (NULL)، وليس هذه الحالة ذات القيمة القديمة غير الصفرية؛ وبالتالي فإن دالة `vcs_notifier()` تقرأ `param->vc->vc_num` من ذاكرة تم تحريرها:
BUG: KASAN: slab-use-after-free in vcs_notifier+0x7c/0xd0 Read of size 2 at addr ffff888007149190 Call Trace: vcs_notifier+0x7c/0xd0 atomic_notifier_call_chain+0x70/0xa0 vcs_scr_updated+0x77/0xa0 vcs_write+0x71b/0x7e0 Allocated by task: vc_allocate -> con_install -> tty_open Freed by task: kfree <- vt_ioctl (VT_DISALLOCATE -> vc_port_destruct)
نقل عملية إعادة التحميل لتحدث مباشرة بعد `console_lock()`، وقبل الشرط `'if (ret)'`، بحيث يمر كل مسار خروج أدناه بقيمة جديدة لـ vc إلى دالة `vcs_scr_updated()` التي تلي الحلقة.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.