Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Outils/GitHubGitHub/bluedragonsecurity/cve-2026-23416-poc
Analyse des VulnérabilitésExploitationArticles et RechercheApprentissage et ÉducationExploitation de Binaires
GitHubbluedragonsecurity/cve-2026-23416-poc

CVE-2026-23416-POC

POC pour CVE-2026-23416 (linux kernel 6.17 – linux kernel 7 rc5) - vulnérabilité découverte par Antonius

Voir le dépôt
813il y a 3 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2026-23416 — PoC

mm/mseal: mettre à jour correctement la fin de la VMA lors de la fusion

Vulnérabilité découverte par Antonius / Blue Dragon Security


Aperçu

ChampDétail
ID CVECVE-2026-23416
Sous-systèmemm/mseal — mm/vma.c
AffecteNoyau Linux 6.17 à 7.0-rc5
Corrigé dansLinux 7.0-rc6, rétroportages stables 6.18.21, 6.19.11
Accès requisUtilisateur non privilégié (UID 1000, aucune capacité)
Appels système utilisésmemfd_create, mmap, mseal
Reproductibilité100 % déterministe, < 1 seconde
Réservé2026-01-13
Publié2026-04-02

Description de la vulnérabilité

Le bogue se trouve dans mseal_apply() dans mm/mseal.c. Lors de l'itération sur les VMA pour appliquer l'appel système mseal(2), la fonction suit la position à l'aide de curr_start et curr_end :

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

Le problème : vma_modify_flags() — appelée pendant l'itération — peut fusionner des VMA, modifiant vma->vm_end sur place. Cela rend la valeur curr_end capturée avant la fusion obsolète. Lors de l'itération suivante, curr_start est défini sur le curr_end désormais obsolète, produisant une adresse de départ incorrecte.

Dans les noyaux de débogage (CONFIG_DEBUG_VM), cet état vmg incohérent déclenche :

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

à mm/vma.c:830, produisant un WARNING du noyau.

Dans les noyaux de production (WARN compilé en no-op), le curr_start obsolète continue silencieusement — ce qui signifie que VM_SEALED peut être appliqué à une plage d'adresses incorrecte sans aucune erreur visible, compromettant la garantie de sécurité que mseal(2) est conçu pour fournir.

Chemin d'appel

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 déclenché à la ligne 830

Cause racine

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

Le correctif définit curr_end = vma->vm_end de manière inconditionnelle à chaque itération après toute fusion potentielle, et fixe également curr_start/curr_end comme valeurs const dérivées de la plage d'entrée et des limites de la VMA :

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

Disposition des VMA lors du déclenchement

Le PoC construit la disposition suivante avant le deuxième appel à mseal() :

root@kitploit:~
[0x21da6000 - 0x21de5fff]  VMA-A  (fd2, MAP_SHARED|MAP_FIXED) ← VM_SEALED après l'étape 1
[0x21de6000 - 0x21e82fff]  VMA-B  (fd2, MAP_SHARED|MAP_FIXED) ← NON scellé
[0x21e83000 - 0x21e84fff]  VMA-C  (restant)

Le deuxième mseal(m2, 0x70000) cible [0x21da6000 – 0x21e15fff], couvrant VMA-A (scellée) jusqu'à VMA-B (non scellée). Dans mseal_apply(), le curr_end obsolète de VMA-A est utilisé comme curr_start lors du traitement de VMA-B, créant l'état vmg incohérent.


Impact sur la sécurité

  1. Accessible depuis un espace utilisateur non privilégié — nécessite seulement memfd_create + mmap + mseal, pas de CAP_* requis.
  2. mseal(2) est une primitive de sécurité — elle protège l'immutabilité des VMA. Une erreur de logique dans son application signifie que VM_SEALED peut être silencieusement mal appliqué lors du chevauchement de VMA avec des états de scellement mixtes.
  3. Silencieux en production — sur les noyaux non débogage, l'état incohérent continue sans avertissement, laissant potentiellement l'arbre des VMA avec un état de scellement incorrect.

Preuve de concept

Fichier : cve-2026-23416-poc.c

Compilation

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

Exécution

root@kitploit:~
./poc

Sortie attendue (noyau de débogage avec 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

Consultez dmesg pour :

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

Prérequis

  • Noyau Linux 6.17 – 7.0-rc5
  • CONFIG_DEBUG_VM=y pour observer le VM_WARN_ON_VMG (sur les noyaux de production, le bogue est toujours présent mais silencieux)
  • Pas de privilèges root ni de capacités spéciales requis

Correctif

Trois correctifs en amont (appliqués dans 7.0-rc6 et les rétroportages stables) :

CommitArbre
40b3f4700e55stable
83737e34b83astable
2697dd8ae721stable

Versions du noyau corrigées : 7.0-rc6, 6.18.21, 6.19.11


Références

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

Chronologie de divulgation

DateÉvénement
2026-01-13ID CVE réservé
2026-04-02CVE publiée, correctifs fusionnés

Auteur

Antonius (@w1sdom)
Blue Dragon Security — Tangerang, Indonésie
GitHub : bluedragonsecurity


Ce PoC est publié à des fins éducatives et de recherche.

Télécharger l’outil