mrowkoob/copy-fail-mitigate-no-reboot

GitHub: mrowkoob/copy-fail-mitigate-no-reboot

针对 Copy Fail 内核漏洞(CVE-2026-31431)的免重启应急缓解脚本,通过禁用并卸载 algif_aead 模块临时阻断攻击路径。

Stars: 0 | Forks: 0

# copy-fail-mitigate 针对 Copy Fail / CVE-2026-31431 的最小化免重启缓解辅助工具。 此脚本禁用了存在漏洞的 `algif_aead` 模块路径,并尝试立即卸载该模块。 它还会对 `/usr/bin/su` 尽力执行页缓存驱逐。 ## 它的功能 该脚本运行了公开的 Copy Fail 安全公告中所推荐的缓解措施: ``` echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif.conf rmmod algif_aead 2>/dev/null || true ``` 这可以防止 `algif_aead` 再次通过 `modprobe` 被加载,并在可能的情况下将其从运行中的内核卸载。 随后,它会运行一小段 Python 代码,针对 `/usr/bin/su` 的第一页调用带有 `POSIX_FADV_DONTNEED` 参数的 `posix_fadvise()`: ``` os.posix_fadvise(fd, 0, page, os.POSIX_FADV_DONTNEED) ``` 这是为了尽力将相关页从页缓存中驱逐。它不能替代补丁修补, 也无法保证能清理每一个可能被作为目标的 setuid 二进制文件。 ## 为什么是 `/usr/bin/su`? 公开的 Copy Fail 概念验证(PoC)默认将目标定为 `/usr/bin/su`。因此, 此脚本在禁用易受攻击的模块路径之后,会尝试将 `/usr/bin/su` 的第一页从页缓存中丢弃。 如果您的环境中存在针对另一个 setuid 二进制文件进行测试或疑似遭到利用的情况, 请审查并相应地调整此脚本。 ## 用法 请先审查该脚本。 ``` sudo ./mitigate-copy-fail.sh ``` ## 验证 检查模块是否未加载: ``` lsmod | grep '^algif_aead' || echo "algif_aead is not loaded" ``` 检查 modprobe 规则是否存在: ``` cat /etc/modprobe.d/disable-algif.conf ``` 预期输出: ``` install algif_aead /bin/false ``` 尝试手动加载模块: ``` sudo modprobe algif_aead ``` 它应该会失败或拒绝加载。 ## 还原 仅在安装了已修复的内核或接受相关风险后,才执行此还原操作。 ``` sudo rm -f /etc/modprobe.d/disable-algif.conf sudo modprobe algif_aead ``` ## 限制 此脚本不会: * 修补内核; * 验证当前运行的内核是否存在漏洞; * 保证驱逐所有相关的页缓存状态; * 检查所有 setuid 二进制文件; * 替代厂商的安全更新; * 提供容器或沙箱加固。 对于不受信任的工作负载(例如容器、沙箱、CI 运行器和多用户主机), 建议采取额外的加固措施,例如使用 seccomp 阻止创建 `AF_ALG` 套接字。 ## 参考 * [https://copy.fail/#mitigation](https://copy.fail/#mitigation)
标签:0day挖掘, algif_aead, Copy Fail, Cutter, CVE-2026-31431, Linux内核, modprobe, PB级数据处理, posix_fadvise, Python, rmmod, setuid, Shell脚本, su命令, Web报告查看器, 免重启修复, 内核安全, 内核模块, 协议分析, 安全漏洞, 安全资源, 安全运维, 库, 应急响应, 无后门, 本地提权, 权限提升, 漏洞修复, 漏洞缓解, 热补丁, 系统加固, 网络安全培训, 逆向工具, 页面缓存