philfry/cve-2026-31431-ftrace

GitHub: philfry/cve-2026-31431-ftrace

利用 Linux ftrace 机制构建内核模块,在不依赖 eBPF-LSM 的条件下临时缓解 CVE-2026-31431 漏洞。

Stars: 12 | Forks: 3

# 使用 ftrace 缓解 cve-2026-31431 目前用于缓解 cve-2026-31431 的 ebpf 解决方案需要在启动时设置 `lsm=bpf`, 而这通常不是默认配置。对于 OracleLinux,该选项从 2025 年 12 月起在 **UEKr7u3** 和 **UEKr8u1** 中默认启用。 要检查您是否可以使用 ebpf-lsm 来缓解 _copyfail_,请检查 `/sys/kernel/security/lsm` 中是否包含 `bpf`。 由于我们的部分机器仍在运行稍旧的内核(由于某些原因), 我寻找了其他方法来缓解此安全问题,无论是通过阻止 `AF_ALG/AEAD` 还是直接一次性阻止 `AF_ALG`。 我想到了编写一个内核模块来拦截 `__sock_create` 并阻止 `AF_ALG`,或者拦截 `aead_bind` 并阻止所有请求。 当时的想法是使用 `ftrace` 来实现,这在 **UEKr7** 及更高版本中可用。 要编译这些模块,请尝试以下操作: ``` git clone this_repository cd this_repository make ``` 对于使用 UEK 的 Oracle Linux,请确保在运行 `make` 之前安装并使用正确的软件包: ``` . /etc/os-release releasever=${VERSION/.*} uek=7 # or 8, whatever you use 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` 请求都被阻止,同时没有影响其他地址族。 我在一些机器上对此进行了测试,对我来说它看起来很稳定。我不保证它同样适用于您, 其他的攻击向量可能会绕过此模块,或者该模块也未必不会导致您的机器变得不稳定。 然而,作为一个快速的修复措施,它可以填补机器最终能够重启之前的这段空档期。
标签:AEAD, AF_ALG, CVE-2026-31431, ftrace, Linux内核模块, LSM BPF, Oracle Linux, UEK, Web报告查看器, 内核加固, 内核开发, 动态追踪, 子域名枚举, 安全渗透, 安全防护, 客户端加密, 漏洞拦截, 漏洞缓解, 系统安全, 网络安全, 隐私保护