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
COPY-FAIL-Detection-with-Wazuh-4.14.4 — Wazuh 4.14.4 reglas de detección para CVE-2026-31431 (Copy Fail) - Escalada de privilegios local en Linux mediante escritura en la caché de página de authencesn | Kitploit
Herramientas/GitHubGitHub/mym0us3r/copy-fail-detection-with-wazuh-4.14.4
Escalada de PrivilegiosAnálisis de VulnerabilidadesAuditoría de ConfiguraciónInteligencia de AmenazasDetección de Intrusiones
GitHubmym0us3r/copy-fail-detection-with-wazuh-4.14.4

COPY-FAIL-Detection-with-Wazuh-4.14.4

Wazuh 4.14.4 reglas de detección para CVE-2026-31431 (Copy Fail) - Escalada de privilegios local en Linux mediante escritura en la caché de página de authencesn

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
9hace 3 mesesAún no revisado

Detección de COPY FAIL con Wazuh 4.14.4 - CVE-2026-31431

Ingeniería de detección para el LPE del kernel Copy Fail · Ubuntu / RHEL / SUSE / Amazon Linux 2023 / Kali

rules sca status mitre cve


¿Qué es Copy Fail?

CVE-2026-31431 es un error lógico en la plantilla criptográfica authesn del kernel de Linux. Permite a cualquier usuario local sin privilegios realizar una escritura determinista y controlada de 4 bytes en la caché de páginas de cualquier archivo legible del sistema, sin requerir condiciones de carrera, offsets del kernel ni privilegios elevados.

Un script de Python 3.10+ de 732 bytes que utiliza únicamente módulos de la biblioteca estándar (os, socket, zlib) explota la vulnerabilidad para obtener root en todas las principales distribuciones de Linux publicadas desde 2017.

El archivo en disco permanece sin cambios, lo que deja completamente ciega la monitorización tradicional de integridad de archivos (FIM).

Descubierto por Taeyang Lee (Theori / Xint) con la asistencia de la herramienta de IA Xint Code.


Referencias Oficiales


Por Qué Falla el FIM - Por Qué Existe Este Repositorio

La escritura apunta únicamente a la caché de páginas en memoria. El kernel nunca marca la página como sucia, por lo que el mecanismo de escritura diferida nunca la persiste en disco. El binario en disco permanece byte a byte idéntico al original.

root@kitploit:~
Enfoque tradicional de FIM:
  leer archivo del disco -> calcular hash -> comparar -> no se reporta anomalía

Realidad de Copy Fail:
  archivo en disco = SIN CAMBIOS
  caché de páginas = CORRUPTA
  resultado FIM   = CIEGO

La única detección efectiva es conductual, mediante la monitorización de syscalls. Este repositorio proporciona reglas de Wazuh validadas en producción que detectan la cadena de explotación a nivel de syscalls del kernel.


Cadena de Explotación

root@kitploit:~
Paso 1: socket(38, 5, 0)       Socket AF_ALG - no requiere privilegios
Paso 2: bind()                  Vincular a authencsn - activa el código vulnerable
Paso 3: sendmsg()               Crear payload AAD - bytes 4-7 = valor a escribir
Paso 4: splice()          [!]   DISPARADOR - las páginas de la caché entran en SGL escribible
Paso 5: recv()                  authencsn escribe seqno_lo en la caché de páginas
Paso 6: execve(/usr/bin/su)     El binario setuid corrupto ejecuta shellcode como UID 0

Cadena de explotación CVE-2026-31431

splice() es el paso crítico. Entrega páginas de la caché al scatterlist escribible del socket AF_ALG sin copiarlas: una optimización in-place de 2017 en algif_aead.c que hizo reutilizables las páginas del buffer de la tubería en el SGL de destino. Cuando se ejecuta authencsn.decrypt(), escribe en esas páginas, que resultan ser la caché de páginas de tu archivo objetivo.


Distribuciones Afectadas

Todas las distribuciones de Linux que incluyen kernels desde el commit 72548b093ee3 (2017) están afectadas.

Escape de contenedores: Copy Fail también es un vector de escape de contenedores. La caché de páginas se comparte entre todos los procesos del host, incluso a través de los límites de los contenedores. La Parte 2 de Xint cubre la explotación en Kubernetes.


Estructura del Repositorio

