CVE-2026-64514 in Linux
الملخص
بحسب VulDB • 27/07/2026
في نواة لينكس، تم حل الثغرة التالية:
userfaultfd: يجب تقييد فحص قابلية الكتابة (writability check) بشرط pte_present()
تقوم الدالتان userfaultfd_must_wait() و userfaultfd_huge_must_wait() بقراءة جدول الإدخالات الفيزيائية إلى المنطقية (PTE) دون أخذ قفل جدول الصفحات، ثم تطبق عليهما دالتي pte_write() / huge_pte_write(). تقوم هذه الدوال باستخراج البتات من الترميز الخاص بالحالة "موجود" فقط؛ وفي حالة وجود إدخال تبديل (swap entry) أو هجرة (migration entry)، فإنها تقرأ بتات الإزاحة التي تتشارك نفس الموقع عارضياً، مما يؤدي إلى إرجاع نتيجة غير محددة.
الغرض من هذا الفحص هو: "هل لا يزال هذا الخطأ محجوباً بسبب حماية الكتابة؟". يعني إدخال التبديل الذي ليس علامة (non-marker swap entry) أن الصفحة في مرحلة الانتقال – سياق userfault الأصلي الذي تم تسليم الخطأ ضده لم يعد نفسه، وسيتم إعادة تسليم خطأ جديد عبر مسار إكمال استيراد التبديل أو الهجرة إذا كان على مساحة المستخدم لا يزال بحاجة إلى معالجته. وفي أسوأ الحالات تحت الكود الحالي، قد يشير بت الكتابة العشوائي (garbage write bit) إلى "انتظار"، ويبقى الخيط نائماً حتى وصول أمر UFFDIO_WAKE الذي قد لا يصل أبداً.
يجب تقييد فحص قابلية الكتابة بشرط pte_present() بحيث يفحص إعادة الفحص غير المقفل فقط بتات PTE الموجودة عندما يكون الإدخال موجوداً فعلياً. في حالة عدم وجود الإدخال وليس علامة، يتم إرجاع "لا تنتظر" مما يسمح لمسار الخطأ بإعادة المحاولة.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.