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-Copy-Fail---Vulnerability-Detection-Script — Script de detección para CVE-2026-31431 (Copy Fail) que verifica la versión del kernel, la presencia de parches, las configuraciones del kernel, la disponibilidad de sockets AF_ALG, binarios setuid y mitigaciones para determinar el estado de vulnerabilidad en sistemas Linux. | Kitploit
Herramientas/GitHubGitHub/liamromanis101/cve-2026-31431-copy-fail---vulnerability-detection-script
Seguridad de Infraestructura en la NubeEscáneres de VulnerabilidadesSeguridad de ContenedoresAnálisis de VulnerabilidadesAuditoría de ConfiguraciónDevSecOpsDetección de IntrusionesRespuesta a Incidentes
GitHubliamromanis101/cve-2026-31431-copy-fail---vulnerability-detection-script

CVE-2026-31431-Copy-Fail---Vulnerability-Detection-Script

Script de detección para CVE-2026-31431 (Copy Fail) que verifica la versión del kernel, la presencia de parches, las configuraciones del kernel, la disponibilidad de sockets AF_ALG, binarios setuid y mitigaciones para determinar el estado de vulnerabilidad en sistemas Linux.

Ver Repositorio
25232hace 5 mesesRevisado por Kitploit

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 — Script de detección de vulnerabilidades

Solo detección. Ya existe un PoC funcional en copy.fail/#exploit. Este script está pensado para administradores de sistemas y equipos de seguridad que necesitan determinar dónde son vulnerables — o si siguen siendo vulnerables tras aplicar el parche.


¿De qué trata esto?

El 29 de abril de 2026, el Xint Code Research Team reveló públicamente una vulnerabilidad llamada Copy Fail (CVE-2026-31431). Es un bug lógico que ha estado presente silenciosamente en el kernel de Linux desde aproximadamente 2017 — casi una década — y permite que cualquier usuario local sin privilegios obtenga acceso root.

No es "obtener root bajo condiciones específicas con algo de suerte y buen viento de cola." Simplemente... obtener root. De forma fiable. En prácticamente todas las distribuciones principales de Linux.

Afecta a Ubuntu, Amazon Linux, RHEL, SUSE y cualquier otro sistema que ejecute un kernel convencional de los últimos ~8 años. Mismo script, sin recompilación, sin ajustes por distribución.

Sí, es tan grave como parece.

La versión corta de cómo funciona

El kernel de Linux tiene un subsistema criptográfico accesible para usuarios sin privilegios mediante sockets AF_ALG. Existe un mecanismo llamado splice() que puede alimentar datos de archivos directamente a ese subsistema sin copiarlos — lo que significa que la copia en caché en memoria del kernel de un archivo (la "page cache") termina dentro de una operación criptográfica.

Un algoritmo específico — authencesn, utilizado para los Números de Secuencia Extendidos de IPsec — tiene una peculiaridad: usa el buffer de salida como espacio de trabajo y escribe 4 bytes ligeramente más allá de donde debería. Normalmente es inofensivo. Pero cuando las páginas de la page cache de un binario setuid como /usr/bin/su terminan encadenadas en ese buffer de salida (gracias a una "optimización" de 2017 en algif_aead.c), esos 4 bytes aterrizan directamente en la copia en caché del kernel del binario.

La operación falla con un error. El kernel nunca marca esa página como sucia. El archivo en disco no se toca. Las herramientas de integridad de archivos que verifican sumas de verificación en disco no detectan nada.

Pero la page cache es lo que se ejecuta. Y su es setuid root.

El informe técnico completo está en xint.io y realmente merece la pena leerlo.


Qué comprueban los scripts

Script de Python — 13 comprobaciones

Siete de la versión original más seis nuevas comprobaciones añadidas para cerrar las lagunas de detección:

