
Exploit de escalada de privilégios locais no Linux sem privilégios que abusa do caminho rápido no-COW do xfrm ESP-in-UDP MSG_SPLICE_PAGES para sobrescrever /etc/passwd e obter root.
LPE Linux sem privilégios via caminho rápido no-COW de xfrm ESP-in-UDP MSG_SPLICE_PAGES. Escrita no page-cache em qualquer arquivo legível. Sobrescreve uma linha nologin em /etc/passwd com sick::0:0:...:/:/bin/bash e faz su para ela. Mesma classe do 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 em shell root
./run.sh --clean # reverte /etc/passwd via a mesma primitiva
Adiciona usuário uid-0 sem senha sick a /etc/passwd, então exec su - sick. PAM nullok aceita a senha vazia silenciosamente — nenhuma entrada necessária. A linha sick permanece em /etc/passwd — reexecutar entra direto de volta em root. Estado para --clean é guardado em /var/tmp/.cf2.state.
Sem sudo. esp4 / xfrm_user / xfrm_algo carregados automaticamente via o caminho netlink do userns.
| distro | kernel | resultado |
|---|---|---|
| Ubuntu 22.04 LTS | 5.15.0-176-generic | não vulnerável* |
| 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 |
O mesmo bug existe em esp6_input e não é coberto pela correção v4 f4c50a4034. PoC em ipv6/: ipv6/run.sh e ipv6/copyfail2v6.c. Usa loopback ::1 e ip -6 xfrm. Pacote ESP preenchido para >= 40 bytes para passar pelo gate de tamanho em xfrm6_input.c:124.
Hyunwoo Kim (imv4bel) e Kuan-Ting Chen reportaram, testaram e escreveram a correção upstream.
Steffen Klassert: mantenedor do IPsec, publicou a correção em netdev/net.git.
Brad Spengler (@spendergrsec / grsecurity): chamou de classe copyfail antes de qualquer outra pessoa ler o commit.
Theori / Xint: Copy Fail original (CVE-2026-31431).