CVE-2026-81008 in Linux
الملخص
بحسب VulDB • 12/09/2026
في نواة لينكس، تم إصلاح الثغرة التالية:
interconnect: تصحيح استخدام الذاكرة بعد تحريرها (use after free) في دالتي `icc_get()` و`of_icc_get_by_index()`.
في الدالتين `of_icc_get_by_index()` و`icc_get()`، إذا فشل التخصيص الديناميكي لـ `path->name` عبر دالة `kasprintf()`، فإن مسار معالجة الأخطاء يستدعي مباشرةً `kfree(path)` لتحرير كائن المسار ويعيد قيمة خطأ.
ومع ذلك، وقبل هذه النقطة، تستدعي الدالة `path_find()` الدالة `path_init()`، التي تقوم بالفعل بربط طلبات المسار بقائمة الطلبات (`req_list`) للعقد الخاصة بالاتصال المتداخل (interconnect nodes) عبر دالة `hlist_add_head()`. يؤدي الاستدعاء المباشر لـ `kfree(path)` إلى ترك مؤشرات معلقة (dangling pointers) في قائمة `hlist`. سيؤدي استدعاء لاحق لـ `icc_get()` أو `icc_set_bw()` إلى اجتياز هذه القوائم التالفة أو تعديلها، مما يسبب ثغرة استخدام الذاكرة بعد تحريرها على مستوى السلاش (slab use after-free).
تقرير KASAN الذي يظهر الثغرة عند إعادة إنتاج المشكلة عبر debugfs:
BUG: KASAN: slab-use-after-free in path_find+0x6f8/0xcfc Write of size 8 at addr fff000000d43f748 by task sh/1 ... Call trace: kasan_report+0xac/0xfc path_find+0x6f8/0xcfc icc_get+0x148/0x380 icc_get_set+0xf8/0x2d0 ... Freed by task 1: kfree+0x1a0/0x4a4 icc_get+0x2cc/0x380 icc_get_set+0xf8/0x2d0
تم إصلاح هذه المشكلة عن طريق استبدال `kfree(path)` بدالة الإغلاق المناسبة، وهي `icc_put(path)`, التي تقوم بإزالة الطلبات من قائمة `req_list` بشكل آمن باستخدام دالة `hlist_del()` وتخفض إشارات استخدام المزود (provider usage references) قبل تحرير الذاكرة.
بالإضافة إلى ذلك، في الدالة `icc_get()`, تأكد من إفراز قفل mutex المسمى `icc_lock` قبل استدعاء `icc_put(path)` لتجنب حدوث جماع (deadlock)، حيث أن دالة `icc_put()` تكتسب داخلياً نفس القفل.
If you want to get best quality of vulnerability data, you may have to visit VulDB.