#ComprobaciónQué busca
1Versión del kernel¿Está este kernel en el rango afectado (4.10–6.14)?
2Presencia del parche¿Está el commit de corrección realmente en tu kernel en ejecución?
3Módulo algif_aead¿Está cargado o es cargable el módulo vulnerable?
4CONFIG_CRYPTO_AUTHENC (nuevo)¿Está CONFIG_CRYPTO_AUTHENC compilado como integrado (=y) o como módulo (=m)? Esta única opción compila tanto authenc como authencesn. Integrado significa que la mitigación de lista negra de modprobe no hace nada.
5CONFIG_CRYPTO_USER_API_AEAD (nuevo)¿Está siquiera compilada la interfaz de usuario AEAD de AF_ALG? Si no, toda la ruta de explotación está cerrada en tiempo de compilación.
6Socket AF_ALG¿Puede un usuario sin privilegios abrir uno ahora mismo?
7Python os.splice¿Está disponible la ruta de explotación en Python puro?
8Binarios setuidLista ampliada de objetivos setuid-root legibles presentes en el sistema.
9MitigacionesAppArmor, SELinux, seccomp — ¿qué hay implementado?
10Namespaces de usuario (nuevo)¿Están habilitados los namespaces de usuario sin privilegios? (No bloquea Copy Fail directamente, pero afecta a la superficie general de escalada de privilegios local.)
11Transparent hugepages (nuevo)Estado de THP — puede afectar a la alineación de la page cache y a la fiabilidad de la explotación.
12Detección de entorno (nuevo)Contexto Docker/contenedor/VM — los contenedores comparten el kernel del host; el host es lo que necesita el parche.
13Advertencia de usuario root (nuevo)Advierte si se ejecuta como root, ya que varias comprobaciones dan falsos positivos para root independientemente de las restricciones sin privilegios.

Script de shell — 10 comprobaciones

El script de Bash cubre la misma lógica de detección principal pero omite tres elementos específicos de Python:

#ComprobaciónNotas
1Versión del kernel
2Presencia del parche
3Módulo algif_aead
4Socket AF_ALGUsa Python como ayuda si está disponible; si no, recurre a la inferencia de configuración del kernel
5Binarios setuidLista ampliada, igual que la versión de Python
6MitigacionesAppArmor, SELinux, seccomp
7CONFIG_CRYPTO_AUTHENC
8Namespaces de usuario
9Transparent hugepages
10Detección de entorno

No presentes en el script de shell (frente a Python):

Comprobación ausenteMotivo
CONFIG_CRYPTO_USER_API_AEADAún no implementado — planificado
Disponibilidad de Python os.spliceNo aplicable a un script de shell
Advertencia de usuario rootAún no implementado — planificado

Ninguno de los dos scripts arreglará ni explotará nada. Te dicen la verdad sobre tu sistema para que puedas actuar en consecuencia.


Requisitos

  • Python 3.6+
  • Sin dependencias externas — solo biblioteca estándar
  • No se requiere root (intencionadamente — comprobamos lo que un atacante sin privilegios puede ver)
  • Recomendado: ejecutar como usuario no root — algunas comprobaciones (socket AF_ALG, stat de setuid) siempre tienen éxito para root y reportarán falsos positivos

Uso

# Clona o descarga el script y luego:
python3 cve-2026-31431-detect.py

Eso es todo. Informe codificado por colores con un resumen al final.

Códigos de salida

El script sale con un código distinto de cero ante hallazgos de vulnerabilidad, lo que lo hace adecuado para su uso en pipelines:

CódigoSignificado
0No se encontraron condiciones vulnerables
1Se encontraron una o más condiciones vulnerables
# Ejemplo: fallar un paso de CI si el host es vulnerable
python3 cve-2026-31431-detect.py
rc=$?
if [ $rc -eq 1 ]; then
  echo "VULNERABLE — bloquear despliegue"
elif [ $rc -ne 0 ]; then
  echo "ERROR — el script no completó (salida $rc)"
fi

Ejemplo de salida

CVE-2026-31431 'Copy Fail' — Detección de vulnerabilidades
Corrupción de page cache de authencesn / escalada de privilegios local
Ejecutando como uid=1001, euid=1001

=== Versión del kernel ===
  [VULNERABLE] Versión del kernel
          Motivo : El kernel está en el rango vulnerable (4.10 – 6.14)
          Detalle : Release: 6.12.0-124.45.1.el10_1 — debe confirmarse el estado del parche

=== CONFIG_CRYPTO_AUTHENC (Configuración del kernel) ===
  [VULNERABLE] CONFIG_CRYPTO_AUTHENC
          Motivo : Compilado como módulo (=m): se auto-carga en bind() de AF_ALG; la lista negra de modprobe es la mitigación correcta

=== CONFIG_CRYPTO_USER_API_AEAD (Configuración del kernel) ===
  [VULNERABLE] CONFIG_CRYPTO_USER_API_AEAD
          Motivo : La interfaz AEAD de AF_ALG es un módulo cargable — los usuarios sin privilegios pueden acceder al subsistema criptográfico mediante sockets AF_ALG

...

  EL SISTEMA ES PROBABLEMENTE VULNERABLE A CVE-2026-31431
Descargar herramienta