
Bashスクリプトで、LinuxホストのCVE-2026-31431への曝露を評価し、カーネルモジュールの状態を確認し、algif_aeadをブロックして緩和策を適用し、カーネルパッケージを更新します。
このリポジトリは、Linuxホスト(特にUbuntu)における CVE-2026-31431 への曝露を評価し、algif_aead モジュールをブロックすることで簡単な緩和策を適用するために使用されるBashスクリプトを文書化したものです。
言語バージョン:
README.mdREADME.pt-BR.mdスクリプトは3つのモードをサポートしています:
--check: ホスト情報を収集し、現在のステータスを分類します。--mitigate: 脆弱なモジュールをブロックする modprobe ルールを作成し、アンロードを試みます。--update: apt を使用してカーネルパッケージのアップグレードを実行します。CVE-2026-31431 は、公開上 Copy Fail と呼ばれており、AF_ALG を介してカーネルユーザースペース暗号APIのAEADインターフェースを実装する algif_aead モジュールに関連するLinuxカーネルのローカル権限昇格の脆弱性です。
実際には、この問題により、低権限のローカルユーザーがこのサブシステムのメモリ処理経路における論理的な欠陥を悪用し、システム全体の整合性を侵害するまで影響を拡大できる可能性があります。kernel.org によって公開され、NVDに反映されているスコアは CVSS 7.8 で、ベクターは AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H であり、攻撃にはローカルでの実行が必要ですが、機密性、整合性、可用性に高い影響を与えることを意味します。
algif_aead にインプレース最適化が追加された 2017年 にカーネルに導入されました。2026年4月22日 にNVDで公開されました。Copy Fail という名前と公開された概念実証を伴う、この問題のより広範な公開開示は 2026年4月29日 に行われました。2026年4月1日 にコミットされました。公開された技術アドバイザリによると、この欠陥は以下の組み合わせに依存しています:
AF_ALG インターフェースalgif_aead モジュールsplice() の連鎖実際の結果として、ローカルプロセスが読み取り可能なファイルのページキャッシュバックアップページに対して、小さな制御された書き込みを実行できるようになります。好条件では、限定的なローカルでの足掛かりを root 権限昇格に変えるのに十分です。
実際のリスクは、単に「脆弱なLinuxカーネルを実行している」ことではなく、低信頼のローカルコードがこのカーネル経路に到達できるようにすることです。エンタープライズ環境では、これは通常、以下の場所での曝露が高くなることを意味します:
攻撃者がすでに何らかの形のローカル実行権限を持っている場合、root 権限がなくても、このCVEはホスト侵害への次のステップになり得ます。実際には、これにより以下のリスクが拡大します:
algif_aead モジュールの用途algif_aead はカーネルユーザースペース暗号インターフェース(AF_ALG)の一部です。これにより、アプリケーションはソケットを介してカーネルの暗号プリミティブ、特に AEAD 操作(認証付き暗号化)を使用できます。
このモジュールは、通常、ほとんどの標準的なサーバーワークロードには必須ではありません。CERT-EUが公開した緩和ガイダンスによると、一時的な緩和策として algif_aead を無効にすることは:
dm-crypt または LUKS には影響しないはずですkTLS には影響しないはずですIPsec/XFRM には影響しないはずですOpenSSL、GnuTLS、NSS、または SSH には影響しないはずです一方で、無効にすると以下に影響を与える可能性があります:
afalg エンジンを使用するように明示的に設定されたアプリケーションAF_ALG ソケットを直接開くソフトウェアaead、skcipher、または hash を使用するカスタム統合言い換えれば、ほとんどの企業ホストでは、モジュールをブロックしても影響は低い傾向があります。アプライアンス、カスタム暗号スタック、または高度に最適化されたソフトウェア経路では、ロールアウト前に影響を検証する必要があります。
モジュールをブロックすると曝露は直ちに軽減されますが、トレードオフが伴います:
AF_ALG に依存するアプリケーションは起動に失敗するか、カーネルバックアップの暗号アクセラレーションを失う可能性があります本番環境では、制御されたメンテナンスウィンドウで緩和策を適用し、その後クリティカルなアプリケーションを検証する方が安全なアプローチです。
モジュールのブラックリスト登録は一時的な緩和策にすぎません。恒久的な修正は以下のとおりです:
追加の推奨対策:
seccomp を使用して AF_ALG ソケットの作成を制限するafalg またはカーネル暗号APIが明示的に使用されている場所を確認するスクリプトは以下を検査します:
/etc/os-release を介したオペレーティングシステムalgif_aead モジュールの存在modprobe ルールによってブロックされているかどうか/var/run/reboot-required)pro fix CVE-2026-31431 --dry-run を介してUbuntu Proによって報告されたステータスこれに基づいて、以下の分類のいずれかを返します:
PATCHED_OR_NOT_AFFECTEDLIKELY_NOT_VULNERABLEMITIGATEDVULNERABLE_MODULE_LOADEDPOTENTIALLY_VULNERABLEUNKNOWN要約すると:
PATCHED_OR_NOT_AFFECTED になります。algif_aead モジュールが現在のカーネルに存在しない場合、ステータスは LIKELY_NOT_VULNERABLE になる傾向があります。MITIGATED になります。VULNERABLE_MODULE_LOADED になります。POTENTIALLY_VULNERABLE になります。modinfomodprobelsmodawkgrephostnameuname--update 用の apt-getsudoproスクリプトファイルが check_cve_2026_31431.sh という名前の場合:
chmod +x check_cve_2026_31431.sh
./check_cve_2026_31431.sh --check
./check_cve_2026_31431.sh --check
出力例:
Host: srv-app-01
OS: Ubuntu 24.04 LTS
Kernel: 6.8.0-58-generic
CVE: CVE-2026-31431
Module exists: 1
Module loaded: 0
Module blocked: 1
Ubuntu affected: yes
Fix available: yes
Reboot required: 0
Status: MITIGATED
Reason: algif_aead exists but is blocked and not loaded
./check_cve_2026_31431.sh --check --json
例:
{"host":"srv-app-01","os":"Ubuntu 24.04 LTS","kernel":"6.8.0-58-generic","cve":"CVE-2026-31431","module":"algif_aead","module_exists":1,"module_loaded":0,"module_blocked":1,"ubuntu_affected":"yes","fix_available":"yes","reboot_required":0,"status":"MITIGATED","reason":"algif_aead exists but is blocked and not loaded"}
この出力は、自動化、資産インベントリ、およびコンプライアンスパイプラインに役立ちます。
--mitigate モードは以下のファイルを作成します:
/etc/modprobe.d/disable-algif_aead-CVE-2026-31431.conf
以下の内容で:
install algif_aead /bin/false
blacklist algif_aead
その後、スクリプトは以下のコマンドでメモリからモジュールを削除しようとします:
modprobe -r algif_aead
使用方法:
./check_cve_2026_31431.sh --mitigate
ユーザーが root でない場合、スクリプトは sudo を使用しようとします。
--update モードは以下を実行します:
apt-get update
apt-get install --only-upgrade -y 'linux-image-*' 'linux-modules-*' 'linux-aws*'
使用方法:
./check_cve_2026_31431.sh --update
このモードは、DebianおよびUbuntuベースのシステムでカーネル関連パッケージのアップグレードを試みます。他の環境では、この手順は適用されない場合があります。
./check_cve_2026_31431.sh --help
出力:
Usage: ./check_cve_2026_31431.sh [--check|--mitigate|--update] [--json]
ubuntu_affected および fix_available フィールドは、pro コマンドの存在に依存します。--update 手順はUbuntuおよびDebian向けのパッケージパターンを使用しており、すべてのカスタムカーネルをカバーできない場合があります。--check を実行してホストを評価します。--mitigate を実行します。--update を実行するか、公式ベンダーアップデートを適用します。--check --json を実行して最終状態を検証し、証拠を保持します。公開の明確さのために、スクリプトは理想的には以下のような説明的な名前を使用する必要があります:
check_cve_2026_31431.sh
SEC17 の功績により資料が整理され公開されています。
公式ウェブサイト:
https://sec17.com