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

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-31431 — Exploit y detector para una escalada de privilegios local en el kernel de Linux (CVE-2026-31431) que corrompe la caché de páginas para obtener root, con orientación sobre mitigación. | Kitploit
Herramientas/GitHubGitHub/kaleth4/cve-2026-31431
Escalada de PrivilegiosFrameworks de ExploitsAnálisis de VulnerabilidadesExplotaciónPruebas de Penetración
GitHubkaleth4/cve-2026-31431

CVE-2026-31431

Exploit y detector para una escalada de privilegios local en el kernel de Linux (CVE-2026-31431) que corrompe la caché de páginas para obtener root, con orientación sobre mitigación.

Ver Repositorio
13hace 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: Copy Fail

Un fallo crítico de 9 años en el kernel de Linux que permite obtener acceso root en segundos


📋 Resumen Ejecutivo

AtributoDetalles
CVECVE-2026-31431
ApodoCopy Fail
TipoEscalamiento de Privilegios Local (LPE)
CVSS7.8 (High)
Descubierto porTheori (Xint Code)
Divulgación29 de abril de 2026
ComponenteSubsistema algif_aead del kernel de Linux

⚡ ¿Por qué es tan peligroso?

🎯 Velocidad

  • Exploit instantáneo: < 1 segundo para obtener root
  • Script Python de apenas 732 bytes

👻 Sigilo Absoluto

  • Modifica solo la memoria RAM (page cache), no el disco
  • Las herramientas de integridad de archivos no lo detectan
  • Al reiniciar, el rastro desaparece (análisis forense comprometido)

🌍 Alcance Masivo

  • Afecta a prácticamente todas las distribuciones modernas
  • Kernels desde v4.14 (2017) hasta v7.0-rc
  • Vulnerable durante 9 años sin ser detectado

☁️ Riesgo en Cloud/Kubernetes

  • Permite escape de contenedores hacia el nodo principal
  • La caché de páginas se comparte entre host y contenedores
  • Impacto crítico en entornos multi-tenant

🔍 Detalles Técnicos

Causa Raíz

Fallo en la optimización de "operación en el lugar" (in-place) introducida en 2017 (commit 72548b093ee3). Permite a un usuario local realizar una escritura controlada de 4 bytes directamente en la caché de páginas del kernel.

Mecanismo de Explotación

  1. El atacante utiliza la interfaz AF_ALG para acceder a algoritmos criptográficos del kernel
  2. Corrompe la versión en memoria de binarios setuid (/usr/bin/su) o archivos sensibles (/etc/passwd)
  3. Al ejecutar el binario corrupto, obtiene una shell de root

Por qué pasó desapercibido

Es un bug lógico de diseño, no un desbordamiento de memoria. Requería análisis profundo del subsistema criptográfico para detectarlo.


📊 Sistemas Afectados

✅ Confirmados

  • Ubuntu: 20.04, 22.04, 24.04 LTS
  • RHEL/AlmaLinux/Rocky Linux: Todas las versiones modernas
  • Debian: Todas las versiones con kernel v4.14+
  • Amazon Linux 2023
  • SUSE: Versiones recientes

🛡️ Plan de Remediación

1️⃣ Solución Definitiva: Actualizar el Kernel

# Ubuntu/Debian
sudo apt update
sudo apt upgrade
sudo reboot

# RHEL/AlmaLinux/Rocky
sudo dnf update kernel
sudo reboot

# Verificar versión del kernel
uname -r

⚠️ El reinicio es obligatorio para activar el nuevo kernel.


2️⃣ Mitigación de Emergencia (sin reinicio inmediato)

Para Ubuntu/Debian:

# Deshabilitar la carga del módulo vulnerable
echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/copyfail_mitigation.conf

# Descargar el módulo si ya está en uso
sudo rmmod algif_aead

Para RHEL/AlmaLinux:

# El módulo suele estar integrado en el kernel
# Añadir parámetro de arranque para deshabilitarlo
sudo grubby --update-kernel=ALL --args="initcall_blacklist=algif_aead_init"

# Reiniciar para aplicar cambios
sudo reboot

3️⃣ Limpiar Cachés (si sospechas explotación previa)

# Purgar la caché de páginas en caliente
sudo sysctl -w vm.drop_caches=3

⚠️ Nota: Esto no reemplaza el parche. Es solo una medida complementaria.


📅 Cronología de Eventos

FechaEvento
29 de abrilDivulgación pública por Theori
1 de mayoPrimeros intentos de explotación activa detectados
2 de mayoCISA ordena a agencias federales de EE.UU. parchear antes del 15 de mayo
3 de mayoParches disponibles en Ubuntu, RHEL, AlmaLinux, Debian

