Copy Fail 2: Electric Boogaloo
https://github.com/0xdeadbeefnetwork/Copy_Fail2-Electric_Boogaloo
Linuxのxfrm ESP-in-UDP MSG_SPLICE_PAGES no-COW fast pathを悪用した非特権LPEのPoC
概要
Page Cacheへの任意書き込みが可能なカーネル脆弱性
任意の読み取り可能ファイルに対する書き込みプリミティブを提供
Copy Fail(CVE-2026-31431)と同クラスだが別サブシステム
git.kernel.orgの上流fix: f4c50a4034e62ab75f1d5cdd191dd5f9c77fdff4
攻撃手法
/etc/passwdのnologin行をsick::0:0:...:/:/bin/bashで上書き
PAM nullokが空パスワードを暗黙に許可するためsu - sickでroot取得
入力不要で特権昇格が完了する
sick行は残るため、再実行で即root復帰可能
構成ファイル
copyfail2.c: ページキャッシュ書き込みの本体プリミティブ
単一バイト書き込み、固定Kに対するIVブルートフォース
ワイヤーフレームをspliceしてバグを発火
aa-rootns.c: user namespaceハーネス
run.sh: インストール+rootシェル投入
run.sh --clean: 同じプリミティブで/etc/passwdを復元
IPv6版
esp6_inputにも同じバグが存在
上流fix f4c50a4034はIPv4のみでIPv6はカバーしていない
ipv6/ディレクトリに別PoCあり(copyfail2v6.c)
::1ループバックとip -6 xfrmを使用
ESPパケットを40バイト以上にパディングしてxfrm6_input.c:124のサイズゲートを通過
影響範囲
INET_ESP、INET6_ESP、XFRM_INTERFACE、xfrm_userは非Android系全ディストリビューションで=mビルド
user namespace経由のnetlinkパスからrequest_moduleで自動ロード可能
call_usermodehelperがinit contextで動くためautoloadが成立
緩和策
/etc/modprobe.d/にinstall <mod> /bin/trueを配置してモジュールロードをブロック
esp4、esp6、rxrpcの3つを無効化すれば本脆弱性とDirty Fragの両方を防げる
該当コンフィグを=yでビルドするディストリビューションはブロックリストを迂回
該当するのはAndroidのみ
クレジット
Hyunwoo Kim(imv4bel)とKuan-Ting Chen: 発見・テスト・上流fix作成
Steffen Klassert: IPsecメンテナでnetdev/net.gitにfix投稿
Brad Spengler(@spendergrsec / grsecurity): commit公開直後に「copyfail-class」と命名
Theori/Xint: 元祖Copy Fail(CVE-2026-31431)の発見者
公開状況
2026年5月7日にGitHubとafflicted.shで公開
linux-distros embargoの予定ディスクロージャー日(5月12日)より前
公開済み上流commitからのn-day兵器化であり、embargo破りではないと作者が表明
oss-securityに経緯説明を投稿済み
関連
Dirty Frag: 同時期に公開された別のLinux LPEで同クラスの脆弱性
Dirty Pipe: 同系統のページキャッシュ書き込みエクスプロイト
Magentoや共有ホスティング、Kubernetes、CI runner環境での影響が大