Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
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.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-31431 — Reproduktionsanalyse von CVE-2026-31431, in C angepasster Exploit. | Kitploit
Tools/GitHubGitHub/hulnothutu/cve-2026-31431
Privilege EscalationExploit-FrameworksSchwachstellenanalyseExploitationShellcodeLernen & BildungPayload-EntwicklungContainer-AusbruchBinary-Exploitation
GitHubhulnothutu/cve-2026-31431

CVE-2026-31431

Reproduktionsanalyse von CVE-2026-31431, in C angepasster Exploit.

3vor 3 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Repository anzeigen

CVE-2026-31431

Struktur

root@kitploit:~
.
├── container
│   ├── container.md  # Ansätze für Container-Escape
│   ├── expenv  # Container-Umgebung
│   │   ├── bin
│   │   │   ├── gscontainer
│   │   │   └── share
│   │   ├── Dockerfile
│   │   ├── run.sh
│   │   └── src
│   │       ├── gscontainer.c
│   │       └── share.c
│   ├── images
│   │   ├── container.png
│   │   ├── getshell.png
│   │   ├── host.png
│   │   ├── payload.png
│   │   └── share.png
│   ├── recode.bin  # Einphasiges Shellcode
│   └── stager
│       ├── shell.elf  # Zweiphasiges Shellcode, eingebettet in den Exploit 
│       ├── stager1.bin
│       ├── stager2.bin
│       ├── stager3.bin
│       └── stager4.bin
├── doc
│   ├── cve-2026-31431.md  # xint.io Analysezusammenfassung
│   └── shellcode.md  # Einführung in Shellcode 
├── exp.py # curl http://copy.fail/exp -o exp.py 
├── README.md
├── success
│   ├── code.py  # Aus exp.py extrahiertes Shellcode 
│   └── exploit.c # In C minimierter Exploit, enthält natives msf-Privilege-Escalation-Shellcode (muss selbst entschärft werden)
└── test
    ├── exptest.c # Kommentare entfernt
    └── test.c # Korrekt mit Kommentaren, zum leichteren Verständnis

Unvorhergesehene Schnittmenge von drei Commit-Ketten

Drei einzeln harmlose Commits ergeben nach Kombination eine Schwachstelle:

Ausnutzungsablauf (exp)

root@kitploit:~
splice(Datei → Pipe → AF_ALG)
    ↓
af_alg_sendmsg: Seiten der Datei-Page-Cache → TX SGL (Zero-Copy)
    ↓
_aead_recvmsg: In-Place-Optimierung
   ├─ memcpy_sglist: Kopiert AAD+Chiffretext in RX SGL
   ├─ sg_chain: Tag-Seite (zeigt immer noch auf Datei-Page-Cache) in RX SGL eingekettet
   └─ req->src = req->dst (= scatterlist, das die Page-Cache-Seiten der Datei enthält)
    ↓
crypto_authenc_esn_decrypt: ESN-Neuanordnung
   └─ scatterwalk_map_and_copy(tmp+1, dst, assoclen+cryptlen, 4, 1)
      ↓ Iteriert durch dst scatterlist bis zur Tag-Position
      ↓ kmap_local_page() bildet Page-Cache-Seite der Datei ab
      ↓ memcpy: Schreibt seqno_lo in die Page-Cache-Seite der Datei
    ↓
HMAC-Verifikation schlägt fehl → Rückgabe -EBADMSG
    ↓
Die Page-Cache-Seite der Datei wurde verändert, der Kernel markiert die Seite nicht als schmutzig, die Datei auf der Festplatte bleibt unverändert

Betroffene Systeme für CVE-2026-31431

Das Paper behauptet, dass seit 2017 "nahezu alle Linux-Distributionen" betroffen sind. Da der Page-Cache über Container hinweg gemeinsam genutzt wird, ist die Schwachstelle sowohl ein lokaler Privilege-Escalation- (LPE) als auch ein Container-Escape-Vektor.

Fix für CVE-2026-31431

Der Kernel-Mainline-Fix-Commit a664bf3d603d setzt AF_ALG-AEAD-Operationen auf Out-of-Place (getrennte src und dst) zurück:

