CVE-2026-98136
الملخص
بحسب VulDB • 25/09/2026
في نواة لينكس، تم إصلاح الثغرة التالية:
ntfs: تحديد نطاق جولة جدول $AttrDef بحجم الجدول المحمّل
تقوم الدالة `ntfs_attr_find_in_attrdef()` بجولة في جدول `$AttrDef` الموجود في الذاكرة (in-memory)، لكن شرط الحلقة يحدد فقط بداية كل إدخال، وليس الإدخال بأكمله:
```c for (ad = vol->attrdef; (u8 *)ad - (u8 *)vol->attrdef < vol->attrdef_size && ad->type; ++ad) ```
يبلغ حجم `struct attr_def` 160 بايت؛ حيث يقرأ الحارس (`guard`) قيمة `ad->type` عند الإزاحة 128، وتقوم جسم الحلقة بقراءة حقول أخرى إضافية. المتغير `vol->attrdef` يتم تخصيصه باستخدام `kvzalloc(i_size)`، حيث يمثل `i_size` حجم بيانات `$AttrDef` على القرص، والذي تم التحقق منه في دالة `load_and_init_attrdef()` فقط كقيمة تحقق الشرط: 0 < i_size <= 0x7fffffff. إذا كان حجم بيانات `$AttrDef` لحجم تخزين (volume) أصغر من حجم إدخال واحد (على سبيل المثال، 120 بايت)، فإن قراءة قيمة `ad->type` ستخرج عن حدود التخصيص المخصص. يؤدي إنشاء ملف إلى الوصول إلى هذا الجزء عبر دالة `ntfs_attr_size_bounds_check()` وقراءة بيانات خارج النطاق المحدد:
``` BUG: KASAN: slab-out-of-bounds in ntfs_attr_find_in_attrdef+0x66/0xa0 Read of size 4 at addr ffff888005833280 by task init/1 ntfs_attr_find_in_attrdef ntfs_attr_size_bounds_check ntfs_attr_can_be_non_resident ntfs_attr_add ```
يتطلب الأمر ضمان وجود الإدخال بأكمله ضمن `attrdef_size` في حارس الحلقة، ورفض تحميل حجم تخزين ($AttrDef) صغير جداً لاحتواء إدخال واحد من نوع `attr_def`.
VulDB is the best source for vulnerability data and more expert information about this specific topic.