
إثبات مفهوم لاستغلال CVE-2026-31431 (Copy Fail)، وهو ثغرة رفع صلاحيات محلية (LPE) في نواة لينكس عبر تلف ذاكرة التخزين المؤقت للصفحات في algif_aead، مع إرشادات للكشف والمختبر والتخفيف.
██████╗ ██████╗ ██████╗ ██╗ ██╗ ███████╗ █████╗ ██╗██╗
██╔════╝██╔═══██╗██╔══██╗╚██╗ ██╔╝ ██╔════╝██╔══██╗██║██║
██║ ██║ ██║██████╔╝ ╚████╔╝ █████╗ ███████║██║██║
██║ ██║ ██║██╔═══╝ ╚██╔╝ ██╔══╝ ██╔══██║██║██║
╚██████╗╚██████╔╝██║ ██║ ██║ ██║ ██║██║███████╗
╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝╚═╝╚══════╝
algif_aead Page Cache Corruptionalgif_aead⚠️ الاستخدام المصرح به فقط — هذا المستودع مخصص حصريًا لمختبري الاختراق، وباحثي الأمن، والمدافعين الذين يعملون تحت تفويض قانوني. الاستخدام غير المصرح به جريمة جنائية.
| # | القسم | الوصف |
|---|---|---|
| 1 | ما هو Copy Fail؟ | ملخص الثغرة |
| 2 | الغوص الفني العميق | تحليل السبب الجذري |
| 3 | الأنظمة المتأثرة | مصفوفة التوزيعات والنواة |
| 4 | هيكل المستودع | تخطيط الملفات |
| 5 | إعداد المختبر | إعادة الإنتاج بأمان |
| 6 | استخدام الاستغلال | سير عمل اختبار الاختراق |
| 7 | الكشف | YARA، Sigma، نصوص برمجية |
| 8 | التخفيف | التصحيح والتحصين |
| 9 | تقارير اختبار الاختراق | قوالب التقارير |
| 10 | الجوانب القانونية والأخلاقية | إخلاء المسؤولية |
| 11 | المراجع | CVEs، استشارات، مدونات |
Copy Fail هي ثغرة تصعيد امتيازات محلي (LPE) تم الكشف عنها في 29 أبريل 2026، وتؤثر على جميع توزيعات لينكس الرئيسية تقريبًا التي تعمل بأنوية منذ عام 2017.
مستخدم غير مميز ──► AF_ALG + splice() ──► كتابة 4 بايت في ذاكرة التخزين المؤقت للصفحات ──► الجذر (ROOT)
| الخاصية | التفاصيل |
|---|---|
| معرف CVE | CVE-2026-31431 |
| الاسم المستعار | Copy Fail |
| CVSS v3.1 | 7.8 (عالي) |
| ناقل الهجوم | محلي |
| الامتيازات المطلوبة | منخفضة (أي مستخدم غير مميز) |
| تفاعل المستخدم | لا شيء |
| المكتشف | Xint Code (Theori) |
| تاريخ الكشف | 29 أبريل 2026 |
| حجم الاستغلال | 732 بايت (إثبات المفهوم بلغة بايثون) |
| حالة التصحيح | ✅ متوفر — العودة عن الالتزام a664bf3d603d |
تنبع الثغرة من تحسين موضعي معيب تم تقديمه في عام 2017 (commit 72548b093ee3) داخل وحدة algif_aead من واجهة برمجة تطبيقات التشفير في مساحة المستخدم لنواة لينكس (AF_ALG).
AF_ALG (واجهة برمجة تطبيقات التشفير في مساحة المستخدم)
└── وحدة algif_aead
└── قالب authencesn ◄── ضعيف
└── تحسين موضعي (2017)
└── req->src == req->dst ◄── صفحات من splice() مرتبطة بقائمة تشتت قابلة للكتابة لـ dst
الخطوة 1: فتح مقبس AF_ALG AEAD
socket(AF_ALG, SOCK_SEQPACKET, 0)
الخطوة 2: إرسال صفحات splice() تشير إلى الملف الهدف
(صفحات ذاكرة التخزين المؤقت لملف مميز، مثل /usr/bin/sudo)
الخطوة 3: تشغيل الكتابة الخدشية authencesn
يستخدم authencesn مخزن dst المؤقت كلوحة خدش →
يكتب 4 بايت مسيطر عليها بعد منطقة الإخراج الشرعية
الخطوة 4: إدخال ذاكرة التخزين المؤقت للصفحات للملف الهدف أصبح فاسدًا الآن
(ملف القرص لم يمس — فقط النسخة في الذاكرة تم تعديلها)
الخطوة 5: تنفيذ الملف المعدل → الجذر (ROOT)
ذاكرة التخزين المؤقت للصفحات في نواة لينكس تدعم النسخ في الذاكرة للملفات. عند قراءة ملف، يتم تخزين صفحاته مؤقتًا. يمكن لاستدعاء splice() الإشارة إلى هذه الصفحات المخزنة مؤقتًا مباشرة. من خلال تغذية صفحات ذاكرة التخزين المؤقت في قائمة التشتت AF_ALG AEAD، تهبط الكتابة الخدشية authencesn داخل تلك الصفحات المخزنة مؤقتًا، مما يؤدي فعليًا إلى تصحيح النسخة في الذاكرة لأي ملف قابل للقراءة — بما في ذلك الملفات الثنائية المميزة مثل sudo، pkexec، أو passwd.
الإصلاح من المنبع يعكس التحسين المعيب لعام 2017:
# التصحيح في الالتزام: a664bf3d603d
git show a664bf3d603d
| فرع النواة | متأثر؟ | الإصدار المصحح |
|---|---|---|
| 4.9.x (LTS) | ✅ نعم | 4.9.340+ |
| 5.4.x (LTS) | ✅ نعم | 5.4.295+ |
| 5.10.x (LTS) | ✅ نعم | 5.10.239+ |
| 5.15.x (LTS) | ✅ نعم | 5.15.185+ |
| 6.1.x (LTS) | ✅ نعم | 6.1.132+ |
| 6.6.x (LTS) | ✅ نعم | 6.6.83+ |
| 6.12.x (LTS) | ✅ نعم | 6.12.19+ |
| < 4.9 (قبل 2017) | ❌ لا | غير متاح — التحسين غير موجود |
| التوزيعة | الإصدارات المتأثرة | تم التصحيح؟ | الاستشارة |
|---|---|---|---|
| Ubuntu | < 26.04 (جميع الإصدارات) | ✅ مصححة | USN |
| Ubuntu 26.04 (Resolute) | ❌ غير متأثرة | — | — |
| RHEL / CentOS | 7, 8, 9 | ✅ مصححة | RHSA-2026 |
| Amazon Linux | 2, 2023 | ✅ مصححة | ALAS |
| SUSE / openSUSE | جميع المتأثرة | ✅ مصححة | SUSE-SU |
| Debian | Bullseye, Bookworm | ✅ مصححة | DSA |
| CloudLinux | 8, 9 | ✅ مصححة | استشارة |