
استغلال لثغرة CVE-2026-31431، وهي خلل في نواة لينكس (authencesn) يتيح تصعيد الامتيازات محليًا والهروب من الحاويات عبر كتابة 4 بايتات في ذاكرة التخزين المؤقت للصفحات.
732 بايت للوصول إلى صلاحيات الجذر على كل توزيعات لينكس الرئيسية
CVE-2026-31431 (فشل النسخ) هو خطأ منطقي في قالب التشفير authencesn في نواة لينكس. يسمح لمستخدم محلي غير مميز بتشغيل كتابة حتمية ومضبوطة بحجم 4 بايت في ذاكرة التخزين المؤقت للصفحات لأي ملف قابل للقراءة على النظام.
CONFIG_CRYPTO_AUTHENC (عمليًا جميع التوزيعات الرئيسية منذ 2017)الخطأ يربط سلوكين:
AF_ALG + splice: splice() ينقل صفحات ذاكرة التخزين المؤقت بالمرجع إلى قائمة التشتت الخاصة بمقبس AF_ALG. في وضع فك التشفير في المكان لـ AEAD، تبقى صفحات العلامة (من ذاكرة التخزين المؤقت لصفحات الملف الهدف) مرتبطة بقائمة التشتت الناتجة عبر sg_chain().
كتابة مساحة العمل في authencesn: crypto_authenc_esn_decrypt() يستخدم dst[assoclen + cryptlen] (بعد العلامة، داخل صفحات ذاكرة التخزين المؤقت) كمساحة عمل لإعادة ترتيب رقم تسلسل ESN، ويكتب 4 بايت يتحكم بها المهاجم ولا يستعيدها أبدًا.
الصفحة المتضررة لا تُعلَّم أبدًا كمتسخة، لذا يبقى الملف على القرص دون تغيير. لكن ذاكرة التخزين المؤقت للصفحات في الذاكرة هي ما يُقرأ فعليًا — مما يجعل التلف مرئيًا فورًا على مستوى النظام بأكمله.
الاستغلال يفسد ذاكرة التخزين المؤقت للصفحات لـ /usr/bin/su (أو أي ثنائي setuid) بحمولة شيلكود صغيرة، 4 بايت في كل مرة. بعد كل التكرارات، تشغيل su ينفذ الحمولة ويهبط إلى قشرة جذر.
python3 exp.py
gcc -o exp exp.c
./exp
| القدرة | التفاصيل |
|---|---|
| قابلية النقل |
هذا المستودع نُشر لأغراض تعليمية وبحثية دفاعية فقط. لا تستخدم هذا الكود على أنظمة لا تملكها أو ليس لديك إذن صريح لاختبارها.
| نفس السكربت يعمل على Ubuntu وAmazon Linux وRHEL وSUSE والمزيد — بدون إزاحات خاصة بالتوزيعة |
| صغر الحجم | استغلال بايثون حوالي 732 بايت |
| التخفي | يتجاوز مسار الكتابة في VFS؛ الصفحة لا تُعلَّم أبدًا كمتسخة؛ المجاميع الاختبارية على القرص تبقى دون تغيير |
| عبر الحاويات | ذاكرة التخزين المؤقت للصفحات مشتركة بين الحاويات — ناقل هروب من الحاوية (انظر الجزء 2) |