Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-23416-POC — POC para CVE-2026-23416 (linux kernel 6.17 – linux kernel 7 rc5) - vulnerabilidad descubierta por Antonius | Kitploit
Herramientas/GitHubGitHub/bluedragonsecurity/cve-2026-23416-poc
Análisis de VulnerabilidadesExplotaciónPapers e InvestigaciónAprendizaje y EducaciónExplotación de Binarios
GitHubbluedragonsecurity/cve-2026-23416-poc

CVE-2026-23416-POC

POC para CVE-2026-23416 (linux kernel 6.17 – linux kernel 7 rc5) - vulnerabilidad descubierta por Antonius

Ver Repositorio
813hace 3 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2026-23416 — PoC

mm/mseal: corregir el final de VMA correctamente al fusionar

Vulnerabilidad descubierta por Antonius / Blue Dragon Security


Resumen

CampoDetalle
ID CVECVE-2026-23416
Subsistemamm/mseal — mm/vma.c
AfectadoKernel de Linux 6.17 hasta 7.0-rc5
Corregido enLinux 7.0-rc6, backports estables 6.18.21, 6.19.11
Acceso requeridoUsuario no privilegiado (UID 1000, sin capacidades)
Llamadas al sistema usadasmemfd_create, mmap, mseal
Reproducibilidad100% determinista, < 1 segundo
Reservado2026-01-13
Publicado2026-04-02

Descripción de la vulnerabilidad

El error reside en mseal_apply() dentro de mm/mseal.c. Al iterar sobre las VMA para aplicar la llamada al sistema mseal(2), la función rastrea la posición usando curr_start y curr_end:

root@kitploit:~
/* Lógica simplificada anterior a la corrección */
curr_end = vma->vm_end;
/* ... procesar VMA ... */
curr_start = curr_end;  /* avanzar a la siguiente VMA */

El problema: vma_modify_flags() — llamada durante la iteración — puede fusionar VMA, cambiando vma->vm_end en el lugar. Esto hace que el valor curr_end capturado antes de la fusión quede obsoleto. En la siguiente iteración, curr_start se establece al curr_end ahora obsoleto, produciendo una dirección de inicio incorrecta.

En kernels de depuración (CONFIG_DEBUG_VM), este estado inconsistente de vmg desencadena:

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

en mm/vma.c:830, generando una advertencia del kernel (WARNING).

En kernels de producción (WARN compilado como no-op), el curr_start obsoleto continúa silenciosamente, lo que significa que VM_SEALED puede aplicarse a un rango de direcciones incorrecto sin ningún error visible, socavando la garantía de seguridad que mseal(2) está diseñado para proporcionar.

Ruta de llamada

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 se activa en la línea 830

Causa raíz

root@kitploit:~
/* ANTES de la corrección — mm/mseal.c mseal_apply() */
curr_end = vma->vm_end;           // capturado aquí
/* ... vma_modify_flags() puede fusionar VMA, cambiando vma->vm_end ... */
curr_start = curr_end;            // ¡obsoleto! la fusión no se refleja

La corrección establece curr_end = vma->vm_end de forma incondicional en cada iteración después de cualquier posible fusión, y además ajusta curr_start/curr_end como valores const derivados del rango de entrada y los límites de la VMA:

root@kitploit:~
/* DESPUÉS de la corrección */
curr_end = vma->vm_end;           // incondicional, siempre actualizado

Diseño de VMA durante el desencadenamiento

El PoC construye el siguiente diseño antes de la segunda llamada a mseal():

root@kitploit:~
[0x21da6000 - 0x21de5fff]  VMA-A  (fd2, MAP_SHARED|MAP_FIXED) ← VM_SEALED después del paso 1
[0x21de6000 - 0x21e82fff]  VMA-B  (fd2, MAP_SHARED|MAP_FIXED) ← NO sellado
[0x21e83000 - 0x21e84fff]  VMA-C  (resto)

El segundo mseal(m2, 0x70000) apunta a [0x21da6000 – 0x21e15fff], abarcando VMA-A (sellada) hasta VMA-B (no sellada). Dentro de mseal_apply(), el curr_end obsoleto de VMA-A se usa como curr_start al procesar VMA-B, creando el estado inconsistente de vmg.


Impacto en la seguridad

  1. Accesible desde espacio de usuario no privilegiado — solo requiere memfd_create + mmap + mseal, sin necesidad de CAP_*.
  2. mseal(2) es una primitiva de seguridad — protege la inmutabilidad de la VMA. Un error de lógica en su aplicación significa que VM_SEALED puede aplicarse incorrectamente de forma silenciosa al abarcar VMA con estados de sellado mixtos.
  3. Silencioso en producción — en kernels sin depuración, el estado inconsistente continúa sin ninguna advertencia, dejando potencialmente el árbol de VMA con un estado de sellado incorrecto.

Prueba de concepto

Archivo: cve-2026-23416-poc.c

Compilación

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

Ejecución

root@kitploit:~
./poc

Salida esperada (kernel de depuración 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

Verifique dmesg para:

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

Requisitos

  • Kernel de Linux 6.17 – 7.0-rc5
  • CONFIG_DEBUG_VM=y para observar el VM_WARN_ON_VMG (en kernels de producción el error aún está presente pero es silencioso)
  • No se requiere privilegios de root ni capacidades especiales

Corrección

Tres commits de corrección en el árbol principal (aplicados en 7.0-rc6 y backports estables):

CommitÁrbol
40b3f4700e55stable
83737e34b83astable
2697dd8ae721stable

Versiones del kernel corregidas: 7.0-rc6, 6.18.21, 6.19.11


Referencias

  • CVE-2026-23416 — cve.org
  • CVE-2026-23416 — NVD
  • Artículo técnico — Medium (@w1sdom)
  • Blue Dragon Security

Cronología de divulgación

FechaEvento
2026-01-13ID CVE reservado
2026-04-02CVE publicado, commits de corrección fusionados

Autor

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


Este PoC se publica con fines educativos y de investigación.

Descargar herramienta