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-23416-POC — POC für CVE-2026-23416 (Linux-Kernel 6.17 – Linux-Kernel 7 rc5) - Schwachstelle entdeckt von Antonius | Kitploit
Tools/GitHubGitHub/bluedragonsecurity/cve-2026-23416-poc
SchwachstellenanalyseExploitationPapers & ForschungLernen & BildungBinary-Exploitation
GitHubbluedragonsecurity/cve-2026-23416-poc

CVE-2026-23416-POC

POC für CVE-2026-23416 (Linux-Kernel 6.17 – Linux-Kernel 7 rc5) - Schwachstelle entdeckt von Antonius

Repository anzeigen
813vor 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

CVE-2026-23416 — PoC

mm/mseal: VMA-Ende bei Zusammenführung korrekt aktualisieren

Schwachstelle entdeckt von Antonius / Blue Dragon Security


Übersicht

FeldDetail
CVE-IDCVE-2026-23416
Subsystemmm/mseal — mm/vma.c
BetroffenLinux-Kernel 6.17 bis 7.0-rc5
Behoben inLinux 7.0-rc6, stabile Backports 6.18.21, 6.19.11
Erforderlicher ZugriffUnprivilegierter Benutzer (UID 1000, keine Capabilities)
Verwendete Syscallsmemfd_create, mmap, mseal
Reproduzierbarkeit100 % deterministisch, < 1 Sekunde
Reserviert2026-01-13
Veröffentlicht2026-04-02

Schwachstellenbeschreibung

Der Fehler liegt in mseal_apply() in mm/mseal.c. Beim Iterieren über VMAs, um den Syscall mseal(2) anzuwenden, verfolgt die Funktion die Position mit curr_start und curr_end:

root@kitploit:~
/* Simplified pre-fix logic */
curr_end = vma->vm_end;
/* ... process VMA ... */
curr_start = curr_end;  /* advance to next VMA */

Das Problem: vma_modify_flags() — während der Iteration aufgerufen — kann VMAs zusammenführen und dabei vma->vm_end direkt ändern. Dadurch wird der curr_end-Wert, der vor der Zusammenführung erfasst wurde, veraltet. Bei der nächsten Iteration wird curr_start auf das nun veraltete curr_end gesetzt, was zu einer falschen Startadresse führt.

In Debug-Kerneln (CONFIG_DEBUG_VM) löst dieser inkonsistente vmg-Zustand Folgendes aus:

root@kitploit:~
VM_WARN_ON_VMG(middle &&
    ((middle != prev && vmg->start != middle->vm_start) ||
     vmg->end > middle->vm_end))

bei mm/vma.c:830 und erzeugt eine Kernel-WARNING.

In Produktionskerneln (WARN als No-Op kompiliert) wird das veraltete curr_start stillschweigend verwendet – das bedeutet, dass VM_SEALED auf einen falschen Adressbereich angewendet werden kann, ohne sichtbaren Fehler, was die Sicherheitsgarantie untergräbt, die mseal(2) bieten soll.

Aufrufpfad

root@kitploit:~
mseal(2)
  └─ do_mseal()              [mm/mseal.c]
       └─ mseal_apply()
            └─ vma_modify_flags()   [mm/vma.c]
                 └─ vma_modify()
                      └─ vma_merge_existing_range()
                           └─ VM_WARN_ON_VMG fires at line 830

Ursache

root@kitploit:~
/* BEFORE fix — mm/mseal.c mseal_apply() */
curr_end = vma->vm_end;           // captured here
/* ... vma_modify_flags() may merge VMAs, changing vma->vm_end ... */
curr_start = curr_end;            // stale! merge is not reflected

Der Fix setzt curr_end = vma->vm_end bedingungslos bei jeder Iteration nach einer möglichen Zusammenführung und beschränkt zusätzlich curr_start/curr_end als const-Werte, die aus dem Eingabebereich und den VMA-Grenzen abgeleitet werden:

root@kitploit:~
/* AFTER fix */
curr_end = vma->vm_end;           // unconditional, always fresh

VMA-Layout während des Auslösens

Das PoC erstellt vor dem zweiten mseal()-Aufruf das folgende Layout:

root@kitploit:~
[0x21da6000 - 0x21de5fff]  VMA-A  (fd2, MAP_SHARED|MAP_FIXED) ← VM_SEALED after step 1
[0x21de6000 - 0x21e82fff]  VMA-B  (fd2, MAP_SHARED|MAP_FIXED) ← NOT sealed
[0x21e83000 - 0x21e84fff]  VMA-C  (leftover)

Der zweite mseal(m2, 0x70000)-Aufruf zielt auf [0x21da6000 – 0x21e15fff] und erstreckt sich von VMA-A (versiegelt) in VMA-B (nicht versiegelt). Innerhalb von mseal_apply() wird das veraltete curr_end von VMA-A als curr_start verwendet, wenn VMA-B verarbeitet wird, was den inkonsistenten vmg-Zustand erzeugt.


Sicherheitsauswirkungen

  1. Vom unprivilegierten Userspace aus erreichbar – benötigt nur memfd_create + mmap + mseal, keine CAP_* erforderlich.
  2. mseal(2) ist ein Sicherheits-Primitiv – es schützt die Unveränderlichkeit von VMAs. Ein Logikfehler in seiner Anwendung bedeutet, dass VM_SEALED stillschweigend falsch angewendet werden kann, wenn VMAs mit gemischten Siegelungszuständen überspannt werden.
  3. Stillschweigend in der Produktion – auf Nicht-Debug-Kerneln wird der inkonsistente Zustand ohne Warnung fortgesetzt, was potenziell den VMA-Baum mit falschem Siegelungszustand hinterlässt.

Proof of Concept

Datei: cve-2026-23416-poc.c

Erstellen

root@kitploit:~
gcc -o poc cve-2026-23416-poc.c

Ausführen

root@kitploit:~
./poc

Erwartete Ausgabe (Debug-Kernel mit CONFIG_DEBUG_VM)

root@kitploit:~
============================================
CVE-2026-23416-POC
Discovered by : Antonius / Blue Dragon Security
  https://bluedragonsec.com
  https://github.com/bluedragonsecurity
============================================
[iter 0]
[iter 1]
...
[+] WARNING triggered N times total

Überprüfen Sie dmesg auf:

root@kitploit:~
WARNING: CPU: X PID: Y at mm/vma.c:830 vma_merge_existing_range+0x...

Anforderungen

  • Linux-Kernel 6.17 – 7.0-rc5
  • CONFIG_DEBUG_VM=y, um die VM_WARN_ON_VMG zu beobachten (auf Produktionskerneln ist der Fehler immer noch vorhanden, aber still)
  • Keine Root- oder speziellen Capabilities erforderlich

Behebung

Drei Upstream-Fix-Commits (angewendet in 7.0-rc6 und stabilen Backports):

CommitTree
40b3f4700e55stable
83737e34b83astable
2697dd8ae721stable

Behobene Kernel-Versionen: 7.0-rc6, 6.18.21, 6.19.11


Referenzen

  • CVE-2026-23416 — cve.org
  • CVE-2026-23416 — NVD
  • Technischer Artikel — Medium (@w1sdom)
  • Blue Dragon Security

Offenlegungszeitplan

DatumEreignis
2026-01-13CVE-ID reserviert
2026-04-02CVE veröffentlicht, Fix-Commits zusammengeführt

Autor

Antonius (@w1sdom)
Blue Dragon Security — Tangerang, Indonesia
GitHub: bluedragonsecurity


Dieses PoC wird nur zu Bildungs- und Forschungszwecken veröffentlicht.

Tool herunterladen