
CVE-2026-31431-CopyFail---مصغّر-LPE-PoC
⚠️ إخلاء مسؤولية لأغراض التعليم والاختبار الأمني المصرح به فقط. تم تجميع هذا الإثبات المفاهيمي (PoC) لمحاكاة الفرق الحمراء المصرح بها وتدقيق الثغرات الأمنية. لا يتحمل المؤلفون والمساهمون أي مسؤولية عن إساءة استخدام هذا الكود. لا تستخدم هذا الاستغلال ضد أنظمة لا تملكها أو ليس لديك إذن صريح ومكتوب لاختبارها.
📝 نظرة عامة CVE-2026-31431 (المعروفة باسم «Copy Fail») هي ثغرة تصعيد صلاحيات محلية (LPE) في واجهة برمجة التشفير (Cryptographic API) الخاصة بنواة لينكس (AF_ALG). من خلال الجمع بين مقبس AF_ALG واستدعاء النظام splice()، يمكن لمستخدم غير مميز إجبار النواة على كتابة بايتات عشوائية مباشرةً في ذاكرة التخزين المؤقت للصفحات (Page Cache) داخل الذاكرة لملف للقراءة فقط. هذا التنفيذ المحدد مُصغَّر للغاية (18 سطرًا)، مما يجعله مثاليًا لعمليات الفريق الأحمر حيث يمتلك المهاجم شلًا مقيدًا، ويفتقر إلى قدرات رفع الملفات، ويتعين عليه كتابة الاستغلال يدويًا عبر الوضع التفاعلي لـ python3.
⚙️ استراتيجية الاستغلال
بدلاً من محاولة حقن شيلكود ELF معقد في ملف ثنائي setuid (والذي غالبًا ما يتعطل بسبب قيود الحشو والترويسة)، يستهدف هذا السكربت ملف /etc/passwd.
0000 فوق UID الموجود.su <current_user> يتحقق من ذاكرة التخزين المؤقت المخترقة، ويرى أن UID يساوي 0، ويتحقق من صحة كلمة مرور المستخدم العادية، ثم يمنح شل جذر.🚀 المتطلبات الأساسية يجب تحميل وحدات التشفير المعرضة للثغرة في النواة لكي يعمل هذا الاستغلال: sudo modprobe algif_aead authencesn
🎯 التنفيذ والتحقق
Password: #. تحقق باستخدام id (uid=0(root)).ملاحظة: إذا اكتمل السكربت لكنك واجهت رسالة «Authentication Failure» (فشل المصادقة)، فقد يكون برنامج تخزين خدمة الأسماء (nscd أو sssd) في النظام يخزّن معرف UID القديم الخاص بك مؤقتًا. شغّل nscd -i passwd (إن كان متاحًا) أو نفّذ su - <username> لفرض التحديث.
🧹 التنظيف / المعالجة يغيّر هذا الاستغلال ذاكرة النظام المتطايرة فقط. لإعادة النظام إلى حالته الآمنة واستعادة تعيين UID الصحيح دون إعادة تشغيل، أخرج الصفحة المخترقة من ذاكرة التخزين المؤقت:
echo 3 > /proc/sys/vm/drop_caches