
# استغلال تصعيد الامتيازات المحلية في لينكس لثغرة CVE-2026-31431 استغلال تصعيد الامتيازات المحلية في لينكس لثغرة CVE-2026-31431، حيث يتم إساءة استخدام واجهة AF_ALG للتشفير مع دالة splice() لتعديل ذاكرة التخزين المؤقت للصفحات (page cache) وتشغيل قشرة بصلاحيات الجذر (root shell).
يحتوي هذا المستودع على PoC صغير لتصعيد الامتيازات محليًا في نظام Linux لثغرة CVE-2026-31431، والمعروفة أيضًا باسم "Copy Fail".
يستهدف الاستغلال مسار algif_aead في نواة Linux ضمن واجهة برمجة التشفير
AF_ALG في مساحة المستخدم. يستخدم AF_ALG مع splice() لإجبار النواة على
الكتابة في ذاكرة التخزين المؤقت للصفحات الخاصة بـ /usr/bin/su على شكل
أجزاء بحجم 4 بايت، ثم ينفذ su بعد تعديل ذاكرة التخزين المؤقت للصفحات.
يقوم الـ PoC في copy_fail_exp.py بأربعة أشياء:
AF_ALG لـ aead مع التحويل
authencesn(hmac(sha256),cbc(aes)).setsockopt() المستخدمة في
إثبات المفهوم الأصلي.splice() لنقل البيانات من الملف الهدف إلى مسار
طلب AF_ALG، وهو مسار النواة المعيب./bin/sh.كتلة zlib ليست بيانات عشوائية. إنها حمولة مدمجة تهدف إلى
استبدال بداية /usr/bin/su في ذاكرة التخزين المؤقت للصفحات بحيث يؤدي
التنفيذ التالي لـ su إلى فتح قشرة بصلاحيات الجذر.
تم إدخال الكود المعيب في تغييرات algif_aead التي تعود إلى عصر نواة Linux
4.14 وظل موجودًا حتى الإصلاح الرسمي الذي يتراجع عن تحسين المعالجة الموضعية.
algif_aead الموضعي المعيب.AF_ALG، وهو الإعداد
الافتراضي في معظم توزيعات Linux ذات الأغراض العامة.| التوزيعة | النواة |
|---|---|
| Ubuntu 24.04 LTS | 6.17.0-1007-aws |
| Amazon Linux 2023 | 6.18.8-9.213.amzn2023 |
| RHEL 10.1 |
6.18.226.19.127.0فروع LTS النهائية آمنة فقط بعد وصول نقل الإصلاح من المورد إلى حزمة النواة التي تشغّلها فعليًا.
استخدم جهاز VM مخبري أو مضيف حاويات تملكه. لا تشغّل هذا على أنظمة الإنتاج.
/usr/bin/su موجود وله صلاحية setuid-root.python3 copy_fail_exp.py
/usr/bin/su ثم يستدعي
su. يجب أن ينتهي بك الأمر في قشرة بصلاحيات الجذر أو ترى موجه جذر،
اعتمادًا على البيئة.لا يحتوي السكربت على تبعيات إضافية تتجاوز مكتبة Python 3 القياسية.
python3 copy_fail_exp.py
إذا كنت تريد فحص الهدف أولاً، فإن السكربت يستخدم حاليًا
/usr/bin/su كهدف افتراضي.
إذا كنت تحافظ على نواة فرعية، فإن الإصلاح الصحيح هو نقل الإصلاح الرسمي الذي يتراجع عن تحسين AEAD الموضعي:
a664bf3d603dc3bdcf9ae47cc21e0daec706d7a572548b093ee3.سير العمل الموصى به لشجرة نواة فرعية:
git cherry-pick a664bf3d603dc3bdcf9ae47cc21e0daec706d7a5
make olddefconfig
make -j"$(nproc)"
make modules_install
make install
reboot
إذا كنت لا تعيد بناء الأنوية بنفسك، قم بتثبيت حزمة نواة المورد التي تحتوي على الإصلاح المنقول وأعد التشغيل عليها.
إذا تأخر التصحيح، قم بتعطيل مسار الوحدة كإجراء مؤقت:
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif-aead.conf
rmmod algif_aead 2>/dev/null
هذا إجراء تخفيف وليس إصلاحًا.
6.12.0-124.45.1.el10_1 |
| SUSE 16 | 6.12.0-160000.9-default |