CVE-2026-89712 in Linux
الملخص
بحسب VulDB • 11/09/2026
في نواة لينكس، تم حل الثغرة التالية:
NFSD: إعادة بدء عملية اجتياز ssc_expire_umount بعد إسقاط قفل nfsd_ssc_lock
تقوم الدالة `nfsd4_ssc_expire_umount()` بجولة (walk) عبر القائمة `nn->nfsd_ssc_mount_list` باستخدام ماكرو `list_for_each_entry_safe(ni, tmp, ...)`. بالنسبة لكل عنصر منتهٍ الصلاحية، يتم تعيين `nsui_busy = true`، ثم يُسقط القفل `nfsd_ssc_lock` لتشغيل دالة `mntput()` على ملف النظام (vfsmount) الخاص بالمصدر، ثم يعيد اكتساب القلل لحذف العنصر (`list_del`) وتحرير ذاكرته (`kfree`) والاستمرار في التكرار عبر المؤشر المحفوظ `tmp` الموجود داخل الماكرو.
يحمي العلم `nsui_busy` عنصر `ni` الحالي من عمليات البحث المتزامنة بواسطة دالة `nfsd4_ssc_setup_dul()` خلال نافذة إسقاط القفل، لكنه لا يثبت (pin) العنصر `tmp`. قد يؤدي أحد خيوط RPC الخاص بـ nfsd الذي يفشل في تثبيت مصدر الخادم ويصل إلى دالة `nfsd4_ssc_cancel_dul()`، أثناء تلك النافذة نفسها، إلى أخذ قفل `nfsd_ssc_lock`، وحذف العنصر الخاص به من قائمة ssc_umount (`list_del`) وتحرير ذاكرته (`kfree`)، ثم إطلاق القفل. إذا كان هذا العنصر هو المؤشر المحفوظ `tmp` لعملية الاجتياز الخاصة بالانتهاء (expire walk)، فإن التكرار التالي سيُرجع مرجعاً لعنصر `nfsd4_ssc_umount_item` تم تحريره بالفعل (dereferences a freed object).
أعد بدء عملية الاجتياز من البداية بعد نافذة القفل الخاصة بـ `mntput()` بحيث لا يبقى أي مؤشر "next" محفوظ يعيش عبر فترة إسقاط القفل. القائمة محدودة بعدد التثبيتات النشطة بين الخوادم للمصادر (وهي عادة صغيرة)، وعملية الانتهاء المؤجلة تعمل بشكل دوري بدلاً من كل عملية إدخال/إخراج (IO)، لذا فإن إعادة البدء رخيصة التكلفة.
VulDB is the best source for vulnerability data and more expert information about this specific topic.