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-checker — Verificador Bash de solo lectura para la vulnerabilidad Copy Fail del kernel de Linux (CVE-2026-31431) | Kitploit
Herramientas/GitHubGitHub/samanzamani/copy-fail-checker
Escalada de PrivilegiosEscáneres de VulnerabilidadesAnálisis de VulnerabilidadesExplotaciónScripting y AutomatizaciónCriptografíaAprendizaje y Educación
GitHubsamanzamani/copy-fail-checker

copy-fail-checker

Verificador Bash de solo lectura para la vulnerabilidad Copy Fail del kernel de Linux (CVE-2026-31431)

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

Comprobador de Copy Fail — CVE-2026-31431

Un pequeño script Bash con pocas dependencias que te indica si tu sistema Linux está expuesto a la vulnerabilidad de escalada de privilegios local Copy Fail (CVE-2026-31431).

El script es de solo lectura: nunca explota el fallo, nunca carga módulos del kernel y nunca modifica el sistema.


¿Qué es Copy Fail?

Copy Fail es un error de lógica en la plantilla criptográfica AEAD authencesn del kernel de Linux, accesible desde el espacio de usuario a través de la interfaz de socket AF_ALG (algif_aead).

CampoValor
CVECVE-2026-31431
Divulgado2026-04-29
CVSS v3.17.8 (Alto)
ClaseEscalada de Privilegios Local
Componente afectadocrypto/authencesn + crypto/algif_aead
Introducido en2017 (optimización AEAD in-place en algif_aead.c)
Corrección principalcommit a664bf3d603d, fusionado 2026-04-01

Por qué es importante

Un usuario local sin privilegios puede desencadenar una escritura controlada y determinista de 4 bytes en la caché de página de cualquier archivo que pueda leer. Una prueba de concepto pública (732 bytes de Python) utiliza esta primitiva para sobrescribir un binario setuid y obtener acceso root en prácticamente todas las distribuciones principales lanzadas desde 2017.

¿Quién está afectado?

Toda distribución de Linux que incluya un kernel compilado desde 2017 con algif_aead habilitado. Las familias confirmadas afectadas incluyen:

  • Ubuntu 18.04 → 25.10 (Ubuntu 26.04 "Resolute" no está afectado)
  • Debian (todos los conjuntos actualmente soportados)
  • RHEL / AlmaLinux / Rocky / CentOS Stream 8, 9, 10
  • SUSE Linux Enterprise / openSUSE
  • Amazon Linux 2023
  • La mayoría de los hosts de contenedores e imágenes de nodos de Kubernetes gestionados derivados de los anteriores.

Inicio rápido

root@kitploit:~
# Download the script
curl -fsSLO https://raw.githubusercontent.com/samanzamani/copy-fail-checker/main/check-copy-fail.sh

# Make it executable
chmod +x check-copy-fail.sh

# Run it
./check-copy-fail.sh

O clonar el repositorio:

root@kitploit:~
git clone https://github.com/samanzamani/copy-fail-checker.git
cd copy-fail-checker
./check-copy-fail.sh

El script no requiere root. Ejecutarlo como usuario normal proporciona la visión más realista de la superficie de ataque, porque ese es exactamente el contexto que tendría un atacante.


Lo que comprueba el script

El script ejecuta tres comprobaciones independientes y las combina en un único veredicto.

1. Versión del kernel

Lee /etc/os-release y uname -r, luego compara tu kernel en ejecución con la versión oficial corregida publicada por el equipo de seguridad de tu distribución. La tabla de versiones actualmente cubre:

Si tu distribución no está en la tabla, el script recurre a las comprobaciones de tiempo de ejecución a continuación.

2. Estado del módulo algif_aead

El script inspecciona cuatro cosas sin modificar nada:

  • Si el módulo está cargado actualmente (lsmod)
  • Si el módulo está disponible para cargar (modinfo)
  • Si el módulo está en la lista negra en /etc/modprobe.d, /usr/lib/modprobe.d o /run/modprobe.d
  • Si el módulo está incluido en el kernel en /boot/config-<uname> o /proc/config.gz

Un módulo en lista negra, no cargado y no incluido en el kernel cierra la superficie de ataque incluso en un kernel sin parchear.

3. Accesibilidad del socket AF_ALG

La señal más fiable es lo que un atacante vería realmente. El script utiliza una pequeña sonda Python (socket.socket(AF_ALG, SOCK_SEQPACKET, 0) seguido de bind() a la plantilla AEAD authencesn(hmac(sha256),cbc(aes))) para determinar si los sockets AF_ALG pueden crearse y enlazarse desde un contexto sin privilegios. La sonda crea, enlaza y cierra inmediatamente el socket sin dejar nada explotable.

Si python3 no está instalado, la sonda se omite y el veredicto se basa en las comprobaciones 1 y 2.


Posibles veredictos


Salida JSON para automatización

Para pipelines, gestión de configuración o escaneo de flotas, pase --json:

root@kitploit:~
./check-copy-fail.sh --json

Ejemplo de salida:

