Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

الخلاصاتاتصالالخصوصية© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
cve-2026-31431-copyfail — تحليل تعليمي لـ CVE-2026-31431، وهو تصعيد محلي للامتيازات في نواة لينكس عبر عملية AF_ALG AEAD في المكان، بما في ذلك السبب الجذري التقني والكشف والتخفيف. | Kitploit
أدوات/GitHubGitHub/darioomatos/cve-2026-31431-copyfail
تصعيد الامتيازاتأطر الاستغلالتحليل الثغرات الأمنيةالاستغلالالأوراق والأبحاثالتعلم والتعليمموارد منسقة
GitHubdarioomatos/cve-2026-31431-copyfail

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

cve-2026-31431-copyfail

تحليل تعليمي لـ CVE-2026-31431، وهو تصعيد محلي للامتيازات في نواة لينكس عبر عملية AF_ALG AEAD في المكان، بما في ذلك السبب الجذري التقني والكشف والتخفيف.

عرض المستودع
123منذ 5 أشهرلم تتم المراجعة بعد

CVE-2026-31431 — "Copy Fail" 🔐

تحليل تقني تعليمي لواحدة من أكثر الثغرات الأمنية أهمية في نواة لينكس منذ Dirty Pipe (2022).
هذا المستودع مخصص لـالبحث والدراسة والدفاع. لا يتم توزيع أي استغلال (exploit) عملي هنا.


الفهرس

  • ما هي؟
  • للمبتدئين: التشبيه
  • الخط الزمني
  • كيف تعمل تقنيًا
  • الـ shellcode المُحلَّل
  • المقارنة مع ثغرات مشابهة
  • الأنظمة المتأثرة
  • هل أندرويد متأثر؟
  • الكشف
  • التخفيف والتصحيحات
  • تطبيقات للدراسة
  • المراجع

ما هي؟

CVE-2026-31431، الملقبة بـ Copy Fail، هي ثغرة تصعيد صلاحيات محلي (LPE — Local Privilege Escalation) في نواة لينكس. تسمح لأي مستخدم بدون صلاحيات بالحصول على وصول root في غضون ثوانٍ.

السمةالقيمة
CVECVE-2026-31431
درجة CVSS7.8 HIGH
النوعتصعيد صلاحيات محلي (LPE)
النظام الفرعيcrypto/algif_aead.c — AF_ALG
أُدخلت فيالنواة 4.14 (commit 72548b093ee3, يوليو 2017)
صُححت في6.18.22 / 6.19.12 / 7.0 (commit a664bf3d603d)
اكتُشفت بواسطةTaeyang Lee — Theori / Xint Code
الإفصاح العام29 أبريل 2026
PoC عامنعم — سكربت Python بحجم ~732 بايت

للمبتدئين: التشبيه

تخيل أن نظام التشغيل لديه ذاكرة عمل (تسمى page cache) يخزن فيها نسخًا من الملفات التي يتم استخدامها. عندما تنفذ برنامجًا، يقوم النظام بتحميل هذا البرنامج في تلك الذاكرة وينفذه من هناك — وليس مباشرة من القرص.

تسمح Copy Fail لمستخدم عادي بتعديل تلك النسخة في الذاكرة لبرنامج خاص (ملف ثنائي setuid، مثل الأمر su) دون لمس الملف الأصلي على القرص. يبقى الملف على القرص سليمًا، لكن عند تنفيذ البرنامج، يقرأ النظام النسخة التالفة من الذاكرة.

إنه مثل تبديل وصفة طبق في ذاكرة طاهٍ بينما هو يطبخ — كتاب الوصفات الأصلي لا يتغير، لكن الطبق الذي يخرج مختلف تمامًا.

النتيجة: البرنامج التالف ينفذ كود المهاجم بصلاحيات root.

ما يجعل هذا خطيرًا بشكل خاص:

  • لا توجد نافذة سباق (race condition) — إنها حتمية (deterministic)
  • لا تترك أثرًا على القرص (التحليل الجنائي للقرص لا يكتشفها)
  • تعمل على جميع توزيعات لينكس تقريبًا منذ 2017
  • الاستغلال الأصلي يتكون من ~700 بايت فقط من Python

الخط الزمني```

2015 → AF_ALG ganha suporte a AEAD (algif_aead.c) authencesn introduz escrita em assoclen+cryptlen (mas ainda out-of-place)

2017 → Commit 72548b093ee3: otimização converte operação para in-place req->src = req->dst → páginas do page cache entram na scatterlist de escrita BUG INTRODUZIDO — passa despercebido por ~9 anos

2026 Mar 23 → Taeyang Lee (Theori) reporta ao time de segurança do kernel Linux Descoberta assistida por IA (Xint Code — ~1h de scan)

2026 Abr 1 → Patch mainline commitado (a664bf3d603d) — reverte a otimização de 2017

2026 Abr 22 → CVE-2026-31431 atribuída

2026 Abr 29 → Divulgação pública + PoC Python liberado Arch Linux, Fedora, Amazon Linux já com patches Ubuntu, RHEL, SUSE publicam guidance de mitigação

2026 Mai 1 → Kernels corrigidos chegam a AlmaLinux, CloudLinux, Rocky Linux Adicionado ao CISA KEV (Known Exploited Vulnerabilities) Exploits em Go e Rust aparecem em repositórios públicos

---

## كيف يعمل تقنيًا

### نظرة عامة على التدفق```
Atacante (usuário sem privilégios)
    │
    ├─ 1. socket(AF_ALG, SOCK_SEQPACKET)
    │       Cria socket de criptografia no kernel
    │       bind: "authencesn(hmac(sha256),cbc(aes))"
    │
    ├─ 2. setsockopt: define chave AEAD + authsize=4
    │
    ├─ 3. accept() → op_socket
    │
    ├─ 4. sendmsg([AAD + ciphertext], cmsg=[DECRYPT, IV, assoclen])
    │       AAD bytes [4:8] = os 4 bytes que queremos ESCREVER no page cache
    │
    ├─ 5. pipe() + splice(arquivo_alvo → pipe → op_socket)
    │       CRÍTICO: injeta páginas do page cache na scatterlist do AF_ALG
    │       As páginas do arquivo agora estão no destino GRAVÁVEL da operação
    │
    ├─ 6. recv() → dispara o authencesn
    │       authencesn::scatterwalk_map_and_copy(seqno_lo, dst, assoclen+cryptlen, 4, WRITE)
    │       Escreve 4 bytes em dst[assoclen + cryptlen]
    │       = escreve DIRETAMENTE no page cache do arquivo-alvo ✓
    │       HMAC falha → retorna EBADMSG → IGNORADO
    │
    └─ 7. Repete (4 bytes por iteração) até cobrir todo o ELF replacement
           Executa o binário alvo → root shell

