
cve-2026-31431 を緩和するための ebpf ソリューションは、ブート時に lsm=bpf が必要ですが、
これは通常デフォルトでは設定されていません。OracleLinux では、2025年12月以降、
UEKr7u3 と UEKr8u1 でデフォルトで有効化されました。
ebpf-lsm を使用して copyfail を緩和できるかどうかを確認するには、
/sys/kernel/security/lsm に bpf が含まれているか確認してください。
私たちのマシンの一部は($reasons により)少し古いカーネルを実行しているため、
このセキュリティ問題を緩和する別の方法を探しました。AF_ALG/AEAD をブロックするか、
AF_ALG をまとめてブロックする方法です。
__sock_create をインターセプトして AF_ALG をブロックする、または
aead_bind をインターセプトしてすべてのリクエストをブロックするカーネルモジュールを考えました。
そのアイデアは ftrace を使用して実現することでした。
モジュールをコンパイルするには、次の手順を試してください:
git clone this_repository
cd this_repository
make
Oracle Linux で UEK を使用する場合は、make を実行する前に正しいパッケージをインストールして使用してください:
. /etc/os-release
releasever=${VERSION/.*}
uek=7 # または 8、使用しているものに合わせてください
dnf -y --enablerepo=ol${releasever}_UEKR${uek} install kernel-uek-devel make gcc kernel-headers
# 次のいずれかが必要になる場合があります:
# oel9/uekr8 の場合
. /opt/rh/gcc-toolset-14/enable
# oel8/uekr7 の場合
. /opt/rh/gcc-toolset-11/enable
次にモジュールをロードします:
# AF_ALG をまとめてブロック
insmod /path/to/af_alg_block.ko
# または AF_ALG/AEAD のみをブロック
insmod /path/to/af_alg_aead_block.ko
これで、AF_ALG へのすべてのリクエスト、またはすべての AEAD バインディング(ロードしたモジュールに応じて)がブロックされ、すべての試行がログに記録されるはずです。
私はカーネル開発者ではありません。ftrace のドキュメントを調査し、試行錯誤を重ねてこのモジュールを構築し、
他のアドレスファミリに影響を与えることなく、すべての AF_ALG リクエストがブロックされるまで調整しました。
いくつかのマシンでテストしましたが、私の環境では安定して動作しています。あなたの環境で動作する保証はありません。 他の攻撃ベクトルがこのモジュールを回避する可能性がありますし、このモジュールがマシンを不安定にする可能性もあります。
ただし、マシンを最終的に再起動できるようになるまでの間を埋めるための迅速な修正策です。