
非特権のLinuxローカル権限昇格エクスプロイト。xfrm ESP-in-UDPのMSG_SPLICE_PAGES no-COWファストパスを悪用して/etc/passwdを上書きし、root権限を取得する。
xfrm ESP-in-UDP MSG_SPLICE_PAGES の no-COW ファストパスを経由した、非特権 Linux LPE。任意の読み取り可能ファイルへのページキャッシュ書き込み。/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 # install + drop into root shell
./run.sh --clean # revert /etc/passwd via the same primitive
パスワードなしの 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)。