
Copy Fail - CVE-2026-31431 - تنفيذ C مُقوّى لعمليات الفريق الأحمر واختبار الاختراق المصرح به. ⚠️ إشعار قانوني: هذه الأداة مخصصة فقط لأبحاث الأمن المصرح بها، واختبار الاختراق المصرح به، والتحليل الدفاعي. استخدمها على أنظمتك الخاصة أو التي لديك إذن كتابي صريح لاختبارها. الوصول غير المصرح به إلى أنظمة الكمبيوتر غير قانوني.
تطبيق C معزز لعمليات الفريق الأحمر واختبار الاختراق المصرح به.
⚠️ إشعار قانوني: هذه الأداة مخصصة حصريًا لأبحاث الأمن المصرح بها، واختبار الاختراق المصرح به، والتحليل الدفاعي. استخدمها على الأنظمة التي تمتلكها أو لديك إذن كتابي صريح لاختبارها. الوصول غير المصرح به إلى أنظمة الكمبيوتر غير قانوني.
🚀 تم نقل التطوير الرئيسي إلى GitLab.
يتم صيانة هذا المستودع بنشاط هنا. للمشكلات والمساهمات، يرجى استخدام GitLab.
هذا المشروع هو منفذ بلغة C معزز وجاهز للإنتاج لاستغلال رفع الامتيازات المحلي CVE-2026-31431 ("كوبي فشل")، الذي كشف عنه في الأصل Theori و Xint في 29 أبريل 2026.
كان إثبات المفهوم الأصلي مكتوبًا بلغة Python ومصممًا لعرض البحث. يحوله هذا التنفيذ إلى مجموعة أدوات من درجة الفريق الأحمر مع:
| الخاصية | القيمة |
|---|---|
| تاريخ الإفصاح | 29 أبريل 2026 |
| الباحثون | Theori (Jinoh Kang, Yonghwi Jin, Seunghyun Lee), Xint |
| المقال | https://copy.fail/ |
| PoC الأصلي | theori-io/copy-fail-CVE-2026-31431 (Python) |
| منفذ C (أساسي) | tgies/copy-fail-c بواسطة Tony Gies |
| النوى المتأثرة | Linux 4.14 -- 6.14 (قبل إصلاح الالتزام a664bf3d603d) |
| الخطورة | CVSS 7.8 (عالية) -- رفع الامتيازات المحلي |
تقع الثغرة في النظام الفرعي للتشفير AF_ALG في نواة Linux. ينفذ قالب authencesn AEAD تحسينًا داخليًا لفك التشفير: عندما يتم توفير النص المشفر عبر splice() من ذاكرة التخزين المؤقت للصفحات لملف، يعيد النواة استخدام نفس الصفحة كمصدر ووجهة معًا.
تدفق الهجوم:
/usr/bin/su) للقراءة فقطauthencesn(hmac(sha256),cbc(aes)) عبر AF_ALGsplice() من ذاكرة التخزين المؤقت للصفحات للملف الهدفexecve() للهدف -- تقوم النواة بتحميل الصفحات المحورة من ذاكرة التخزين المؤقت، وتمنح صلاحيات جذر setuidالرؤية الأساسية: لا يتم تعديل inode على القرص أبدًا. يتم تحوير ذاكرة التخزين المؤقت للصفحات (page cache) في الذاكرة فقط، مما يجعل الكشف الجنائي أصعب بكثير من استغلالات الكتابة التقليدية على الملفات.
يعمل هذا المشروع على توسيع البحث الأصلي مع تعزيز موجه للفريق الأحمر عبر تسع وحدات.
patch_chunk.c)| الميزة | الأصلي | تنفيذنا |
|---|---|---|
| إدارة المقابس | مقبس جديد لكل قطعة | إعادة استخدام المقبس (~60% استدعاءات نظام أقل) |
| التحقق | لا يوجد | mmap + memcmp مع إعادة محاولة تلقائية (3 محاولات) |
| الكتابة المتوازية | تسلسلي فقط | متوازٍ قائم على fork (حتى 16 عملية) |
| رموز الأخطاء | نجاح/فشل ثنائي | مفصلة: 0=تم التحقق، 1=نواة مرقعة، -1=قاتل |
| تخصيص الذاكرة | malloc في المسار الساخن | فقط المكدس (لا تذبذب تخصيص) |
target_discovery.c)su, sudo, passwd, pkexec, mount, ping، إلخ./snap (setuid غير تقليدي)anti_forensics.c)| التقنية | الغرض |
|---|---|
posix_fadvise(POSIX_FADV_DONTNEED) | إزالة ذاكرة التخزين المؤقت للصفحات لكل ملف |
echo 3 > /proc/sys/vm/drop_caches | إسقاط ذاكرة التخزين المؤقت العالمية (بعد الجذر) |
utimensat() تزوير الوقت | استعادة atime/mtime الأصليين |
| التدمير الذاتي | الكتابة فوق الثنائي المُسقط بالأصفار قبل exec |
| مسح الذاكرة | تصفير المخازن الحساسة باستخدام volatile |
memfd_exec.c)kworker أو anon_inode أو eventfd (يندمج في /proc/$pid/fd/)stage1.c)| القناة | التخفي | السرعة | أولوية الاحتياط |
|---|---|---|---|
| مضمنة | قصوى | فورية | أخيرة (فجوة هوائية) |
| HTTP مباشر | متوسطة | <1 ثانية | أولى |
| نظام curl/wget | منخفضة | 1-3 ثوانٍ | ثانية (دعم HTTPS) |
| DNS TXT | عالية | بطيئة | ثالثة (تجاوز جدار الحماية) |
stage2_template.c)SIGUSR1 (تشغيل)، SIGUSR2 (حالة)، SIGTERM (إيقاف)[kworker/N:0] في ps/topproc_hide.c)/proc/$pid/cmdlineSSH_* وAWS_* وTOKEN* إلخ.setsid() + setpgid() للاستقلال عن الطرفيةsignal_trigger.c)| الوضع | السلوك | حالة الاستخدام |
|---|---|---|
trigger_oneshot() | نوم → تشغيل → تنفيذ → خروج | ضربة واهرب |
trigger_daemon() | نوم → تشغيل → تنفيذ → حلقة | زرع دائم |
trigger_auto() | نوم مع مهلة احتياطية | عمليات بدون مشرف |
انتظار بدون استخدام وحدة المعالجة المركزية: sigsuspend() بدلاً من حلقات الاقتراع.
sleep_jitter.c)getrandom(2) و/dev/urandom وrdtsc احتياطيsleep_scheduled() يحافظ على متوسط الفاصل الزمني على الرغم من التموجcheck_sandbox_acceleration() يكتشف sleep() المرقعة