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-sh — Una implementación en Bash de copyfail (CVE-2026-31431) | Kitploit
Herramientas/GitHubGitHub/nonameuserosint-hue/copyfail-sh
Escalada de PrivilegiosAnálisis de VulnerabilidadesExplotaciónShellcodePruebas de PenetraciónRed TeamingExplotación de Binarios
GitHubnonameuserosint-hue/copyfail-sh

Copyfail-sh

Una implementación en Bash de copyfail (CVE-2026-31431)

Ver Repositorio
3hace 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-sh

Sin condición de carrera. Sin offsets. Sin binario precompilado en el que confiar a ciegas.

Una implementación en bash del CVE-2026-31431 (Copy Fail). El script compila un pequeño helper en C inline en tiempo de ejecución. La capa bash se encarga de la detección de arquitectura, la descompresión del payload y la selección del objetivo; la capa C realiza la interacción real con el kernel (sockets AF_ALG, splice, sendmsg) a la que bash no puede llegar por sí solo.

Ver copy.fail para el desglose técnico completo.

Cómo funciona (tl;dr)

El fallo está en algif_aead, la interfaz de sockets AF_ALG AEAD del kernel. Una optimización in-place de 2017 permite que las páginas de la page cache terminen en la scatterlist de destino escribible de una operación de descifrado authencesn. Si le pasas la entrada correcta mediante splice(), obtienes una escritura determinista de 4 bytes en la page cache de cualquier archivo legible, incluidos los binarios setuid que no te pertenecen.

Sobrescribe /usr/bin/su con shellcode de 4 bytes a la vez, ejecútalo y obtén una shell root. Sin ventana de condición de carrera, sin símbolos específicos del kernel, sin reintentos.

Uso

root@kitploit:~
chmod +x copyfail.sh

# Check if the system is vulnerable before doing anything
./copyfail.sh -c

# Run the exploit (must be non-root)
./copyfail.sh

# Specify a different setuid target
./copyfail.sh -t /usr/bin/passwd

# List all setuid-root candidates on the system
./copyfail.sh -s

Restaurar su después de obtener una shell

El exploit sobrescribe solo la page cache en memoria; el archivo en disco no se toca. Un reinicio lo restaura todo. Si quieres limpiar de inmediato:

root@kitploit:~
# Inside your root shell
/usr/bin/su --version   # still works from disk if page cache is evicted
# Or just reboot

Si usaste -t con algo distinto de su, pasa lo mismo. Solo page cache; el disco está limpio.

Requisitos

  • Linux (kernel 4.11 a 7.0, ver más abajo)
  • gcc para compilar el helper C inline
  • python3 para descomprimir el payload de shellcode (una línea, sin paquetes necesarios)
  • Módulos del kernel: algif_aead, authencesn, hmac, cbc

Si el algoritmo no está disponible:

root@kitploit:~
sudo modprobe algif_aead authencesn hmac cbc

Algunas distribuciones incluyen un bloqueo en /etc/modprobe.d/ como solución temporal. Elimínalo si está presente:

root@kitploit:~
sudo rm /etc/modprobe.d/disable-algif{_,-}aead.conf 2>/dev/null

Kernels afectados

root@kitploit:~
floor:    torvalds/linux 72548b093ee3   August 2017, v4.14
                                        (AF_ALG iov_iter rework that introduced
                                         the file-page write primitive via splice
                                         into the AEAD scatterlist)

ceiling:  torvalds/linux a664bf3d603d   April 2026, mainline
                                        (reverts the 2017 in-place optimization;
                                         source and destination scatterlists are
                                         now separate, page-cache pages can no
                                         longer end up as writable crypto output)

Entre esos dos commits: todas las distribuciones importantes que no aplicaron el backport de la corrección. Ubuntu, RHEL, SUSE, Amazon Linux y Debian fueron confirmados como vulnerables en el momento de la divulgación. Los backports de las distribuciones comenzaron a llegar alrededor del 2026-04-29. Para comprobar un kernel específico, busca a664bf3d603d (o su backport de la distribución) en el changelog.

Arquitecturas compatibles

ArquitecturaEstado
x86_64✓
aarch64✓
i386 / i686✓
armv7l✓

Mitigación

Permanente: actualiza tu kernel.

Solución temporal (bloquea el socket AF_ALG; no afecta a IPsec/XFRM, que usa la API criptográfica del kernel directamente):

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

Contenedores: añade un perfil de seccomp que bloquee la creación de sockets AF_ALG y establece allowPrivilegeEscalation: false en tu contexto de seguridad del pod. Esto habilita no_new_privs, lo que impide que el kernel honre los bits setuid en execve().

Comparación con las otras implementaciones

La versión en bash no gana en dependencias, pero es un único script que puedes leer de principio a fin antes de ejecutarlo. El helper en C se genera y compila en tiempo de ejecución a partir de un heredoc; no hay ningún binario que auditar por separado.

Referencias

  • copy.fail - sitio oficial y análisis
  • Blog de Xint.io - inmersión técnica profunda
  • Corrección del kernel - a664bf3d603d
  • CVE-2026-31431 - NVD
  • Divulgación en oss-security
  • badsectorlabs/copyfail-go - implementación en Go (los payloads de shellcode se obtienen de aquí)
  • xeloxa/copyfail-exploit - implementación en Python

Créditos

  • Taeyang Lee & Theori / Xint Code - descubrimiento de la vulnerabilidad y PoC original

Descargo de responsabilidad

Solo para pruebas de seguridad e investigación autorizadas. No ejecutes esto en sistemas que no poseas o para los que no tengas permiso escrito explícito para probar.

Descargar herramienta
PythonGoBash
Dependenciapython3ninguna (binario estático)gcc + python3
Binario precompiladonosíno
Archivo únicosínosí
Paso de compilaciónnonosí (inline, automático)