CVE-2026-31431(Copy Fail)脆弱性診断スクリプト

脆弱性の概要
CVE-2026-31431(Copy Fail) は Linux カーネルのローカル権限昇格脆弱性であり、AF_ALG ソケット(アドレスファミリ 38)と splice() ゼロコピーシステムコールを組み合わせることで、ファイル書き込み権限を迂回してページキャッシュ(page cache)を改ざんし、書き込み権限のない SUID バイナリを改ざんして root 権限を取得します。
攻撃チェーン
socket(AF_ALG, SOCK_SEQPACKET, 0) # AF_ALG ソケットを作成
-> bind(authencesn(hmac(sha256),cbc(aes))) # AEAD 暗号化テンプレートをバインド
-> sendmsg(AEAD 操作) # カーネル暗号化パスをトリガー
-> splice(-> 対象ファイル) # ゼロコピー書き込み、権限チェックを迂回
-> /usr/bin/su などの SUID ファイルを改ざん # root に権限昇格
影響を受けるカーネルバージョン
スクリプト機能
- 脆弱性検出: カーネルバージョン判定 + algif_aead の4状態分析 + 緩和策チェック
- 侵入調査: SUID ページキャッシュ比較 + モジュールロード履歴 + Shell 履歴スキャン + システムファイル整合性 + ログ監査 + コンテナ検出
- 修正提案: 3つの防御方法(modprobe.d / initcall_blacklist / カーネルアップグレード)、ディストリビューション別に具体的なコマンドを提示
- 緊急対応: 侵入の痕跡を検出した場合、完全な緊急対応フローを自動出力
クイックスタート
# スクリプトをダウンロード
wget https://raw.githubusercontent.com/tangjie1/CVE-2026-31431-Check/main/cve-2026-31431-check.sh
# 実行権限を付与して実行(root が必要)
chmod +x cve-2026-31431-check.sh
sudo ./cve-2026-31431-check.sh
# 非対話モード(自動化/CI 向け)
sudo ./cve-2026-31431-check.sh --non-interactive
検出項目の説明
第一部:脆弱性検出 [1/3]
第二部:侵入調査 [2/3]
第三部:修正提案 [3/3]
対応システム
Ubuntu / Debian / Kali / CentOS / RHEL / Rocky / AlmaLinux / Fedora / openSUSE / Arch Linux / Alpine Linux
License
MIT License
免責事項
本ツールはセキュリティ研究および許可を得たペネトレーションテストのみを目的としています。利用者は現地の法令を遵守し、明確な許可を得た対象システム上でのみ使用する必要があります。開発者は、許可のない使用によって生じたいかなる結果についても責任を負いません。