
إثبات مفهوم لاستغلال CVE-2026-31431، وهي ثغرة تصعيد صلاحيات محلية في نواة لينكس داخل وحدة algif_aead، تتيح للمستخدمين غير المميزين الحصول على صلاحيات الجذر عبر كتابة 4 بايتات في ذاكرة التخزين المؤقت للصفحات.
يحتوي هذا المستودع على إثبات مفهوم (PoC) لاستغلال CVE-2026-31431، وهي ثغرة أمنية عالية الخطورة في نواة لينكس تسمح بترقية الصلاحيات محليًا، حيث تتيح لأي مستخدم محلي غير مميز الحصول على صلاحيات الجذر (root). الخلل، الذي أُطلق عليه اسم "Copy Fail"، يقع في وحدة algif_aead ويمكن ربطه بواجهة المقابس AF_ALG واستدعاء النظام splice() لتنفيذ كتابة محكومة بحجم 4 بايت في ذاكرة التخزين المؤقت للصفحات (page cache) لأي ملف قابل للقراءة، مثل الثنائي setuid الموجود في المسار /usr/bin/su.
تؤثر هذه الثغرة على جميع نواة لينكس تقريبًا التي صدرت منذ عام 2017، بما في ذلك جميع التوزيعات الرئيسية (أوبونتو، دبيان، RHEL، SUSE، أمازون لينكس وغيرها الكثير). تم الكشف عنها علنًا في 29 أبريل 2026. تم إصلاحها في النواة الرئيسية (الالتزام a664bf3d603d)، لكن العديد من الموزعين ما زالوا في طور إصدار نواة مصححة. حتى يتوفر إصدار مصحح من النواة، يُنصح بشدة بتعطيل وحدة النواة algif_aead كإجراء تخفيف مؤقت.
⚠ مهم: هذه المادة مقدمة لأغراض تعليمية وبحوث أمنية مصرح بها فقط. لا تستخدمها ضد أنظمة لا تملكها أو دون إذن صريح.
يحتوي المستودع على تنفيذين لإثبات المفهوم يوضحان الاستغلال من زوايا مختلفة.
copy-fail-poc-short.py — نسخة مصغرة وقريبة من الأصليةنسخة مختصرة تبقى قريبة جدًا من استغلال بايثون المنشور أصلاً. تستخدم أسماء متغيرات من حرف واحد وتحذف التعليقات أو الثوابت، مما يجعلها مضغوطة للغاية (732 بايت). هذا المتغير:
/usr/bin/su ومقبس AEAD خام من نوع AF_ALG.os.splice للنسخ بدون نسخ وسيط (zero-copy) للجزء المقابل بحجم 4 بايت من الملف الهدف./usr/bin/su للوصول إلى قشرة بصلاحيات الجذر.copy-fail-poc.py — نسخة معاد هيكلتها بالكامل وشاملةنسخة معاد كتابتها بالكامل وموثقة جيدًا وتتبع أفضل ممارسات بايثون. هذا المتغير:
send_data_over_crypto_socket()) لعزل المنطق الأساسي.هذه النسخة مثالية لمن يريد فهم الثغرة بعمق أو تكييف الكود لمزيد من البحث.
على مستوى عالٍ، يقوم الاستغلال بما يلي:
setuid (/usr/bin/su).AF_ALG ويكوّنه بالمعاملات المطلوبة لتفعيل الخلل المنطقي.splice() بدون نسخ وسيط.algif_aead، تكتب النواة بشكل خاطئ 4 بايت من البيانات التي يتحكم بها المهاجم في ذاكرة التخزين المؤقت للصفحات الخاصة بالثنائي الهدف./usr/bin/su يرقّع الثنائي فعليًا في وقت التشغيل، مما يسمح لمستخدم غير مميز بتنفيذ نسخة مرقعة تعيد قشرة بصلاحيات الجذر.الاستغلال موثوق للغاية (نسبة نجاح 100%) ولا يتطلب أي نوافذ سباق (race windows) أو إزاحات خاصة بكل نواة.
a664bf3d603d (git.kernel.org)