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 and detector for a Linux kernel local privilege escalation (CVE-2026-31431) that corrupts page cache to gain root, with mitigation guidance. | Kitploit
Herramientas/GitHubGitHub/kaleth4/cve-2026-31431
Privilege EscalationExploit FrameworksVulnerability AnalysisExploitationPenetration Testing
GitHubkaleth4/cve-2026-31431

CVE-2026-31431

Exploit and detector for a Linux kernel local privilege escalation (CVE-2026-31431) that corrupts page cache to gain root, with mitigation guidance.

Ver Repositorio
hace 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-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

root@kitploit:~
# 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:

root@kitploit:~
# 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:

root@kitploit:~
# 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)

root@kitploit:~
# 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 mayo

📦 Estado de los Parches


🔐 Verificar tu Sistema

¿Es tu kernel vulnerable?

root@kitploit:~
# 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

root@kitploit:~
# 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

root@kitploit:~
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

root@kitploit:~
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.

La ejecución en seco (exploit_cve_2026_31431.py sin --shell) elimina automáticamente la página corrupta al salir mediante POSIX_FADV_DONTNEED, por lo que las búsquedas de UID → nombre vuelven a la normalidad inmediatamente.

Tras usar --shell**, la página permanece corrupta hasta que se borra. Mientras esté corrupta, cualquier operación que resuelva UID 1000 → nombre (por ejemplo, ls, administradores de archivos, comprobaciones de propiedad de scp/sftp) fallará o mostrará identificadores numéricos. Para borrarlo:

root@kitploit:~
# Sin privilegios: solicita la eliminación de la caché de páginas de /etc/passwd:
python3 -c "import os; fd=os.open('/etc/passwd', os.O_RDONLY); \
os.posix_fadvise(fd, 0, 0, os.POSIX_FADV_DONTNEED); os.close(fd)"

# Desde la consola de root:
echo 3 > /proc/sys/vm/drop_caches

Un reinicio también lo borra.

Cómo funciona write4

root@kitploit:~
sendmsg([AAD de 8 bytes], cmsg=[ALG_SET_OP=DECRYPT, ALG_SET_IV, ALG_SET_AEAD_ASSOCLEN=8],
flags=MSG_MORE)
splice(target_fd, pipe_w, 32, offset_src=file_offset)
splice(pipe_r, op_fd, 32)
recv(op_fd) # EBADMSG; la escritura temporal ya se ha realizado

Los 4 bytes de las posiciones 4 a 7 del AAD (seqno_lo) son escritos por authencesn en la lista de dispersión de destino, que en esta ruta de código es la página de caché de páginas que extrajimos de target_fd. El desplazamiento de aterrizaje dentro de la página corresponde al offset_src que pasamos a splice().

Mitigación

Hasta que el kernel parcheado llegue a tu distribución:

root@kitploit:~
sudo tee /etc/modprobe.d/disable-algif-aead.conf <<<'install algif_aead /bin/false'
sudo rmmod algif_aead 2>/dev/null

Tras aplicar el parche, test_cve_2026_31431.py debería mostrar el mensaje «Precondición no cumplida» y salir con código 0.

La corrección original revierte las operaciones AEAD in situ a operaciones fuera de lugar, manteniendo las páginas de la caché de páginas fuera de las listas de dispersión modificables.

📚 Referencias Oficiales

  • CVE-2026-31431 - NVD
  • Copy Fail Patches - AlmaLinux
  • Sysdig Security Research
  • CISA Alert

⚠️ Recomendaciones Finales

  1. Prioridad Crítica: Actualiza tu kernel antes del 15 de mayo de 2026 (mandato de CISA)
  2. Si no puedes reiniciar: Aplica la mitigación temporal deshabilitando algif_aead
  3. En Cloud/Kubernetes: Verifica que tus nodos estén parcheados inmediatamente
  4. Monitoreo: Busca intentos de carga del módulo algif_aead en logs de auditoría

Última actualización: 3 de mayo de 2026
Estado: 🔴 CRÍTICO - Acción inmediata requerida

Descargar herramienta
Primeros 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
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