
Alpine Linux 上で動作する、よりポータブルな copyfail LPE (CVE-2026-31431) の PoC
これは、Copy Fail LPE(CVE-2026-31431)をより最小限に移植したもので、/etc/passwdの最初の数バイトにパッチを当て、rootにsuする際にパスワードを不要にします。これにより、元のエクスプロイトの全体サイズが削減され、可搬性が向上します。Alpineのようなディストリビューションは、スタンドアロンなsuバイナリとglibcリンケージの代わりにbusybox/muslを使用しているため、元のバイナリパッチ手法は一般に機能しません。私は特にAlpineで動作する移植版を作りたかったのですが、この手法は、より広く利用されているターゲット(/etc/passwd)を変更することに依存しているため、基盤となるcoreutilの形式やCPUアーキテクチャに関係なく、脆弱なカーネルを持つほぼすべてのディストリビューションで動作するはずです。(注:このPoCはコンテナエスケープではありません)
可搬性のあるスタンドアロンバイナリにはGo実装を使用してください:
go build -o exp main.go
./exp

または、非特権ユーザーとして python3 exp.py を実行するだけで、ルートシェルを楽しめます。

Alpine Linux 3.20.5(カーネル 6.6.69)でテスト済み。
圧縮されたブロブにはバイト文字列 root::0:0: が含まれており、これによりrootの元のエントリ(root:x:0:0:root:/root:/bin/sh)から 'x' が削除され、suが呼び出された際に/etc/shadow内のパスワードチェックがバイパスされます。
参考リンク: