
CVE-2026-31431 (Copy Fail) 向け SSH ポスチャヘルパー: カーネルと algif_aead インベントリ
Bashヘルパー:ホストを発見し(オプションでnmapによるCIDR)、その後SSH読み取り専用でCVE-2026-31431(Copy Fail / algif_aead)、CVE-2026-31677 / CVE-2026-43077(AF_ALG RXヒューリスティック)、CVE-2026-23111(nftables + ユーザ名前空間)、CVE-2026-23102(arm64 SVE/SME)をチェックします。ヒューリスティックのみ — エクスプロイトではありません。配布元で確認してください。
機密として扱ってください: パスワードファイルがディスク上に保存されます。出力にはホストとカーネルの状態がリストされます。
| コンポーネント | 必要な場合 |
|---|---|
bash, ssh, sshpass | 常に |
nmap | CIDRターゲット: nmap -sn -PS22が必要です。COPYFAIL_PREAUTH_NMAP=1(デフォルト)の場合、SSHバナー後にホストごとに nmap -p22 -sV も実行します — 遅くなりますが、macOS/Windowsの識別に役立ちます。COPYFAIL_PREAUTH_NMAP=0 に設定すると、ホストごとのnmapをスキップします(それでもCIDRスキャンにはnmapが必要です)。 |
sudo cp copyfail-creds.example /etc/copyfail-creds && sudo nano /etc/copyfail-credsuser:password(最初の:のみがユーザーとパスワードを区切ります)。600 が必要:sudo chmod 600 /etc/copyfail-credssudo**で実行します(または自分のユーザーにchownし、引き続き600にします)。CREDS_FILE=/path/to/creds ./copyfail_scan.sh [TARGET]
TARGET: CIDR、単一IP/ホスト名、またはホストリストへのパス(#コメント可)。ターゲットを省略するとスクリプトのデフォルトを使用します(copyfail_scan.sh内のTARGET=を参照)。
chmod +x copyfail_scan.sh
sudo CREDS_FILE=/etc/copyfail-creds ./copyfail_scan.sh
sudo CREDS_FILE=/etc/copyfail-creds ./copyfail_scan.sh 192.168.1.0/24
CREDS_FILE=~/creds ./copyfail_scan.sh ./hosts.txt
出力: stdoutのみ(レポートファイルなし)。保存するにはteeを使用してください。ホストごとの行の後に:=== Summary report ===(COPYFAIL_SUMMARY=0の場合を除く)— 確認済み(良好) vs 要確認。同じサマリー行を共有するホストはマージされます(カンマ区切りのラベル)。
# 例:ホストごとのnmapなし、逐次実行
COPYFAIL_PREAUTH_NMAP=0 COPYFAIL_PARALLEL=1 sudo ./copyfail_scan.sh 192.168.54.93
31431 PATCHED、31431 VULN - MITIGATED、31431 NO algif_aead - VERIFY、[SKIP] / [SKIP - PRE-AUTH] のようなタグはスクリプトのヒューリスティックです。末尾の 23111= / 23102= フィールドはnftables/ユーザ名前空間とarm64 SVEプローブを要約します。*-pve / ベンダーカーネル: uname -r は上流のNVDタプルと一致しない場合があります — このスクリプトだけに頼らず、ディストリビューション/Proxmoxのセキュリティ通知とインストール済みカーネルパッケージを使用してください。echo 'install algif_aead /bin/false' | sudo tee /etc/modprobe.d/disable-algif.conf && sudo rmmod algif_aead 2>/dev/nullMIT — LICENSE を参照。
| 変数 | デフォルト | 役割 |
|---|
CREDS_FILE | /etc/copyfail-creds | user:passwordファイル |
COPYFAIL_PREAUTH | 1 | TCP/22 SSHバナー;ログイン前に明らかにLinux以外のホストをスキップ |
COPYFAIL_PREAUTH_NMAP | 1 | バナーが不明瞭な場合の追加のnmap -p22 -sV(遅い) |
COPYFAIL_PREAUTH_VERBOSE | 0 | 1 = 事前認証スキップ時に切り詰めたバナーを表示 |
COPYFAIL_PARALLEL | 24 | 最大同時プローブ数(1 = 逐次) |
COPYFAIL_ORDERED_OUTPUT | 1 | 並列時、プローブ順に出力行をバッファリング(0 = インターリーブ) |
COPYFAIL_PTR_LOOKUP | 1 | nmap/リストに名前がない場合にgetentでIPv4逆引きDNS |
COPYFAIL_SUMMARY | 1 | グループ化された最終サマリーを表示(0 = スキップ) |
COPYFAIL_BANNER_TIMEOUT | 3 | ポート22でのSSH識別待ち時間(秒) |
COPYFAIL_SSH_CONNECT_TIMEOUT | 3 | ssh ConnectTimeout(秒) |
COPYFAIL_NO_BANNER_SKIP_SSH | 1 | 事前認証でバナーが表示されない場合、SSH試行をスキップ(バナーが非常に遅い場合は0) |