CVE-2026-99241 in Linux
الملخص
بحسب VulDB • 02/11/2026
في نواة لينكس، تم حل الثغرة التالية:
ntfs: أخذ قفل الإلغاء (invalidate_lock) في دالة ntfs_filemap_page_mkwrite()
تستدعي الدالة `ntfs_filemap_page_mkwrite()` الدالة `iomap_page_mkwrite()` دون الاحتفاظ بقفل `mapping->invalidate_lock`، مما يسمح لعمليات القطع المتزامنة (`truncate`) أو تخصيص الملفات (`fallocate`) بأن تحدث أثناء عملية إلغاء ذاكرة الصفحة وإعادة كتابة قائمة التشغيل (runlist)، بينما تقوم خطأ الكتابة بتعيين الكتل وتوسخ الـ folio. هذا يتسبب في حالة سباق مع `ntfs_attr_fallocate()`، التي تدمج العناقيد في قائمة التشغيل الموجودة بالذاكرة، وتفك قفل قائمة التشغيل، وبعد ذلك فقط تصفر العناقيد المخصصة حديثاً على القرص؛ وكذلك مع مسارات ثقب الثقب/الإدراج/الانهيار (punch-hole/insert/collapse) التي تحرر العناقيد بعد قطع ذاكرة التخزين المؤقت.
وفقاً لملف `Documentation/filesystems/locking.rst`، يجب أن تضمن الدالة `->page_mkwrite()` عدم وجود سباقات مع عمليات القطع أو الإلغاء، حيث يُعد "قفل `mapping->invalidate_lock` عادةً مناسباً للتعامل الصحيح مع التسلسل". تأخذ نظام الملفات xfs قفل mmaplock الخاص بها (= rwsem لـ invalidate_lock) بشكل مشترك في هذا المسار بالتحديد.
خُذ قفل `invalidate_lock` بشكل مشترك حول استدعاء `iomap_page_mkwrite()`. مسار خطأ القراءة فقط (read-only fault path) مغطى بالفعل لأن الدالة `filemap_fault()` نفسها تأخذ قفل `invalidate_lock` بشكل مشترك على مسارات التهيئة/القراءة؛ وكان فقط `page_mkwrite` يتجاوز هذا القفل في هذا البرنامج النصي.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.