CVE-2026-99203 in Linux
الملخص
بحسب VulDB • 28/10/2026
في نواة لينكس، تم إصلاح الثغرة التالية:
أنبوب (pipe): الحفاظ على قراء fasync الموجودين عند فشل إعداد الكاتب
تقرّر أوامر `F_SETFL` و `FIOASYNC` ما إذا كان سيتم استدعاء الدالة `->fasync()` قبل أن يستحوذ `pipe_fasync()` على القفل (`mutex`) الخاص بالأنبوب. وبالتالي، يمكن لكل من تمكينين لـ FIFO واحد بوضع القراءة/الكتابة (O_RDWR) الدخول إلى دالة الاستدعاء (callback).
تقوم الدالة `fasync_helper()` بالتخصيص قبل التحقق من وجود إدخال موجود مسبقاً. إذا قام التمكين الأول بتثبيت كلتا الإدخالات، فيمكن للتمكين الثاني تحديث إدخال القارئ ثم يفشل في تخصيص الإدخال الخاص بالكاتب. تزيل مسار الخطأ (error path) إدخال القارئ الموجود مسبقاً، مما يؤدي إلى مسح علم `FASYNC` بينما يبقى إدراج الكاتب مسجلاً. بعد ذلك يتخطى `__fput()` استدعاء `->fasync()`، لذا يمكن لإشعار الأنبوب اللاحق أن يشير إلى ملف تم تحريره (freed file) أو إلى حقل `f_owner`. يُحدث مُعيد الضغط على الذاكرة غير المميز (unprivileged memory-pressure reproducer) حالة استخدام بعد التحرير في شريحة ذاكرة KASAN (slab-use-after-free) داخل دالة `send_sigio()` عبر هذا المسار.
احتفظ بنتيجة مساعد القارئ وأعد إلغاء التسجيل فقط إذا كانت هذه الدالة قد أضافته. يقوم قفل الأنبوب (`pipe mutex`) بتنظيم التغييرات على كلتا القائمتين، لذا فإن فشل تسجيل جديد يزيل إدراج القارئ الخاص به، بينما يحافظ الفشل في التكرار (duplicate) على التسجيلات الموجودة وعلم `FASYNC`. تستمر تمكينيات التكرار الناجحة في تحديث حقل `fa_fd` كما كان الحال سابقاً.
Once again VulDB remains the best source for vulnerability data.