
CVE-2026-31431 Copy Fail Linuxカーネル脆弱性検出スクリプト
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 に権限昇格
| カーネルブランチ | 影響範囲 | 修正済みバージョン |
|---|---|---|
| mainline / 6.19.x | < 6.19.12 | >= 6.19.12 |
| 6.18.x (stable) | < 6.18.22 | >= 6.18.22 |
| 6.12.x (LTS) | < 6.12.23 | >= 6.12.23 |
| 6.6.x (LTS) | < 6.6.87 | >= 6.6.87 |
| 6.1.x (LTS) | < 6.1.130 | >= 6.1.130 |
| 4.14 ~ < 7.0 | すべて影響あり | 安全なバージョンへアップグレード |
| < 4.14 | 影響なし | - |
| >= 7.0 | 修正済み | - |
# スクリプトをダウンロード
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.0] | 影響を受けるバージョン範囲表 | 各ブランチの影響あり/修正済みバージョン対照表を表示 |
| [1.1] | カーネルバージョン | 既知の影響範囲と修正済みベースラインを照合 |
| [1.2] | algif_aead モジュール状態 | 4状態: 内蔵 / ロード済み / 存在(必要に応じてロード可能)/ 存在しない |
| [1.3] | authencesn 暗号化テンプレート | /proc/crypto で利用可能かどうか |
| [1.4] | 緩和策 | initcall_blacklist + modprobe.d ブラックリスト |
| [1.5] | 総合判定 | 複数要素のクロスチェックで safe/medium/high/critical の結論を提示 |
| 番号 | 検出内容 | 説明 |
|---|---|---|
| [2.1] | SUID ページキャッシュ検出 | dd direct I/O とキャッシュハッシュの比較 |
| [2.2] | モジュールロード履歴 | dmesg + lsmod のロード時間 |
| [2.3] | Shell 履歴スキャン | 全ユーザーの .bash_history キーワードマッチング |
| [2.4] | システムファイル検出 | UID=0 の異常ユーザー / passwd & SUID の変更時刻 |
| [2.5] | 一時ディレクトリスキャン | /tmp /var/tmp /dev/shm の直近24時間の不審ファイル |
| [2.6] | システムログ監査 | su 失敗記録 + sudo 脆弱性キーワード |
| [2.7] | コンテナエスケープ検出 | Docker 環境 + seccomp + /proc/1/root |
| 方法 | 原理 | 再起動が必要か | 適用シナリオ |
|---|---|---|---|
| 方法1 | modprobe.d ブラックリスト + rmmod | いいえ | CONFIG=m(モジュールモード) |
| 方法2 | initcall_blacklist カーネルパラメータ | はい | CONFIG=y(内蔵モード)または多層防御 |
| 方法3 | カーネルを安全なバージョンへアップグレード | はい | 恒久的な修正(推奨) |
Ubuntu / Debian / Kali / CentOS / RHEL / Rocky / AlmaLinux / Fedora / openSUSE / Arch Linux / Alpine Linux
MIT License
本ツールはセキュリティ研究および許可を得たペネトレーションテストのみを目的としています。利用者は現地の法令を遵守し、明確な許可を得た対象システム上でのみ使用する必要があります。開発者は、許可のない使用によって生じたいかなる結果についても責任を負いません。