السبب الجذري: العملية في المكان + sg_chain()

الخلل موجود في crypto/algif_aead.c. في عام 2017، تم تحويل عملية AEAD إلى العمل في المكان لتحسين الأداء:```c // Antes (seguro): req->src e req->dst são scatterlists separadas // Depois (bugado, commit 72548b093ee3): req->src = req->dst; // mesma scatterlist para entrada e saída

// Para a tag de autenticação, em vez de copiar, o código encadeia por referência: sg_chain(areq_ctx->rsgl[0].sg, n, areq_ctx->tsgl); // ↑ As páginas do page cache (vindas do splice) agora estão na scatterlist de SAÍDA

خوارزمية `authencesn` تستخدم المخزن المؤقت الهدف كمساحة عمل مؤقتة لإعادة ترتيب بايتات رقم التسلسل الموسع (ESN) الخاص بـ IPsec:```c
// Em authencesn_decrypt():
scatterwalk_map_and_copy(tmp + 1, dst, assoclen + cryptlen, 4, 1);
//                                       ^^^^^^^^^^^^^^^^^^^^^^^^^
//                                       offset que ultrapassa o output buffer
//                                       e cai nas páginas do page cache encadeadas

لماذا لا يترك أثرًا

تتجاوز الكتابة نظام الملفات الافتراضي (VFS) تمامًا. الصفحة المعدّلة لا تُعلَّم أبدًا كـ dirty بواسطة آلية الكتابة الخلفية (writeback) في النواة. يبقى الملف على القرص سليمًا. أدوات التحقق من التكامل القائمة على التجزئة (aide, tripwire, inotifywait) لا تكتشف شيئًا لأنها تراقب القرص، وليس ذاكرة التخزين المؤقت للصفحات (page cache).


تحليل الشيلكود

يضمّن الاستغلال ملف ELF مصغّرًا بحجم 160 بايت مضغوطًا بـ zlib. بعد فك الضغط، يكون الجزء القابل للتنفيذ:```nasm ; Offset 0x78 no arquivo ELF (entry point)

xor eax, eax ; limpa registradores xor edi, edi ; uid = 0 mov al, 0x69 ; syscall 105 = setuid syscall ; setuid(0) → effective UID = root

lea rdi, [rel bin_sh] ; rdi → "/bin/sh\0" xor esi, esi ; argv = NULL push 0x3b ; syscall 59 = execve pop rax cdq ; rdx = 0 (envp = NULL) syscall ; execve("/bin/sh", NULL, NULL)

; Fallback xor edi, edi push 0x3c ; syscall 60 = exit pop rax syscall ; exit(0)

bin_sh: db "/bin/sh", 0

**بنية ELF الأدنى (إجمالي 160 بايت):**```
Offset 0x00–0x3F  → ELF64 Header (64 bytes)
                    e_type=ET_EXEC, e_machine=EM_X86_64
                    e_entry=0x400078, e_phnum=1

Offset 0x40–0x77  → Program Header PT_LOAD (56 bytes)
                    p_flags=PF_R|PF_X, p_vaddr=0x400000
                    p_filesz=0x9e

Offset 0x78–0x9D  → Shellcode (26 bytes código + "/bin/sh\0")

مقارنة مع ثغرات مشابهة

Dirty Cow (2016)Dirty Pipe (2022)Copy Fail (2026)
CVECVE-2016-5195CVE-2022-0847CVE-2026-31431
النوعحالة سباق في CoWمخزن الأنابيب بدون علاماتخطأ منطقي في AEAD
الموثوقيةيعتمد على السباق (~مللي ثانية)حتميحتمي
أثر على القرصنعم (صفحات متسخة)لالا
قابلية النقلواسعةإصدارات محددةشامل (2017–2026)
حجم الإثبات~50 سطرًا بلغة C~40 سطرًا بلغة C~10 أسطر بلغة Python
النظام الفرعيmm/ (CoW)fs/ (pipe)crypto/ (AF_ALG)
الاكتشافيدوييدويبمساعدة الذكاء الاصطناعي
نافذة الاستغلالنافذة سباقلا توجدلا توجد

الأنظمة المتأثرة

إصدارات النواة:

  • تم الإدخال: Linux 4.14 (يوليو 2017)
  • تم الإصلاح: 6.18.22، 6.19.12، 7.0
تنزيل الأداة