Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-23416-POC — POC per CVE-2026-23416 (linux kernel 6.17 – linux kernel 7 rc5) - vulnerabilità scoperta da Antonius | Kitploit
Strumenti/GitHubGitHub/bluedragonsecurity/cve-2026-23416-poc
Analisi delle VulnerabilitàExploitPaper e RicercaApprendimento e FormazioneBinary Exploitation
GitHubbluedragonsecurity/cve-2026-23416-poc

CVE-2026-23416-POC

POC per CVE-2026-23416 (linux kernel 6.17 – linux kernel 7 rc5) - vulnerabilità scoperta da Antonius

Vedi Repository

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
813 mesi faNon ancora revisionato

CVE-2026-23416 — PoC

mm/mseal: aggiorna correttamente la fine del VMA durante il merge

Vulnerabilità scoperta da Antonius / Blue Dragon Security


Panoramica

CampoDettaglio
ID CVECVE-2026-23416
Sottosistemamm/mseal — mm/vma.c
Versioni interessatekernel Linux 6.17 fino a 7.0-rc5
Corretto inLinux 7.0-rc6, backport stabili 6.18.21, 6.19.11
Accesso richiestoUtente non privilegiato (UID 1000, nessuna capability)
Syscall utilizzatememfd_create, mmap, mseal
Riproducibilità100% deterministica, < 1 secondo
Riservato2026-01-13
Pubblicato2026-04-02

Descrizione della vulnerabilità

Il bug risiede in mseal_apply() all'interno di mm/mseal.c. Durante l'iterazione sulle VMA per applicare la syscall mseal(2), la funzione tiene traccia della posizione usando curr_start e curr_end:

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

Il problema: vma_modify_flags() — chiamata durante l'iterazione — può unire le VMA, modificando vma->vm_end in-place. Ciò rende obsoleto il valore di curr_end acquisito prima del merge. All'iterazione successiva, curr_start viene impostato al curr_end ormai obsoleto, producendo un indirizzo iniziale errato.

Nei kernel di debug (CONFIG_DEBUG_VM), questo stato vmg incoerente attiva:

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

in mm/vma.c:830, generando un WARNING del kernel.

Nei kernel di produzione (WARN compilato come no-op), il curr_start obsoleto prosegue silenziosamente — il che significa che VM_SEALED può essere applicata a un intervallo di indirizzi errato senza alcun errore visibile, compromettendo la garanzia di sicurezza che mseal(2) è progettato per fornire.

Percorso di chiamata

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

Causa principale

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

La correzione imposta curr_end = vma->vm_end incondizionatamente a ogni iterazione dopo qualsiasi potenziale merge, e inoltre vincola curr_start/curr_end come valori const derivati dall'intervallo di input e dai confini delle VMA:

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

Layout VMA durante il trigger

Il PoC costruisce il seguente layout prima della seconda chiamata a mseal():

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)

La seconda mseal(m2, 0x70000) ha come obiettivo [0x21da6000 – 0x21e15fff], attraversando VMA-A (sealed) fino a VMA-B (non sealed). All'interno di mseal_apply(), il curr_end obsoleto di VMA-A viene usato come curr_start durante l'elaborazione di VMA-B, creando lo stato vmg incoerente.


Impatto sulla sicurezza

  1. Raggiungibile da userspace non privilegiato — richiede solo memfd_create + mmap + mseal, nessuna CAP_* necessaria.
  2. mseal(2) è una primitiva di sicurezza — protegge l'immutabilità delle VMA. Un errore logico nella sua applicazione significa che VM_SEALED può essere applicata erroneamente in modo silenzioso quando si attraversano VMA con stati di seal misti.
  3. Silenzioso in produzione — sui kernel non di debug, lo stato incoerente prosegue senza alcun avviso, lasciando potenzialmente l'albero delle VMA con uno stato di seal errato.

Prova di concetto

File: cve-2026-23416-poc.c

Compilazione

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

Esecuzione

root@kitploit:~
./poc

Output atteso (kernel di debug con 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

Controlla dmesg per:

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

Requisiti

  • kernel Linux 6.17 – 7.0-rc5
  • CONFIG_DEBUG_VM=y per osservare VM_WARN_ON_VMG (sui kernel di produzione il bug è ancora presente ma silenzioso)
  • Nessun requisito di root o capability speciali

Correzione

Tre commit di correzione upstream (applicati in 7.0-rc6 e nei backport stabili):

CommitTree
40b3f4700e55stable

Versioni del kernel corrette: 7.0-rc6, 6.18.21, 6.19.11


Riferimenti

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

Cronologia della divulgazione

DataEvento
2026-01-13ID CVE riservato
2026-04-02CVE pubblicato, commit di correzione integrati

Autore

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


Questo PoC è rilasciato a scopo educativo e di ricerca.

Scarica lo strumento
83737e34b83a
stable
2697dd8ae721stable