このパッケージは、影響を受けるカーネル(バージョン 4.14 から 6.12.84、6.13 から 6.18.21 など)を実行している Linux システム上で、CVE-2026-31431 脆弱性(別名 Copy Fail)を検出し、緩和するための自動ソリューションを提供します。
ツールは以下で構成されています:
mitigate_copyfail.sh):
CONFIG_CRYPTO_USER_API_AEAD=m|y)を検出します。=m):install algif_aead /bin/false を含む /etc/modprobe.d/disable-algif-aead.conf を作成し、モジュールをアンロードします(rmmod)。=y):カーネルブートパラメータ を追加します(再起動が必要)。initcall_blacklist=algif_aead_initmitigation.yml):
重要な注意点: 緩和策は一時的です。恒久的な修正は、パッチ
a664bf3d603dを含むカーネルバージョン(≥6.18.22、≥6.19.12 または ≥7.0)にアップグレードすることです。
become: yes を使用)sudo 権限(緩和策を適用するため)検出スクリプト(Phalanx-CCS および Silent4Labs)は安全であり、脆弱性を悪用するものではありません。攻撃面を確認するだけです。
cve-2026-31431-mitigation/
├── README.md
├── scripts/
│ ├── mitigate_copyfail.sh # 統一スクリプト(検出 + 緩和)
│ ├── check_copyfail.py # Phalanx-CCS(到達可能性チェッカー)
│ └── check-copyfail.sh # Silent4Labs(リスク評価)
├── ansible/
│ ├── ansible.cfg # (オプション)Ansible 設定
│ ├── inventory.ini # サーバーインベントリ
│ └── mitigation.yml # メインプレイブック
└── resultados_cve/ # ログ用の自動生成フォルダ
git clone https://github.com/your-username/cve-2026-31431-mitigation.git
cd cve-2026-31431-mitigation/ansible
inventory.ini)リモートサーバーの例:
[servers]
server1 ansible_host=192.168.1.10 ansible_user=root
[localhost]
localhost ansible_connection=local
[all:vars]
ansible_become=yes
# ansible_become_password=my_password # sudo にパスワードを使用する場合
mitigation.yml 内のタスク Copy scripts to remote では、src: "../scripts/{{ item }}" を使用しています。相対パスが正しいことを確認するか、レイアウトに応じて変更してください。
ansible/ ディレクトリから以下を実行します:
ansible-playbook -i inventory.ini mitigation.yml -k -K
-k は SSH パスワードを要求します。-K は become(sudo)パスワードを要求します。ansible_connection=local で localhost を使用する場合、SSH は不要です。
プレイブックは以下のようなプレーンテキストのサマリーを表示します:
==========================================
MITIGATION RESULTS
==========================================
Host: server1
------------------------------------------
- Status: SYSTEM SECURE
- Code: (not applicable)
------------------------------------------
- Final score: 40 / 100
- Risk level: MEDIUM
==========================================
さらに、完全なスクリプト出力(日付、カーネルバージョン、検出メッセージなど)を含むログファイルが resultados_cve/<hostname>_mitigation.log に保存されます。
抽出された値に ? または Not detected が表示される場合は、mitigation.yml のデバッグタスクを有効にします:
when: false を when: true に変更するか(または when: true に設定して clean_stdout と正規表現の出力を表示)、タスク Create local results directory と Save full output to local file を編集します:
path: /absolute/path/resultados_cve
dest: "/absolute/path/resultados_cve/{{ inventory_hostname }}_mitigation.log"
コピータスクをコメントアウトし、Run mitigation script タスク内のパスを既存の場所に変更します。
最後のタスク(Clean up remote scripts)で when: false を when: true に変更します。
initcall_blacklist) による緩和策の有効化には再起動が必要です。プレイブックは自動的に再起動しません。メンテナンスウィンドウを計画する必要があります。CONFIG_CRYPTO_USER_API_AEAD=y(組み込みカーネル)のシステムでは、rmmod でモジュールをアンロードできません。唯一の方法はブートパラメータです。/proc/crypto および /boot/config-* を読み取るために権限が必要な場合があります。これらは become: yes で実行されます。このプロジェクトは MIT ライセンスの下で配布されています。サードパーティのスクリプト(Phalanx-CCS、Silent4Labs)はそれぞれのライセンスを保持します。
このツールが役立つと思われましたら、GitHub でスターをいただけると幸いです!