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 — Análisis - POC - Mitigación | Kitploit
Herramientas/GitHubGitHub/sebastian294/cve-2026-31431
Escalada de PrivilegiosAnálisis de VulnerabilidadesExplotaciónAprendizaje y EducaciónExplotación de BinariosLabs y Práctica
GitHubsebastian294/cve-2026-31431

cve-2026-31431

Análisis - POC - Mitigación

Ver Repositorio
1hace 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: Linux Kernel LPE Research Lab

Educational purposes only. Do NOT use on systems without explicit authorization.


Índice

  • Descripción de la vulnerabilidad
  • Componentes afectados
  • Cómo funciona
  • Setup del lab (Docker)
  • PoC — Demostración
  • Mitigación
  • Referencias

Descripción de la vulnerabilidad

CampoValor
CVECVE-2026-31431
AliasCopy Fail
CVSS7.8 (High)
TipoLocal Privilege Escalation (LPE)
Kernel afectado2017 – 2026 (commit 72548b093ee3 en adelante)
Fix upstreamcommit a664bf3d603d (revert del 2017)
Divulgación29 de abril de 2026 (Theori / Xint Code)

Copy Fail es un bug lógico determinístico (no requiere race conditions) en el subsistema criptográfico del kernel Linux. Permite a un usuario sin privilegios escribir 4 bytes controlados en el page cache de cualquier archivo legible del sistema, incluyendo binarios setuid como su o sudo.

¿Por qué es especialmente grave?

A diferencia de vulnerabilidades previas similares:


Componentes afectados

root@kitploit:~
Linux kernel — crypto/authencesn.c
  └── algif_aead (módulo AF_ALG)
        └── in-place optimization (commit 72548b093ee3, 2017)
              └── AEAD scratch write → cruza boundary del scatterlist
                    └── escribe 4 bytes en page cache de archivo externo

Distribuciones afectadas: Ubuntu, Debian, RHEL, Amazon Linux, SUSE, Fedora, Arch, AlmaLinux — cualquier distro con kernel ≥ 2017.


Cómo funciona

Root cause

En 2017 se introdujo una optimización que hace que req->src y req->dst apunten al mismo scatterlist combinado. Esto causa que las páginas del page cache (provenientes de splice()) queden encadenadas directamente en el scatterlist de destino escribible.

Cadena de explotación

root@kitploit:~
1. Abrir AF_ALG socket con algoritmo authencesn
2. Usar splice() para alimentar páginas del page cache del binario objetivo
   hacia el socket AF_ALG (ej: /usr/bin/sudo)
3. Ejecutar operación de decryptación AEAD
4. authencesn usa el buffer de destino como scratch pad →
   escribe seqno_hi (4 bytes controlados) FUERA del output legítimo,
   cruzando el boundary del scatterlist
5. Los 4 bytes aterrizan en la página del page cache del binario objetivo
6. El archivo en disco NO cambia → los integrity checks no detectan nada
7. El binario modificado en memoria ejecuta payload → root

Por qué es sigiloso

La escritura bypasses el VFS write path normal. El archivo en disco permanece intacto. Herramientas como sha256sum, aide, tripwire, o inotify no detectan el cambio porque operan sobre el archivo en disco o sobre el inode, no sobre el page cache en memoria.


Setup del lab (Docker)

El lab usa un kernel vulnerable para demostrar la corrupción del page cache. En entornos Docker, la escalada de privilegios completa depende de la configuración del host (shared kernel).

root@kitploit:~
# Clonar el repo

cd cve-2026-31431

# Construir la imagen vulnerable
docker build -t copyfail-lab -f docker/Dockerfile.vulnerable .

# Ejecutar el lab
docker run --rm -it \
  --cap-add=NET_ADMIN \
  --security-opt seccomp=unconfined \
  copyfail-lab bash

# Dentro del contenedor:
cd /lab
python3 exploit/poc.py

Requisitos

  • Docker ≥ 20.x
  • Kernel del host: Ubuntu/Debian con kernel 5.x o 6.x no parcheado (ver tabla en docs/)
  • Python 3.10+ en el contenedor (para os.splice)

PoC — Demostración

Ver exploit/poc.py y exploit/README.md.

El PoC demuestra:

  1. Corrupción del page cache (comprobable)
  2. Escritura de 4 bytes controlados en archivo objetivo
  3. LPE completo: depende del kernel del host (ver notas)

Mitigación

Ver mitigation/README.md para instrucciones detalladas.

TL;DR — Mitigación inmediata (sin reinicio):

root@kitploit:~
# Deshabilitar el módulo afectado
echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/disable-algif.conf
sudo modprobe -r algif_aead 2>/dev/null || true

Fix definitivo: Actualizar el kernel a una versión parcheada (post a664bf3d603d).


Estructura del repo

root@kitploit:~
cve-2026-31431/
├── README.md                    ← este archivo
├── docs/
│   ├── technical-analysis.md    ← análisis técnico profundo
│   └── affected-kernels.md      ← tabla de versiones afectadas/parcheadas
├── exploit/
│   ├── README.md                ← documentación del PoC
│   └── poc.py                   ← proof of concept (Python 3.10+)
├── mitigation/
│   ├── README.md                ← guía de mitigación
│   ├── disable-algif.conf       ← modprobe config
│   └── check-vulnerable.sh      ← script de detección
├── docker/
│   ├── Dockerfile.vulnerable    ← lab vulnerable
│   └── Dockerfile.patched       ← lab con mitigación aplicada
└── scripts/
    └── setup-lab.sh             ← automatización del lab

Timeline de divulgación


Referencias

  • Xint Code — Copy Fail writeup oficial
  • copy.fail — sitio del advisory
  • GitHub oficial — theori-io/copy-fail-CVE-2026-31431
  • NVD — CVE-2026-31431
  • Ubuntu Security Advisory
  • Microsoft Security Blog
  • Unit 42 — Palo Alto Analysis
  • Upstream fix commit a664bf3d603d

Descargar herramienta
VulnTipoRequiere race?Portable?Tamaño exploit
Dirty Cow (CVE-2016-5195)CoW raceSíParcial~KB
Dirty Pipe (CVE-2022-0847)pipe bufferNoLimitado~KB
Copy Fail (CVE-2026-31431)LógicoNoTotal732 bytes
FechaEvento
2017Commit 72548b093ee3 introduce el bug en el kernel
~2025Theori/Xint Code comienza análisis del subsistema crypto
Abr 28, 2026Coordinación con distribuidores
Abr 29, 2026Divulgación pública + PoC publicado
May 1, 2026Kernels parcheados disponibles en repos de producción
May 1, 2026Agregado al catálogo CISA KEV