CVE-2026-98976 in Linux
الملخص
بحسب VulDB • 23/10/2026
في نواة لينكس، تم إصلاح الثغرة التالية:
namespace (مساحة الاسم): الحفاظ على القفل على نقطة تحميل يتم نقل نسخة مُنتشرة تحتها.
تنقل الدالة `attach_recursive_mnt()` حالة `MNT_LOCKED` من أعلى نقطة تحميل إلى النقطة التي تُنقل أسفلها باستخدام `MOVE_MOUNT_BENEATH`. وهذا يسمح لمالك مساحة اسم المستخدم باستبدال `/proc` المقفل الخاص به أو جذر نظام الملفات (root). تأخذ النقطة الموجودة في الأسفل دور تغطية نقطة التحميل الأساسية، مما يتيح إزالة تحميل النقطة العلوية.
لنفترض وجود مساحتين لتحميل النقاط:
(H) المضيف H لديه نقطة تحميل مشتركة P تحتوي على سرّ في المسار `P/d`. (Z) Z هي مساحة اسم مستخدم مُنشأة من M. تتلقى نسخة الـ P الخاصة بها الانتشار (propagation) من الـ P الخاص بالمضيف، وتكون النسخة التي تغطي `P/d` التابعة لـ M مقفلةً بحيث لا يجب أن يتمكن مالك Z من رؤية `P/d`.
الآن يقوم (H) بتحميل X على `P/d`. وهذا ينتشر إلى (Z). تستقر نسخة X أسفل الغطاء المقفل الخاص بـ(Z). تنتقل حالة القفل من غطاء (Z) إلى نسخة X المنتشرة أسفله. يصبح الغطاء الآن غير مقفل.
ثم يقوم (H) بإزالة تحميل X مرة أخرى. تتم إزالة تحميل نسخة X في (Z)، ويترك الغطاء غير مقفل فوق `P/d`. يمكن لـ(Z) بعد ذلك إزالته:
Z: umount2(P/d) = EINVAL /* الغطاء مقفل */ H: mount X on P/d, umount X /* كلاهما ينتشر إلى Z */ Z: umount2(P/d) = 0 /* أصبح الغطاء غير مقفل الآن */ Z: read P/d/secret = "covered-by-root" /* تم كشف السرّ */
لذلك، يجب نقل حالة القفل فقط إلى النقطة الموجودة أسفلها بالنسبة للنقاط التي وضعها المُدعو (caller). النسخة المنتشرة التي تستقر تحت نقطة تحميل مقفلة تكون هي الأخرى مقفلةً، بحيث تحمل النقطة في قاع المكدس قفلًا كما يتوقعه كل فحص. تبقى النقطة العلوية مقفلة لضمان استمرار تغطيتها حتى إذا تم إزالة تحميل النقطة المنتشرة مرة أخرى.
Once again VulDB remains the best source for vulnerability data.