root@kitploit:~
COPY-FAIL-Detection-with-Wazuh-4.14.4/
│
├── rules/
│   └── local_rules.xml              # 8 reglas de detección de Wazuh (199600-199607)
│
├── auditd/
│   └── cve-2026-31431.rules         # Reglas del sensor de syscalls auditd
│
├── sca/
│   └── cve_2026_31431.yml           # Política SCA - independiente de la versión del kernel
│
└── docs/
    ├── pentlab_uid.png               # Ejecución del PoC - root obtenido en Kali
    ├── Rule-199604-TRIGs.png         # Regla 199604 - 80 aciertos en pentlab
    ├── Rule_199604_Wazuh_Server_only.png  # Regla 199604 - primera validación
    ├── Splice_-_Non-root_process.png # Reglas 199600/199601/199604 disparándose
    ├── Modprobe_-_Possible_Algif_aed_load_attempt.png  # Regla 199603
    ├── Pentlab-PoC.png               # Regla 199603 en el agente pentlab
    ├── exploit_chain_timeline.svg    # Cadena de explotación
    └── SCA_CVE-2026-31431.png        # Puntuación de la política SCA 75%

Arquitectura de Detección

Dos capas independientes: ninguna depende de la versión del kernel.

Capa 1 - Detección Conductual (auditd + Wazuh)

El filtro uid!=0 cubre usuarios más allá de las cuentas interactivas: cuentas de servicio (www-data, postgres, jenkins), contenedores y webshells sin sesión de inicio.

Reglas del sensor auditd (auditd/cve-2026-31431.rules):

root@kitploit:~
-a always,exit -F arch=b64 -S socket -F a0=0x26 -F uid!=0 -k copy_fail_af_alg
-a always,exit -F arch=b32 -S socket -F a0=0x26 -F uid!=0 -k copy_fail_af_alg
-a always,exit -F arch=b64 -S splice -F uid!=0 -k copy_fail_splice
-w /usr/bin/su    -p x -k copy_fail_execve_su
-w /usr/bin/kmod  -p x -k copy_fail_modload

Capa 2 - Superficie de Vulnerabilidad (Política SCA)

Comprobaciones de configuración automatizadas cada 12 horas mediante sca/cve_2026_31431.yml. No se requiere versión del kernel.

Arquitectura de la Cadena de Reglas

Nota de ingeniería: Las reglas 199600 y 199601 deben ser hijas de la regla 92600 (proceso Python, profundidad 1), no de la 80700. El motor de reglas de Wazuh sigue una única ruta de cadena por evento. Colocar las reglas de detección en profundidad 2 bajo la 92600 garantiza que ganen la evaluación de cadena frente a reglas hermanas (p. ej., 92603-92606 en 0850-audit_rules.xml que también coinciden con if_group=audit + exe=python).


Despliegue

Paso 1 - Instalar auditd

root@kitploit:~
# Ubuntu / Debian / Kali
apt install auditd audispd-plugins -y
systemctl enable --now auditd
auditctl -s | grep enabled
root@kitploit:~
# RHEL / Amazon Linux
yum install audit -y
systemctl enable --now auditd
root@kitploit:~
# SUSE
zypper install audit -y
systemctl enable --now auditd

Paso 2 - Desplegar reglas del sensor auditd

root@kitploit:~
cp auditd/cve-2026-31431.rules /etc/audit/rules.d/
augenrules --load
auditctl -l | grep copy_fail

Salida esperada:

root@kitploit:~
-a always,exit -F arch=b64 -S socket -F a0=0x26 -F uid!=0 -F key=copy_fail_af_alg
-a always,exit -F arch=b32 -S socket -F a0=0x26 -F uid!=0 -F key=copy_fail_af_alg
-a always,exit -F arch=b64 -S splice -F uid!=0 -F key=copy_fail_splice
-w /usr/bin/su -p x -k copy_fail_execve_su
-w /usr/bin/kmod -p x -k copy_fail_modload

Paso 3 - Desplegar reglas de detección de Wazuh

Las reglas se proporcionan en rules/local_rules.xml. Puedes fusionar el contenido en tu /var/ossec/etc/rules/local_rules.xml existente o desplegarlo como archivo independiente:

root@kitploit:~
# Opción A - archivo independiente
cp rules/local_rules.xml /var/ossec/etc/rules/cve-2026-31431_rules.xml

# Opción B - añadir a local_rules.xml
cat rules/local_rules.xml >> /var/ossec/etc/rules/local_rules.xml
root@kitploit:~
# Validar sintaxis - debe salir con 0 y cero advertencias
/var/ossec/bin/wazuh-analysisd -t 2>&1 | tail -5

