
CVE-2026-31431「Copy Fail」用のシェルスキャナー — Linuxカーネルのページキャッシュ破損 (algif_aead/AF_ALG) を悪用したローカル特権昇格を検出します。カーネルバージョン、パッチ適用状況、モジュール状態、setuid 露出、緩和策をチェックします。Debian 11–13 および Ubuntu 20.04–25.10 に対応。CI/CD 対応 (終了コード + JSON出力)。
CVE-2026-31431 "Copy Fail" 用のシェルベーススキャナーです。Linux カーネルの暗号化サブシステム(algif_aead / AF_ALG インターフェース)におけるローカル特権昇格の脆弱性です。権限のないローカルユーザーが setuid バイナリ(例: /usr/bin/su)のメモリ内ページキャッシュに 4 バイトを書き込むことで、ディスク上のファイルに触れることなく root シェルを取得できます。
a664bf3d603d| ディストリビューション | リリース | パッチ適用バージョン |
|---|---|---|
| Debian | 11 Bullseye | 5.10.251-3 |
| Debian | 12 Bookworm | 6.1.170-1 |
| Debian | 13 Trixie | 6.12.85-1 |
| Debian | Sid / Forky | 6.19.14-1 |
| Ubuntu | 20.04 LTS Focal (GA) | 5.4.0-220.240 |
| Ubuntu | 20.04 LTS Focal (HWE) | 5.15.0-135.145~20.04.1 |
| Ubuntu | 22.04 LTS Jammy (GA) | 5.15.0-135.145 |
| Ubuntu | 22.04 LTS Jammy (HWE) | 6.8.0-61.63~22.04.1 |
| Ubuntu | 24.04 LTS Noble | 6.8.0-61.63 |
| Ubuntu | 24.10 Oracular | 6.11.0-27.27 |
| Ubuntu | 25.04 Plucky | 6.14.0-15.15 |
| Ubuntu | 25.10 Questing | メインライン修正 (≥ 6.15) |
| 汎用 | 任意 | メインラインの範囲チェック(4.14 – 6.14 が脆弱) |
上記リリースをベースとする Ubuntu 派生ディストリビューション(Pop!_OS、Linux Mint、Elementary OS など)も、/etc/os-release 内の ID_LIKE を使用して検出されます。
# Basic scan
bash cve-2026-31431-detect.sh
# No colour output (log files, CI)
bash cve-2026-31431-detect.sh --no-colour
# JSON output (machine-readable, for pipelines)
bash cve-2026-31431-detect.sh --json
# Quiet mode — only print the summary
bash cve-2026-31431-detect.sh --quiet
# Combine flags
bash cve-2026-31431-detect.sh --json --quiet
root 権限は不要です。標準シェル(bash ≥ 4.3)と、ライブ AF_ALG ソケットテスト用の任意の python3 以外にインストールが必要なパッケージはありません。
| コード | 意味 |
|---|---|
0 | 脆弱な状態が見つからない |
1 | 脆弱な状態が 1 つ以上見つかった |
2 | スクリプトエラー / チェックを完了できない |
DevSecOps パイプラインでの使用を想定しています。JSON 出力を SIEM、チケットシステム、またはコンプライアンスダッシュボードにパイプしてください。
このスクリプトは結果を 2 言語で出力します。
両セクションは、各チェック結果の後に stdout に出力されます。
=== Kernel Version ===
[INFO] Distro flavour : ubuntu (id=ubuntu, codename=jammy, version=22.04)
[INFO] Kernel release : 5.15.0-135-generic
[OK] Kernel version
Reason : Ubuntu jammy: kernel 5.15.0-135.145 >= patched version 5.15.0-135.145
...
✅ PROTECTED — SYSTEM IS NOT VULNERABLE
❌ VULNERABLE — IMMEDIATE ACTION REQUIRED
✗ Kernel version
✗ Patch presence
✗ algif_aead module
✗ AF_ALG socket
✗ Setuid binaries
sudo apt update && sudo apt full-upgrade && sudo reboot
# After reboot: uname -v → must show >= 6.1.170-1 (Bookworm)
sudo apt update && sudo apt full-upgrade && sudo reboot
# After reboot: cat /proc/version_signature
CONFIG_CRYPTO_USER_API_AEAD=m(モジュールとしてビルド)の場合のみ有効です。このオプションが組み込まれている場合(=y)は効果がありません。
echo 'install algif_aead /bin/false' | sudo tee /etc/modprobe.d/disable-algif-aead.conf
sudo rmmod algif_aead 2>/dev/null || true
これは SSH、dm-crypt/LUKS、OpenSSL、GnuTLS、NSS、Web サーバー、ディスク暗号化には影響しません。
MIT
| # | チェック | 方法 |
|---|
| 1 | カーネルバージョン | uname -r / uname -v / dpkg / /proc/version_signature |
| 2 | パッチの有無 | Debian ビルドバージョン、Ubuntu パッケージバージョン、/proc/version のコミットプレフィックス |
| 3 | algif_aead モジュール | /proc/modules、modprobe.d ブラックリスト、ディスク上の .ko |
| 4 | AF_ALG ソケット | Python 3 によるライブ socket(AF_ALG, …) 試行 |
| 5 | setuid バイナリ | 書き込み対象となる一般的な setuid-root バイナリ |
| 6 | 緩和策 | AppArmor、SELinux、seccomp の状態 |
| 7 | カーネル設定 | CONFIG_CRYPTO_AUTHENC、CONFIG_CRYPTO_USER_API_AEAD |
| 8 | ユーザー名前空間 | unprivileged_userns_clone、max_user_namespaces |
| 9 | 透過的巨大ページ | THP 設定と悪用への影響 |
| 10 | 環境 | Docker / Kubernetes / WSL の検出、root 警告 |