itsystem/afalg-check

GitHub: itsystem/afalg-check

一款 Linux 安全诊断工具,用于检查 AF_ALG/algif_aead 可用性并评估 CVE-2026-31431 及 Dirty Frag 漏洞风险,同时输出针对性的缓解建议。

Stars: 1 | Forks: 0

# Itsumma AF_ALG 检查 一款 Linux 诊断实用工具,用于检查: - `AF_ALG` / `algif_aead` 的可用性,并帮助评估 `CVE-2026-31431` (copy-fail) 风险; - 针对 **Dirty Frag** 漏洞类别(`xfrm-ESP Page-Cache Write` + `RxRPC Page-Cache Write` 攻击链)的攻击面,检查 `esp4`、`esp6`、`rxrpc` 组件是否存在,并输出缓解措施。 ## 功能特性 - 执行针对 `AF_ALG AEAD` 的 `socket + bind` 运行时探测; - 通过 `/proc/modules`、`modules.builtin`、`modules.builtin.modinfo` 分析内核组件; - 尝试根据 changelog (`rpm`/Debian changelog) 确定是否存在供应商的 backport 修复; - 显示持有 `AF_ALG` 套接字的进程(`/proc/*/fd`,尽力而为); - 针对不同的发行版系列输出缓解措施建议。 针对 Dirty Frag 的附加功能: - 检查 `esp4`、`esp6`、`rxrpc` 的存在情况(已加载 / 内置 / 未知); - 执行 `socket(AF_NETLINK, NETLINK_XFRM)` 和 `socket(AF_RXRPC)` 运行时探测,且不改变系统配置; - 如果组件存在,则输出紧急缓解措施(禁用模块加载 + 尝试卸载)。 ## 系统要求 - Linux; - Go `1.24+`; - 为了完整扫描 `/proc/*/fd`,最好以 `root` 用户身份运行。 ## 构建 入口点 (Entrypoint) 位于项目根目录,构建在根目录下执行: ``` 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` 的最终评估(包括尝试检测供应商 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:基本缓解命令 来自公开的 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` 运行时探测未通过,则在此检查的上下文中,该攻击向量被视为不可用。
标签:0day挖掘, AF_ALG, algif_aead, CVE-2026-31431, Dirty Frag, DNS枚举, EVTX分析, Golang, Go语言, 内核安全, 后渗透检测, 安全合规, 安全基线检查, 安全渗透, 安全编程, 库, 应急响应, 插件系统, 无线安全, 日志审计, 程序破解, 系统诊断, 系统运维, 缓解措施建议, 网络代理, 网络安全审计, 网络安全工具