# Reiniciar el gestor
systemctl restart wazuh-manager

Paso 4 - Desplegar política SCA

root@kitploit:~
cp sca/cve_2026_31431.yml /var/ossec/etc/shared/default/

Añadir a ossec.conf dentro del bloque <sca>:

root@kitploit:~
<policies>
  <policy>/var/ossec/etc/shared/default/cve_2026_31431.yml</policy>
</policies>
root@kitploit:~
systemctl restart wazuh-manager

Paso 5 - Configurar localfile en ossec.conf

Asegúrate de que Wazuh ingiere el log de auditd:

root@kitploit:~
<!-- Añadir dentro de <ossec_config> -->
<localfile>
  <log_format>audit</log_format>
  <location>/var/log/audit/audit.log</location>
</localfile>

Validación

Prueba rápida (sin exploit - solo syscalls)

root@kitploit:~
# Crear un usuario de prueba si es necesario
useradd -m testuser 2>/dev/null || true

# Generar SEÑAL 1 - socket AF_ALG
su - testuser -c "python3 -c \"import socket; socket.socket(38, 5, 0); print('AF_ALG OK')\""

# Generar SEÑAL 3 - ejecución de /usr/bin/su
su - testuser -c "/usr/bin/su --help 2>/dev/null || true"

# Verificar que auditd capturó los eventos
ausearch -k copy_fail_af_alg -ts recent 2>/dev/null | grep "key=\|exe=\|uid=" | head -5

# Verificar que Wazuh generó alertas
grep -E "199600|199602" /var/ossec/logs/alerts/alerts.log | tail -10

Validar resultados SCA

root@kitploit:~
grep -E "31431|cve_2026" /var/ossec/logs/alerts/alerts.log | tail -10

Puntuación SCA esperada (sistema sin mitigar): 75% (3 aprobadas / 1 fallida - algif_aead no bloqueado)


Evidencia de Validación en Producción

Ejecución del PoC - Root obtenido en Kali (pentlab)

testuser (uid=1001) ejecutó el PoC de 732 bytes y obtuvo shell root:

PoC - Root obtenido en Kali


Regla 199604 - CADENA DE EXPLOTACIÓN DETECTADA (pentlab, 80 aciertos)

Socket AF_ALG + splice() del mismo proceso python - pid=46784 - SE REQUIERE INVESTIGACIÓN INMEDIATA:

Regla 199604 - pentlab 80 aciertos


Regla 199604 - Primera validación (servidor Wazuh, pid=53447)

Regla 199604 - servidor Wazuh


Reglas 199600 / 199601 / 199604 - splice() y AF_ALG disparándose

Splice y AF_ALG - Proceso no root


Regla 199603 - Ejecución de modprobe detectada (93 aciertos)

Modprobe - Posible intento de carga de algif_aead


Regla 199603 - agente pentlab (35 aciertos)

Pentlab - Regla 199603


Política SCA - Puntuación 75% (3 aprobadas / 1 fallida)

SCA CVE-2026-31431


Resultados de Discover del panel de Wazuh (agente=pentlab, Hoy):

wazuh-analysisd -t: salida 0 - cero advertencias - las 8 reglas cargadas.


Remediación

Mitigación inmediata (antes del parche)

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

Esto no afecta a dm-crypt/LUKS, kTLS, IPsec, OpenSSL, GnuTLS ni SSH.

Solución permanente

Aplica el commit del kernel a664bf3d603d mediante la actualización del kernel de tu distribución. Revierte la optimización in-place de 2017 en algif_aead.c, separando req->src (SGL de TX, donde splice entrega las páginas) de req->dst (SGL de RX, buffer de usuario). Todas las principales distribuciones están distribuyendo el parche.

root@kitploit:~
# Ubuntu / Debian
apt update && apt upgrade linux-generic

# RHEL / Amazon Linux
dnf update kernel

# SUSE
zypper update kernel-default

Cronología de Divulgación


Comparación con Vulnerabilidades Similares


Resumen de la Política SCA


Autor

Kislley Rodrigues (m0us3r) Embajador de Wazuh | Ingeniería de Detección | Blue Team


Agradecimientos

  • Taeyang Lee (Theori / Xint) por el descubrimiento, el informe y la divulgación coordinada de CVE-2026-31431
  • Equipo de Wazuh por la plataforma abierta SIEM/XDR y el Programa de Embajadores
  • Xint Research por la profundidad técnica en https://xint.io/blog/copy-fail-linux-distributions