root@kitploit:~
{
  "verdict": "vulnerable",
  "distro_id": "ubuntu",
  "distro_version_id": "24.04",
  "kernel": "6.8.0-31-generic",
  "patched_version": "",
  "kernel_status": "unknown",
  "module_loaded": 0,
  "module_builtin": 0,
  "module_available": 1,
  "module_blacklisted": 0,
  "af_alg_status": "reachable"
}

Mitigación

Recomendado: instalar la actualización del kernel del proveedor

Esta es la única solución completa. Después de actualizar, reinicia para que el nuevo kernel esté realmente en ejecución.

root@kitploit:~
# Debian / Ubuntu
sudo apt update && sudo apt full-upgrade && sudo reboot

# RHEL / AlmaLinux / Rocky / CentOS Stream
sudo dnf clean metadata && sudo dnf upgrade && sudo reboot

# openSUSE / SLES
sudo zypper refresh && sudo zypper update && sudo reboot

# Amazon Linux 2023
sudo dnf upgrade --releasever=latest && sudo reboot

Solución temporal: deshabilitar algif_aead

Si no puedes reiniciar ahora mismo en un kernel parcheado, pon en lista negra el módulo vulnerable. Esto rompe cualquier aplicación que use legítimamente cifrados AEAD de AF_ALG (raro en la mayoría de servidores — verifica primero en un entorno de pruebas).

root@kitploit:~
# Persist the blacklist across reboots
echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/disable-algif-aead.conf

# Unload it from the running kernel right now
sudo rmmod algif_aead 2>/dev/null || true

Si el módulo está incluido en el kernel, la lista negra no funcionará, pero es posible deshabilitar la initcall. Es necesario reiniciar.

root@kitploit:~
sudo grubby --update-kernel=ALL --args="initcall_blacklist=algif_aead_init"

sudo reboot

Para cargas de trabajo contenerizadas, bloquea también la familia de sockets AF_ALG desde tu perfil seccomp para que un contenedor comprometido no pueda alcanzar la superficie del kernel.


Ejecución de ejemplo

root@kitploit:~
== System information ==
[INFO]    Distribution : Ubuntu 24.04.2 LTS (ubuntu 24.04)
[INFO]    Kernel       : 6.8.0-31-generic

== Check 1 / 3 — Kernel version ==
[WARN]    No vendor-fixed kernel version is recorded for ubuntu 24.04.
[WARN]    Falling back to runtime mitigation checks below.

== Check 2 / 3 — algif_aead kernel module ==
[WARN]    algif_aead is not loaded but can be autoloaded on demand (no blacklist found).

== Check 3 / 3 — AF_ALG socket reachability ==
[VULN]    AF_ALG sockets are reachable from this unprivileged context.

== Verdict ==
[VULN]    This system appears to be VULNERABLE to CVE-2026-31431.
[VULN]    Apply the vendor kernel update or blacklist algif_aead as a temporary mitigation.

Limitaciones

  • La tabla de versiones parcheadas solo cubre las familias listadas anteriormente. Se agradecen PRs para extenderla.
  • El script confía en uname -r. Si estás ejecutando un kernel fuera del árbol o recompilado, la comparación de versiones puede no reflejar si la corrección fue realmente retroportada.
  • Los entornos de contenedor/sandbox en vivo pueden reportar blocked_permission para AF_ALG simplemente porque seccomp está activo — el kernel del host mismo puede seguir siendo vulnerable.

Referencias

  • Aviso CERT-EU 2026-005
  • Divulgación de Xint: 732 bytes para root en cada distribución importante de Linux
  • AlmaLinux: parches de CVE-2026-31431 publicados
  • Ubuntu: correcciones de vulnerabilidad Copy Fail disponibles
  • Blog de seguridad de Microsoft: Copy Fail en entornos cloud
  • Sophos: exploit PoC disponible
  • Respuesta de SUSE a copy.fail
  • Cobertura de The Hacker News
  • Bugcrowd: Lo que sabemos sobre Copy Fail
  • Cobertura de The Register

Licencia

MIT — usa, modifica y distribuye libremente. Sin garantía.

Descargar herramienta
DistribuciónKernel corregido (≥)
AlmaLinux / RHEL / Rocky / CentOS 84.18.0-553.121.1.el8_10
AlmaLinux / RHEL / Rocky / CentOS 95.14.0-611.49.2.el9_7
AlmaLinux / RHEL / Rocky / CentOS 106.12.0-124.52.2.el10_1
Ubuntu 26.04+ ("Resolute")no afectado
Ubuntu 18.04 – 25.10continuo, consulte apt
Debian (todos los conjuntos)continuo, consulte DSA
VeredictoCódigo de salidaSignificado
parcheado0El kernel en ejecución está en o por encima de la versión corregida del proveedor.
mitigado0AF_ALG está bloqueado y el módulo no está cargado.
probablemente_mitigado0El módulo está en lista negra y no cargado; no fue posible una sonda en vivo.
vulnerable1El kernel no tiene parche y algif_aead / AF_ALG es accesible.
desconocido2No hay suficiente información para decidir. Tratar como potencialmente vulnerable.
no_aplicable3No se ejecuta en Linux.