
Linux向け診断ユーティリティ。以下を確認します:
AF_ALG / algif_aead の利用可否と、CVE-2026-31431(copy-fail)のリスク評価の支援;xfrm-ESP Page-Cache Write + RxRPC Page-Cache Write の連鎖)に対する攻撃面の有無を、esp4、esp6、rxrpc コンポーネントごとに確認し、mitigation を表示します。本ツールは防御目的のチェック用であり、エクスプロイトではありません。
AF_ALG AEAD に対する runtime プローブ(socket + bind)を実行;/proc/modules、modules.builtin、modules.builtin.modinfo を通じてカーネルコンポーネントを解析;rpm/Debian changelog)から vendor backport 修正の有無を判定;AF_ALG ソケットを保持しているプロセスを表示(/proc/*/fd、ベストエフォート);Dirty Frag 向けの追加機能:
esp4、esp6、rxrpc の有無(loaded / built-in / unknown)を確認;socket(AF_NETLINK, NETLINK_XFRM) と socket(AF_RXRPC) の runtime プローブを実行;1.24+;/proc/*/fd の完全スキャンには root での実行が推奨されます。エントリポイントはプロジェクトルートにあり、ビルドはルートから実行します:
go build -o itsumma-afalg-check .
./itsumma-afalg-check
起動時:
Itsumma Security Check — AF_ALG / CVE-2026-31431
以降:
AF_ALG(socket + bind)の runtime プローブ結果;modules.builtin の利用可否;af_alg と algif_aead の状態(loaded / built-in / unknown);CVE-2026-31431 に関する最終評価(vendor backport の判定を含む);AF_ALG ソケットを保持している現在のプロセス一覧(見つかった場合);cat /proc/cmdline
echo 3 | sudo tee /proc/sys/vm/drop_caches
modprobe -n -v algif_aead
lsmod | grep '^algif_aead\b' || echo 'algif_aead not loaded'
./itsumma-afalg-check
built-in シナリオの場合、modprobe/lsmod の代わりに以下も併せて確認すると有用です:
dmesg | grep -i 'algif_aead\|initcall_blacklist'
公開されている Dirty Frag runbook のコマンドです(esp4、esp6、rxrpc の読み込みを無効化し、既に読み込まれているモジュールのアンロードを試行します)。
IPSec / XFRM を使用している場合(例: strongSwan)、モジュールのアンロード前に flush を実行することを推奨します:
sudo ip xfrm state flush
sudo ip xfrm policy flush
echo 3 | sudo tee /proc/sys/vm/drop_caches
esp4/esp6/rxrpc が built-in としてビルドされている場合(modules.builtin にのみ表示される場合)、modprobe blacklist と rmmod では無効化できません。この場合はカーネルの更新/再ビルドが必要です。
strongSwan では、libcharon-extra-plugins インストール後に kernel-libipsec を有効化してください:
sudo sed -i 's/^\s*load\s*=\s*no/load = yes/' /etc/strongswan.d/charon/kernel-libipsec.conf
sudo systemctl restart strongswan || sudo systemctl restart strongswan-starter
lsmod | egrep '^(esp4|esp6|rxrpc)\b' || echo 'esp4/esp6/rxrpc not loaded'
sudo modprobe esp4 esp6 rxrpc || true
sudo modprobe -r esp6 rxrpc
sudo modprobe -r esp4 || true
sudo rmmod -f esp4
sudo sh -c "printf 'install esp4 /bin/false\ninstall esp6 /bin/false\ninstall rxrpc /bin/false\n' > /etc/modprobe.d/dirtyfrag.conf; rmmod esp6 rxrpc 2>/dev/null; rmmod -f esp4 2>/dev/null; true"
再確認:
modprobe -n -v esp4 esp6 rxrpc
lsmod | egrep '^(esp4|esp6|rxrpc)\b' || echo 'esp4/esp6/rxrpc not loaded'
./itsumma-afalg-check
algif_aead の存在は攻撃面を示しますが、最終的な判断はカーネルバージョンとディストリビューションの backport パッチに依存します。AF_ALG AEAD の runtime プローブが成功しない場合、このチェックでは当該ベクターは利用不可とみなされます。