Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
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.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-31431 — Prueba de concepto funcional para CVE-2026-31431, una escalada local de privilegios en el kernel de Linux mediante la corrupción de la caché de páginas de AF_ALG AEAD, que otorga una shell de root. | Kitploit
Herramientas/GitHubGitHub/wesmar/cve-2026-31431
Escalada de PrivilegiosFrameworks de ExploitsAnálisis de VulnerabilidadesExplotaciónExplotación de Binarios
GitHubwesmar/cve-2026-31431

CVE-2026-31431

Prueba de concepto funcional para CVE-2026-31431, una escalada local de privilegios en el kernel de Linux mediante la corrupción de la caché de páginas de AF_ALG AEAD, que otorga una shell de root.

Ver Repositorio
618hace 5 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-31431 — Escalada de Privilegios Local mediante AF_ALG

NVD / NIST PoC Download

2026-04-29 — Publico este exploit un día después de compartirlo en el foro MyDigitalLife. No requiere Python; está escrito en C y compilado al menor tamaño posible usando:

musl-gcc -static -Os -o exploit exploit.c -s

Amenaza crítica. El binario del exploit está compilado sin dependencias y puede usarse para probar vulnerabilidades en cualquier sistema Linux.

CVE-2026-31431 es una vulnerabilidad confirmada por NIST en el kernel de Linux que permite a un usuario local sin privilegios obtener un shell root en segundos. A la luz del exploit que circula públicamente para CVE-2026-31431, he desarrollado una prueba de concepto (PoC) binaria para evaluar la exposición de nuestra infraestructura interna. Si bien algunos entornos restringen el uso de su, esta vulnerabilidad es particularmente crítica para servidores compartidos porque ataca la gestión de memoria del kernel subyacente. En consecuencia, cualquier binario SETUID —incluidos sudo, passwd, mount o newgrp— puede aprovecharse para desencadenar el exploit y otorgar un shell root. Se requiere acción administrativa inmediata para parchear el kernel, ya que las restricciones estándar de espacio de usuario son insuficientes para mitigar esta amenaza. Cualquier sistema Linux que ejecute un kernel sin parchear está en riesgo.

Mi propio exploit funcional · Kernel de Linux · Interfaz criptográfica AF_ALG (AEAD)

Reemplaza /usr/bin/su en la caché de páginas del kernel sin tocar el archivo en disco

El acceso a shell local es suficiente — no se requieren privilegios adicionales

Afecta a distribuciones Linux sin parchear

CVE-2026-31431


📚 Índice de contenido

  • Qué es esta vulnerabilidad
  • Quiénes están afectados
  • Cómo funciona el exploit — paso a paso
  • Flujo del ataque
  • Análisis del código del exploit
  • Payload ELF — detalles técnicos
  • Cómo comprobar si eres vulnerable
  • Mitigaciones
  • Notas del investigador
  • Descargo de responsabilidad

Qué es esta vulnerabilidad

CVE-2026-31431 es un error en el manejo de operaciones de I/O scatter-gather y referencias a la caché de páginas en el subsistema criptográfico del kernel de Linux — específicamente en la implementación del socket AF_ALG para algoritmos AEAD (crypto/af_alg.c, crypto/aead.c).

PropiedadValor
IdentificadorCVE-2026-31431
ReferenciaNIST NVD
TipoEscalada de Privilegios Local (LPE)
ComponenteKernel de Linux — AF_ALG / AEAD (authencesn)
Acceso requeridoUsuario local sin privilegios
ImpactoShell root interactivo
Estado del exploitPoC funcional disponible públicamente en GitHub
PersistenciaNinguna — la modificación existe solo en RAM; el reinicio restaura el estado original

Qué sucede realmente

El kernel de Linux expone una interfaz criptográfica al espacio de usuario mediante sockets AF_ALG. La vulnerabilidad radica en que durante una operación de descifrado AEAD, el kernel mapea incorrectamente la salida del descifrado directamente sobre las páginas de la caché de páginas del archivo fuente — en lugar de un búfer temporal. Un atacante puede así sobrescribir el contenido en memoria de cualquier archivo sin modificarlo en disco, sin privilegios root y sin dejar rastro visible en el sistema de archivos.


Quiénes están afectados

SistemaEstado
Ubuntu 24.04 (hardware físico / VM)⚠️ Vulnerable en kernel sin parchear
Debian, Fedora, Arch en kernel sin parchear⚠️ Vulnerable
Distribuciones con CONFIG_SECURITY_LOCKDOWN_LSM✅ Probablemente protegidas
Sistemas con nosuid o ProtectSUID (systemd)✅ Protegidos
Sistemas con AppArmor/SELinux que bloquean AF_ALG✅ Protegidos
macOS, Windows (nativo)✅ No afectados

Cómo funciona el exploit — paso a paso

El exploit consta de dos componentes: un script auxiliar en /tmp/x y un bucle de corrupción basado en AF_ALG. A continuación se muestra un recorrido exacto basado en el análisis del código fuente:

1. Configuración del script auxiliar

El exploit crea /tmp/x con el siguiente contenido:

#!/bin/sh
export TERM=xterm-256color
exec /bin/sh

Establece permisos 0755. La razón: /usr/bin/su elimina las variables de entorno (incluida TERM) al lanzarse. El script auxiliar las restaura antes de generar el shell real, garantizando una terminal funcional.

2. Construcción del payload ELF

Se construye en memoria un binario ELF x86_64 mínimo de 158 bytes que contiene shellcode crudo. La cadena /bin/sh en el desplazamiento 150 se parchea luego a /tmp/x\0 mediante memcmp/memcpy. Consulta Payload ELF para más detalles.

3. Apertura de /usr/bin/su en modo solo lectura

int su_fd = open("/usr/bin/su", O_RDONLY);

El archivo se abre en modo solo lectura — el exploit no requiere permisos de escritura en absoluto.

4. Bucle de corrupción — 39 iteraciones de 4 bytes cada una

El payload (158 bytes) se procesa en fragmentos de 4 bytes (39 fragmentos completos). Cada fragmento se pasa a corrupt_binary_chunk(), que realiza:

  • Crea un socket AF_ALG (SOCK_SEQPACKET)
  • Se vincula a authencesn(hmac(sha256),cbc(aes)) — un algoritmo AEAD compuesto
  • Establece una clave de 72 bytes y un tamaño de etiqueta de autenticación de 4 bytes
  • Acepta un socket de operación (op_sock)
  • Envía sendmsg con un búfer de 8 bytes (4× 'A' + 4 bytes de payload) y tres CMSGs: ALG_OP_DECRYPT, IV (20 bytes), assoclen=8
  • Realiza splice: su_fd → pipe → op_sock (copia cero a través del kernel)
  • Finaliza mediante recv() — aquí es donde el kernel sobrescribe erróneamente la caché de páginas

5. Ejecución

execve("/usr/bin/su", args, NULL);

El kernel carga /usr/bin/su a través de la caché de páginas — que ahora está envenenada. El bit SUID (chmod u+s) está intacto, por lo que el kernel ejecuta el archivo como root. El shellcode ejecuta setuid(0) → execve("/tmp/x") → shell root interactivo.


Flujo del ataque

Descargar herramienta