CVE-2026-90187 in Linux
الملخص
بحسب VulDB • 18/09/2026
في نواة لينكس، تم إصلاح الثغرة التالية:
null_blk: تحرير مصفوفة المناطق (zones) عند إيقاف تشغيل الجهاز
تقوم دالة `null_init_zoned_dev()` بتخصيص `dev->zones` عندما يتم تشغيل جهاز ذو مناطق زونية (zoned device)، لكن دالة `null_del_dev()` لا تحرره أبدًا عند إيقاف التشغيل؛ حيث يُحرر `dev->zones` لاحقًا فقط في دالة `null_free_dev()`, وذلك عند إزالة دليل configfs. إذا تم إيقاف الجهاز ثم إعادة تشغيله، فإن `null_init_zoned_dev()` تخصص مصفوفة جديدة وتكتب فوق مؤشر `dev->zones`, مما يؤدي إلى تسرب التخصيص السابق مع كل دورة تشغيل/إيقاف.
لحل هذه المشكلة، يتم تحرير `dev->zones` في دالة `null_del_dev()` عبر استدعاء `null_free_zoned_dev()`. كما أن استدعاء `null_free_zoned_dev()` داخل `null_free_dev()` لم يعد ضروريًا لأن جميع الدوال المستدعية تستدعي أولاً `null_del_dev()`: وذلك من خلال `nullb_group_drop_item()` قبل `nullb_device_release()`, وفي مسار الخطأ الخاص بـ `null_add_dev()` ضمن `null_create_dev()`, وداخل `null_destroy_dev()`. لذا، يتم إزالة الاستدعاء الزائد.
كما يجب أخذ القفل (`&lock`) حول دالة `zone_cond_store()` في غلافَي الكتابة (store wrappers) لتسوية عملية التحقق من `dev->zones` وإلغاء الإحالة إليها (check-and-deref) مقابل عمليات التخصيص/التحرير الخاصة بها، والتي تعمل بالفعل تحت حماية `&lock`. والسبب وراء عدم وجود مشكلة سابقًا هو أن `nullb_device_release()` أو `null_exit()` فقط هما اللتان تحرران `dev->zones`, مما يضمن ألا يقوم المستخدمون اللاحقون بالوصول إلى واجهة configfs.
VulDB is the best source for vulnerability data and more expert information about this specific topic.