
استغلال Python لثغرة CVE-2026-31431، وهي تصعيد محلي للامتيازات في نواة لينكس عبر AF_ALG و splice() للكتابة إلى ذاكرة التخزين المؤقت للصفحات، مما يمنح صلاحيات الجذر على arm64 و x86.
| العنصر | المحتوى |
|---|---|
| رقم CVE | CVE-2026-31431 |
| اسم الثغرة | Copy Fail |
| نوع الثغرة | رفع صلاحيات محلي في نواة لينكس (LPE) |
| درجة CVSS 3.1 | 7.8 (عالية) |
| CWE | CWE-669: نقل غير صحيح للموارد بين النطاقات |
| النطاق المتأثر | جميع نواة لينكس المبنية بين 2017 وأبريل 2026 |
| CISA KEV | مدرجة، آخر موعد للإصلاح 2026-05-15 |
| تاريخ الإفصاح | 2026-04-29 |
في عام 2017، تم إدخال تحسين على التشفير في المكان (in-place optimization) في وحدة التشفير algif_aead داخل النواة. تسبب هذا التحسين في وضع صفحات ذاكرة التخزين المؤقت (page-cache) بشكل خاطئ في قائمة scatterlist قابلة للكتابة. يمكن للمهاجم من خلال الجمع بين مقبس AF_ALG واستدعاء النظام splice() كتابة بيانات إلى ذاكرة التخزين المؤقت لأي ملف (بما في ذلك الملفات للقراءة فقط المملوكة لـ root).
سلسلة الهجوم: AF_ALG socket ← splice() ← بدائية كتابة إلى page-cache ← التلاعب بذاكرة التخزين المؤقت لملفات setuid الثنائية ← تنفيذ الملف للحصول على صلاحيات root
خصائص الهجوم:
| التوزيعة | إصدار النواة المتأثر |
|---|---|
| Ubuntu 24.04 LTS | 6.17.0-1007-aws |
| Amazon Linux 2023 | 6.18.8-9.213.amzn2023 |
| RHEL 10.1 | 6.12.0-124.45.1.el10_1 |
| SUSE 16 | 6.12.0-160000.9-default |
توزيعات Debian وArch وFedora وRocky وAlma وOracle وغيرها متأثرة أيضًا ضمن نفس نطاق إصدارات النواة.
جميع إصدارات النواة الأقل من إصدارات الإصلاح التالية تعتبر متأثرة:
uname -r
قارن المخرجات مع إصدارات الإصلاح في الجدول أعلاه؛ إذا كان الإصدار أقل، فالنظام متأثر.
# عرض أي اتصالات AF_ALG حالية
lsof | grep AF_ALG
# عرض حالة مقابس AF_ALG
ss -xa | grep alg
lsmod | grep algif_aead
إذا كان هناك مخرجات، فهذا يعني أن الوحدة محمّلة وهناك خطر استغلال.
# استنساخ مستودع PoC
git clone https://github.com/cx330zer0/CVE-2026-31431-Copy-Fail-add-arm64.git
cd CVE-2026-31431-Copy-Fail-add-arm64
# تشغيل PoC (يتطلب هوية مستخدم غير مميز)
python3 copy-fail-dual-arch.py
إذا نجح PoC في الحصول على قشرة root، فهذا يعني أن النظام يحتوي على الثغرة.
| الفرع المستقر | الحد الأدنى لإصدار الإصلاح |
|---|
| 5.10.x | ≥ 5.10.254 |
| 5.15.x | ≥ 5.15.204 |
| 6.1.x | ≥ 6.1.170 |
| 6.6.x | ≥ 6.6.137 |
| 6.12.x | ≥ 6.12.85 |
| 6.18.x | ≥ 6.18.22 |
| 6.19.x | ≥ 6.19.12 |
| 7.0.x | ≥ 7.0-rc7 |