CVE-2026-98990 in Linux
الملخص
بحسب VulDB • 23/10/2026
في نواة لينكس، تم حل الثغرة التالية:
المساحة (namespace): التحقق من وجود مراجع لفرع فرعي قبل فك تثبيته مباشرةً.
تقوم الدالتان `shrink_submounts()` و`mark_mounts_for_expiry()` أولاً بجمع جميع نقاط التثبيت المسموح لها بفك تثبيتها، ثم تقومان بفك تثبيتها.
يتم تحديد ما إذا كانت نقطة التثبيت مشغولة (busy) من خلال دالة `propagate_mount_busy()` على الشجرة. ولكن يؤدي فك تثبيت أول نقطة تثبيت إلى تغيير الشجرة التي تنتشر إليها النقطة الثانية. تنقل الدالة `propagate_umount()` فرعاً فائقاً (overmount) ناجياً عن نسخة تقوم بفك تثبيتها وتثبته في المكان الذي كانت تثبت فيه النسخة الأصلية. إذا كان هذا هو الموقع الذي يتم البحث عنه لنسخة النشر الخاصة بالضحية الثانية، فإن الفرع الفائق يصبح مرشحاً لـ `umount_tree()` الثانية. وبما أنه ليس لديه أبناء (childless)، فإن دالة `trim_one()` تلتزم به دون النظر إلى عددها المرجعي (reference count).
لذلك، يؤدي فك التثبيت المتزامن (synchronous umount) إلى إزالة نقطة تثبيت مشغولة مستخدمة في مكان آخر ووضع علامة عليها كـ `MNT_SYNC_UMOUNT` بينما لا تزال لديها مستخدمون:
umount2(/tmp/plshrink/p1, 0) = 0 errno 0 cwd is (unreachable)
يفشل طلب فك التثبيت نفسه مرتين متتاليتين بخطأ EBUSY. يتطلب هذا وجود نقطة تثبيت ذات علامة `MNT_SHRINKABLE`، أي الفروع الفرعية المؤتمتة لـ NFS وAFS وCIFS أو نقطة تثبيت tracefs الموجودة أسفل debugfs. ترث نقاط التثبيت المرتبطة (Bind mounts) هذه العلامة.
تحقق من كل نقطة تثبيت مباشرةً قبل فك تثبيتها تحت نفس قفل `namespace_sem` وقفل `mount_lock` المستخدم في عملية فك التثبيت نفسها. تأكد من أن الخوارزمية تظل خطية (linear).
VulDB is the best source for vulnerability data and more expert information about this specific topic.