Reglas de detección, configuración del sensor auditd y política SCA validadas en Wazuh 4.14.4, Ubuntu 24.04.2 LTS (kernel 6.8.0-106-generic) y Kali GNU/Linux 2026.1 (kernel 6.18.12+kali-amd64).


Actualización 2026-05-03

FuenteEnlace
CISA añade el fallo de acceso root de Linux explotado activamente CVE-2026-31431 al KEVhttps://thehackernews.com/2026/05/cisa-adds-actively-exploited-linux-root.html


Wazuh

Este proyecto se desarrolló como parte del Programa de Embajadores de Wazuh.

Wazuh es una plataforma de seguridad gratuita y de código abierto que proporciona protección unificada XDR y SIEM. Más información en wazuh.com.

Descargar herramienta
RecursoEnlace
Sitio oficial del CVEhttps://copy.fail/
Informe técnico - Xint Researchhttps://xint.io/blog/copy-fail-linux-distributions
PoC - copy_fail_exp.pyhttps://github.com/theori-io/copy-fail-CVE-2026-31431/blob/main/copy_fail_exp.py
Parche del kernel - a664bf3d603dhttps://github.com/torvalds/linux/commit/a664bf3d603d
Commit vulnerable - 72548b093ee3https://github.com/torvalds/linux/commit/72548b093ee3
MITRE ATT&CK T1068https://attack.mitre.org/techniques/T1068/
DistribuciónKernelEstado
Ubuntu 24.04 LTS6.17.0-1007-awsROOT CONFIRMADO
Amazon Linux 20236.18.8-9.213.amzn2023ROOT CONFIRMADO
RHEL 10.16.12.0-124.45.1.el10_1ROOT CONFIRMADO
SUSE 166.12.0-160000.9-defaultROOT CONFIRMADO
Kali GNU/Linux 2026.16.18.12+kali-amd64ROOT CONFIRMADO
ReglaPadreSeñalProfundidadNivel
80700decoded_as=auditdancla auditd (integrada en Wazuh)00
9260080700Ejecución de proceso Python (integrada en Wazuh)10
19960092600Socket AF_ALG - cadena python210
19960192600Syscall splice() - cadena python210
199604199601 + if_matched=199600CADENA DE EXPLOTACIÓN - python (mismo pid/120s)315
19960280700Ejecución de /usr/bin/su16
19960380700Ejecución de modprobe/kmod112
19960580700Socket AF_ALG - no python110
19960680700Syscall splice() - no python110
199607199606 + if_matched=199605CADENA DE EXPLOTACIÓN - no python (mismo pid/120s)215
ReglaAciertosDescripción
19960480CADENA DE EXPLOTACIÓN DETECTADA - pid=46784 exe=/usr/bin/python3.13
19960040Socket AF_ALG creado por proceso no root
19960328Ejecución de modprobe detectada
19960212/usr/bin/su ejecutado
FechaEvento
2026-03-23Vulnerabilidad reportada al equipo de seguridad del kernel de Linux
2026-03-24Confirmación inicial recibida
2026-03-25Parches propuestos y revisados
2026-04-01Parche confirmado en el kernel principal (a664bf3d603d)
2026-04-22Asignado CVE-2026-31431
2026-04-29Divulgación pública - informe de Xint + PoC publicado
Dirty Cow (2016-5195)Dirty Pipe (2022-0847)Copy Fail (2026-31431)
Condición de carreraSí - múltiples intentosNoNo - lógica determinista
Puede bloquear el sistemaSíNoNo
PortabilidadLimitadaEspecífica de versiónTodas las distros 2017+
Tamaño del exploitKilobytes (C)Cientos de bytes732 bytes (stdlib de Python)
Detección FIMPosiblePosibleNo posible
ComprobaciónTítuloRiesgo
31431001algif_aead no cargado en memoriaCRÍTICO
31431002algif_aead deshabilitado mediante modprobe.dALTO
31431003auditd activo y en ejecuciónALTO
31431004Reglas del sensor CVE-2026-31431 desplegadasALTO
Catálogo de Vulnerabilidades Explotadas Conocidashttps://www.cisa.gov/known-exploited-vulnerabilities-catalog
CVE-2026-31431 - crypto: algif_aead - Revertir a operar fuera de lugarhttps://www.cve.org/CVERecord?id=CVE-2026-31431