📦 Estado de los Parches

DistribuciónEstadoReferencia
Ubuntu✅ ParcheadoUSN-8226-1 (20.04, 22.04, 24.04)
RHEL/AlmaLinux/Rocky✅ DisponibleDesde 1 de mayo
Debian✅ En repositorios de seguridadActualización disponible
Android⏳ PróximamenteBoletín de seguridad de junio 2026

🔐 Verificar tu Sistema

¿Es tu kernel vulnerable?

# Obtener versión del kernel
uname -r

# Vulnerable si es:
# - v4.14 a v7.0-rc (lanzado entre 2017 y abril 2026)
# - Contiene el commit 72548b093ee3

# Verificar si el módulo algif_aead está cargado
lsmod | grep algif_aead

# Si aparece en la lista, tu sistema es vulnerable

🧬 Análisis de Seguridad: El Factor IA

Lo más disruptivo: Descubierto por IA en 1 hora

Una IA identificó este fallo que pasó desapercibido para los desarrolladores durante 9 años. Esto marca un antes y un después:

  • 🤖 Las máquinas pueden auditar el código del kernel más rápido que los humanos
  • 🔍 Encontrando fallos lógicos complejos automáticamente
  • ⚠️ Implicaciones para el futuro de la investigación de 0-days

Quick start

# 1. Detect
python3 prueba.py
#   exit 0 = not vulnerable, 2 = vulnerable, 1 = test error

# 2. Exploit (interactive — su will prompt for your own password)
python3 exploit.py --shell

Detector usage

python3 prueba.py

Qué hace:

  1. Confirma que AF_ALG y el algoritmo authencesn(hmac(sha256),cbc(aes)) sean accesibles desde un proceso sin privilegios.

  2. Crea un archivo centinela de 4 KiB en un directorio temporal y rellena la caché de páginas.

  3. Envía 8 bytes de AAD en línea mediante sendmsg+cmsg con seqno_lo establecido en el marcador PWND, y luego copia 32 bytes de la página de la caché de páginas del centinela en el socket de operación AF_ALG mediante os.splice().

  4. Llama a recv() para iniciar el descifrado. La comprobación de autenticación falla con EBADMSG; la escritura temporal se ejecuta de todos modos.

  5. Vuelve a leer el archivo (caché de páginas, no el disco) y busca el marcador.

Clases de salida:

  • Condición previa no cumplida: AF_ALG o authencesn no disponibles. Salida 0.
  • VULNERABLE a CVE-2026-31431: el marcador PWND se insertó en la página modificada.

Salida 2.

  • Caché de página MODIFICADA mediante una ruta de inserción AEAD in situ: se escribió en la página, pero el marcador no se insertó en la posición esperada. Tratar como vulnerable. Salida 2.
  • Caché de página intacta: parcheada. Salida 0.

El detector nunca modifica /usr/bin/su, /etc/passwd ni ningún otro archivo fuera del directorio temporal que crea, y dicho archivo se elimina al finalizar.

Salida. ## Uso de LPE

python3 exploit_cve_2026_31431.py # Solo parchea, imprime los siguientes pasos
python3 exploit_cve_2026_31431.py --shell # Parchea y ejecuta `su <usuario>`

Función:

  1. Busca la línea UID del usuario en ejecución en /etc/passwd y encuentra el

desplazamiento de bytes del campo UID de 4 caracteres.

  1. Ejecuta un write4 sobre ese desplazamiento, reemplazando el UID con

0000.

  1. Llama a pwd.getpwnam(usuario) para confirmar que libc ahora informa UID 0.
  2. Con --shell, ejecuta execvp("su", ["su", usuario]). Introduce tu propia contraseña. PAM valida contra /etc/shadow (sin modificar), luego

setuid(getpwnam(user).pw_uid) se establece en 0.

Requisitos

  • El usuario en ejecución tiene un UID de 4 dígitos (1000–9999). Los UID de 1 a 3 dígitos

requieren escrituras de múltiples disparos; extienda write4 según corresponda.

  • Ningún demonio de caché NSS (nscd, sssd, systemd-userdbd) está enmascarando las lecturas de /etc/passwd. Si getpwnam aún devuelve el UID real después de la aplicación del parche, reinicie o ignore la caché, o seleccione un usuario diferente.

  • La página /etc/passwd debe permanecer en la caché entre la aplicación del parche y la ejecución de su. En la práctica, esto es fiable en cualquier sistema con una presión de memoria normal.

Reversión

El archivo /etc/passwd en disco permanece sin cambios.

Descargar herramienta