root@kitploit:~
Before: aead_request_set_crypt(..., rsgl_src,
                                areq->first_rsgl.sgl.sgt.sgl, ...)
                                ^  src == dst  ^

After:  aead_request_set_crypt(..., tsgl_src,
                                areq->first_rsgl.sgl.sgt.sgl, ...)
                                ^  src ≠ dst  ^  (TX SGL für src, RX SGL für dst)

Commit-Nachricht: "There is no benefit in operating in-place in algif_aead since the source and destination come from different mappings."

Sofortmaßnahme:

root@kitploit:~
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif-aead.conf
rmmod algif_aead

Oder via Seccomp-Richtlinie das Erstellen von AF_ALG-Sockets verbieten (socket(AF_ALG, ...)).


Zusammenfassung


Referenzen

https://xint.io/blog/copy-fail-linux-distributions

https://github.com/0xShe/CVE-2026-31431

Tool herunterladen
ZeitCommitAuswirkung
2011a5079d084f8bauthencesn wird hinzugefügt, verwendet dst scatterlist als temporären Speicher für die ESN-Neuanordnung. Zu diesem Zeitpunkt harmlos – da das alte AEAD-Interface AAD getrennt hält und der einzige Aufrufer der Kernel-xfrm ist.
2015104880a6b470authencesn wird auf das neue AEAD-Interface umgestellt, was das Schreiben von seqno_lo "über die Ausgabegrenze" an assoclen+cryptlen einführt. Noch nicht ausnutzbar – da AF_ALG den Out-of-Place-Modus verwendet, sind req->src und req->dst getrennt, und die Page-Cache-Seiten befinden sich nur im schreibgeschützten src.
201772548b093ee3AF_ALG In-Place-Optimierung. Kopiert AAD+Chiffretext von TX SGL in RX-Puffer, verknüpft aber das Tag-Blatt via sg_chain. Setzt req->src = req->dst. Nun befinden sich die per splice eingeführten Page-Cache-Seiten auch im beschreibbaren dst scatterlist. Die Schwachstelle entsteht.
DistributionKernel-VersionBetroffen
Ubuntu 24.04 LTS6.17.0-1007-awsJa
Amazon Linux 20236.18.8-9.213.amzn2023Ja
RHEL 10.16.12.0-124.45.1.el10_1Ja
SUSE 166.12.0-160000.9-defaultJa
EigenschaftQuellcode-VerifizierungBeschreibung
authencesn schreibt seqno_lo ans Endeauthencesn.c:134An assoclen+cryptlen wird seqno_lo (niedrige 32 Bit) geschrieben. Die Beschreibung ist korrekt.
ESN-NeuanordnungskonventionBlog bestätigt (xint.io)AAD-Bytes 0-3 = seqno_hi, Bytes 4-7 = seqno_lo. tmp[1] (=Bytes 4-7=seqno_lo) wird ans Ende geschrieben.
Entschlüsselungspfad stellt überschriebene Bytes nicht wieder herauthencesn.c:270-273 vs 215-217decrypt_tail stellt ESN an Offset 0-7 wieder her, aber nie die ursprünglichen Bytes an assoclen+cryptlen. Der Verschlüsselungspfad (genicv_tail) stellt sie vor dem Schreiben von ICV wieder her.
AF_ALG In-Place-Verschlüsselung/Entschlüsselungalgif_aead.c:189-252rsgl_src und areq->first_rsgl.sgl.sgt.sgl zeigen auf denselben RX SGL.
AF_ALG Tag-Verkettungalgif_aead.c:238-244Bei der Entschlüsselung wird das Tag per sg_chain referenziert, nicht kopiert – bei Splice zeigt die Tag-Seite immer noch auf den Datei-Page-Cache. Ursache der Sicherheitslücke.
Splice Zero-Copy-Übertragungfs/splice.c:876, af_alg.c:1049, lib/scatterlist.c:1167Referenziert direkt Pipe-Seiten, keine Kopie.
CVE-2026-31431Kette aus drei Commitsauthencesn(2011/2015) + in-place(2017) + Splice Zero-Copy = steuerbare Page-Cache-Schreibprimitive.