用于 Linux 的诊断实用程序,用于检查:
AF_ALG / algif_aead 的可用性,并帮助评估 CVE-2026-31431(copy-fail)的风险;xfrm-ESP Page-Cache Write + RxRPC Page-Cache Write 链)的攻击面是否存在,按 esp4、esp6、rxrpc 组件进行检查,并打印缓解措施。该工具用于防御性检查,并非漏洞利用程序。
AF_ALG AEAD 执行运行时探测 socket + bind;/proc/modules、modules.builtin、modules.builtin.modinfo 分析内核组件;rpm/Debian changelog)判断是否存在 vendor backport 修复;AF_ALG 套接字的进程(/proc/*/fd,尽力而为);针对 Dirty Frag 的附加功能:
esp4、esp6、rxrpc 是否存在(已加载 / 内建 / 未知);socket(AF_NETLINK, NETLINK_XFRM) 和 socket(AF_RXRPC),不改变系统配置;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)运行时探测结果;modules.builtin 的可用性;af_alg 和 algif_aead 的状态(已加载 / 内建 / 未知);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 编译为内建(仅出现在 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 运行时探测未通过,则在本检查范围内该向量被视为不可用。