
LinuxカーネルCVE-2026-31431(Copy Fail)用の概念実証エクスプロイト。AF_ALGを悪用してページキャッシュ内のsetuid-rootバイナリを破損させ、権限昇格を達成します。バックアップ/リストアと整合性検証機能を備えています。
Linuxカーネルの脆弱性 CVE-2026-31431(別名 Copy Fail)の概念実証エクスプロイト再現です。
クレジット: Copy Fail
/usr/bin/su)のバックアップを作成git clone https://github.com/MohamedKarrab/Copy-Fail-CVE-2026-31431.git
cd Copy-Fail-CVE-2026-31431
# デフォルトでは /usr/bin/su を対象とする
python fail.py
# または任意の setuid-root バイナリ(passwd、mount、chsh、sudo、pkexec...)
python fail.py /usr/bin/passwd
エクスプロイトが失敗した場合、対象バイナリが元の状態に復元されない可能性があります。以下の方法で修正してください:
デバイスを再起動するだけです。再起動するとページキャッシュがクリアされます(このエクスプロイトはディスク上のバイナリを変更しません)。
または、信頼できるパッケージからクリーンな /usr/bin/su(または選択したバイナリ)を復元してください。
Debian / Ubuntu:
sudo apt-get install --reinstall util-linux
Fedora / RHEL:
sudo dnf reinstall util-linux
Arch:
sudo pacman -S util-linux
このエクスプロイトは、AF_ALG AEAD実装を悪用して、/usr/bin/su(setuid-rootバイナリ)のカーネルページキャッシュに任意の4バイトチャンクを書き込みます。
sendmsg/splice ペアを使用して、AES-CBC-HMAC処理にデータを注入/usr/bin/su のメモリ内 .text セクションを破損最後に、/usr/bin/su を実行すると、汚染されたページキャッシュが読み込まれ、setuidにより注入されたコードがrootとして実行されます。
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif-aead.conf
rmmod algif_aead 2>/dev/null