في القلب Linux تم اكتشاف الثغرة الأمنية الحرجة الخامسة (1، 2، 3) خلال الأسبوعين الماضيين، والتي تسمح للمستخدم برفع مستوى صلاحياته في النظام. وقد نُشرت ثغرتان فعّالتان لاستغلال هذه الثغرة: الأولى، sshkeysign_pwn، التي تسمح لمستخدم غير مخوّل بقراءة محتويات مفاتيح SSH الخاصة بالمضيف /etc/ssh/ssh_host_*_key، والثانية، chage_pwn، التي تسمح لمستخدم غير مخوّل بقراءة محتويات ملف /etc/shadow الذي يحتوي على تجزئات كلمات مرور المستخدمين.
لم يكن الهدف من الكشف عن هذه الثغرة الأمنية، لكن أحد باحثي الأمن تمكن من تحديدها، استنادًا إلى رقعة نواة مقترحة، مما يسمح بقراءة الملفات التي لا يمكن الوصول إليها إلا من قِبل المستخدم الجذر، مثل /etc/shadow. وقد عدّل تغيير النواة منطق استخدام الدالة get_dumpable() في ptrace عند تحديد مستويات الوصول في الدالة ptrace_may_access().
تنشأ هذه الثغرة الأمنية نتيجةً لحالة تضارب تسمح بالوصول غير المصرح به إلى مُعرّف الملف pidfd بعد الوصول إلى ملف من عملية بصلاحيات المستخدم الجذر (suid). فبين فتح الملف وإعادة ضبط الصلاحيات في برنامج suid (على سبيل المثال، عبر الدالة setreuid)، تنشأ حالةٌ يستطيع فيها تطبيقٌ يُشغّل برنامج suid الوصول إلى ملفٍ فتحه برنامج suid عبر مُعرّف الملف pidfd، حتى لو كانت صلاحيات الملف لا تسمح بذلك.
تنشأ الثغرة الأمنية لأن الدالة "__ptrace_may_access()" تتجاهل التحقق من إمكانية الوصول إلى الملف إذا تم تعيين حقل task->mm إلى NULL بعد استدعاء exit_mm() ولكن قبل استدعاء exit_files(). حاليًا، يفترض استدعاء النظام pidfd_getfd أن مُعرّف المستخدم (uid) للعملية المستدعِية يُطابق مُعرّف المستخدم المُصرّح له بالوصول إلى الملف. تجدر الإشارة إلى أن هذه المشكلة قد عُولجت سابقًا في عام 2020، ولكنها لا تزال قائمة.
في الثغرة التي تستغل محتويات الملف /etc/shadow، يتمثل الهجوم في تشغيل تطبيق /usr/bin/chage بشكل متكرر باستخدام fork+execl مع صلاحيات المستخدم الجذر suid، حيث يقوم التطبيق بقراءة محتويات /etc/shadow. بعد تشغيل العملية، يتم استدعاء دالة النظام pidfd_open، ثم يتم التحقق من مُعرّفات pidfd المتاحة عبر استدعاء دالة النظام pidfd_getfd، ويتم التحقق منها عبر الملف /proc/self/fd. في ثغرة sshkeysign_pwn، تُجرى عمليات مماثلة باستخدام برنامج ssh-keysign الذي يعمل بصلاحيات المستخدم الجذر suid.
لم يُخصَّص لهذه المشكلة مُعرِّف CVE بعد، ولم تُنشر تحديثات النواة والحزم في التوزيعات. لا تزال الثغرة الأمنية دون معالجة في نواة 7.0.7 و6.18.30 و6.12.88، التي صدرت قبل ساعات قليلة. في وقت كتابة هذا التقرير، لا يُمكن استخدام سوى الرقعة المُثبَّتة. وتجري مناقشة حلول بديلة مُحتملة، مثل ضبط sysctl kernel.yama.ptrace_scope=3 أو إزالة علامة suid root من الملفات التنفيذية في النظام (على الأقل من أدوات ssh-keysign وchage المُستخدمة في عمليات الاستغلال).
تحديث: تم تخصيص المعرف CVE-2026-46333 للثغرة الأمنية. تم إنشاء تحديثات النواة. Linux تتضمن الإصدارات 7.0.8، و6.18.31، و6.12.89، و6.6.139، و6.1.173، و5.15.207، و5.10.256 إصلاحات للثغرات الأمنية. يمكن الاطلاع على حالة إصلاح الثغرات الأمنية لهذه التوزيعات على الصفحات التالية: Debian, Ubuntu، SUSE/openSUSE، RHEL، Gentoo، Arch، Fedora.
المصدر: opennet.ru
