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
copyfail-deconstructed — Versión fácil de entender de CVE-2026-31431 | Kitploit
Herramientas/GitHubGitHub/bootsareme/copyfail-deconstructed
Escalada de PrivilegiosExplotaciónShellcodeAprendizaje y EducaciónDesarrollo de PayloadsExplotación de Binarios
GitHubbootsareme/copyfail-deconstructed

copyfail-deconstructed

Versión fácil de entender de CVE-2026-31431

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

copyfail-deconstructed

Versión fácil de entender de CVE-2026-31431, una técnica de escalada de privilegios que permite a cualquiera convertirse en root. La prueba de concepto original se encuentra aquí: https://github.com/theori-io/copy-fail-CVE-2026-31431, pero está fuertemente comprimida y minimizada para tener la menor huella posible. Este repositorio intenta desglosar ese código de una manera más legible, incluyendo qué hace el código, cómo se carga el payload y cómo apuntar a diferentes arquitecturas. Consulte el artículo más técnico aquí: https://xint.io/blog/copy-fail-linux-distributions.

Uso

Por defecto, al ejecutar python3 copyfail.py se ejecutará un shellcode x64 explotando /usr/bin/su. Puede proporcionar su propio payload ejecutando python3 copyfail.py [ruta/al/payload/personalizado.elf]. Como ejemplo, hay un ensamblador de shellcode ARM64 dentro de payloads/. Así que para probar en dispositivos ARM64, primero debe construir un payload minimizado con nuestro script de enlazado personalizado:

root@kitploit:~
as -o shellcode_aarch64.o payloads/shellcode_aarch64.S
ld -nostdlib -static -o shellcode_aarch64.elf shellcode_aarch64.o
strip -s shellcode_aarch64.elf

Luego puede ejecutar el exploit principal usando python3 copyfail.py shellcode_aarch64.elf.

Para ejecutar en C:

  1. compilar (ver abajo)
  2. ./c_copyfail que ejecuta el mismo shellcode por defecto que el anterior.
  • Puede proporcionar su propio payload ejecutando ./c_copyfail [ruta/al/payload/personalizado.elf].

Para compilar la versión en C:

root@kitploit:~
cd c_port
make

Específicamente, esto compila el archivo .S de destino en un binario raw que se genera como un array de unsigned char en C:

root@kitploit:~
gcc -c payloads/[shellcode].S
objcopy -O binary [shellcode].o [payload].raw
xxd -i [payload].raw > payload.txt

o, para x86 de 32 bits,

root@kitploit:~
gcc -c -m32 payloads/[shellcode].S
objcopy -O binary [shellcode].o [payload].raw
xxd -i [payload].raw > payload.txt

Luego puede copiar el contenido de este archivo en su código fuente, o simplemente ejecutar directamente ./c_copyfail.exe [ruta/al/payload.elf] donde payload.elf se genera con as + ld, NO con gcc + objcopy.

Correcciones

Para evitar la explotación, ejecute:

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

Si ya ha sido explotado, puede reiniciar la máquina o ejecutar: echo 3 | sudo tee /proc/sys/vm/drop_caches

Explicación

  1. El kernel permite al usuario comunicarse con la API de criptografía a través del tipo de socket AF_ALG
  • En 2017, se añadió una "optimización in-place" a la parte algif_aead de la API de criptografía
  • Cuando se envían datos a través del socket usando la llamada al sistema splice(), el kernel coloca las páginas reales de la caché de página del archivo que se ha empalmado en el área de trabajo de criptografía
  • El algoritmo criptográfico autenticado trata su búfer de salida como espacio de trabajo temporal y escribe 4 bytes más allá de lo que debería
  1. Lo que un hipotético atacante puede hacer
  • Elegir cualquier archivo legible (por ejemplo, /usr/bin/su en este caso)
  • Elegir un desplazamiento dentro de ese archivo donde ocurrirá la escritura de 4 bytes
  • Elegir el valor de 4 bytes a escribir (parte de los datos asociados en la operación AEAD)
  • Escribir código shell para sobrescribir el archivo en memoria
  1. Sobrescritura de la caché de página para obtener root
  • El kernel nunca marca la página corrupta como sucia, el archivo parece intacto
  • Al ejecutar /usr/bin/su, el kernel lo lee desde la caché de página y obtiene los bytes modificados
  • Repitiendo la escritura de 4 bytes (aproximadamente 40 veces), pueden sobrescribir la comprobación de UID dentro de /usr/bin/su para que el UID sea 0 (root)
  • Se consigue una shell de root para cualquier usuario
  1. Mitigación
  • Vaciar la caché de página para eliminar los archivos modificados en memoria, de modo que la próxima vez se lean desde el disco
  • Descargar el módulo del kernel
  • Incluirlo en la lista negra de carga
  • Si es un módulo integrado, debe bloquear la llamada al sistema mediante seccomp o eBPF. O eliminar su inicialización y reiniciar la máquina.

El binario su está corrupto en memoria, por lo que la modificación del archivo no será detectada. Para restaurarlo desde disco, puede vaciar la caché de página.

Descargar herramienta