Linux Kernel Runtime Guard 经过 7 年终于发布了 1.0 版本,引入了对内核 6.17 的支持、错误修复、性能增强和代码清理。
由 Openwall 项目维护的Linux 内核运行时保护 ( LKRG ) 于 2018 年首次公开发布,至今已七年多,现已正式发布 1.0 版本。
如果您不熟悉,LKRG 是一个内核模块,充当 Linux 内核的安全层。它的主要作用是在内核运行时对其进行监控,并捕获任何可疑或不安全的行为。
例如,如果攻击者试图通过覆盖内核凭据或更改内核内存来利用内核漏洞,LKRG 可以检测到该行为。当它发现异常时,它会记录日志、终止违规进程,或根据其配置采取其他防御措施。
换句话说,LKRG 不会取代 SELinux 或 AppArmor 等其他安全功能,而是通过在内核级别添加检查来补充它们。现在,回到正题。
在 0.9.9 版本和 1.0 版本之间,LKRG 进行了多项重大改进。LKRG 现在支持最新的主流 Linux 内核,最高测试版本为 6.17-rc4。此外,还针对 Linux 6.13 及更高版本进行了调整,包括删除override_creds()
和 的钩子revert_creds()
,并在其他位置扩展了针对旧内核的凭证指针覆盖检查。
OverlayFS 兼容性也得到了改进,尤其是在 6.10 到 6.12 版本上运行容器时避免了误报。此外,代码库现在更加精简,比以前减少了约 2,400 行。
在性能方面,每个任务的影子数据查找现在都无需锁定,并且影子数据锁定本身也进行了彻底改进,新增了更细粒度的锁。许多钩子从 kretprobes 切换到 kprobes,提高了可靠性和速度,同时减少了重复代码。完整性违规检查被封装在 中unlikely()
,使热路径免受不必要的缓存混乱的影响。
此外,LKRG 1.0 修复了多个竞争条件,包括涉及 SECCOMP 过滤器、命名空间验证和 sysctl 更改的竞争条件。与较新内核上的 seccomp 模式损坏相关的误报也得到了解决。此外,LKRG 改进了与 x86_64 上 Intel CET IBT 和 Clang 的 KCFI 的兼容性,尽管 GCC 仍然是官方支持的编译器。
其他值得注意的更新包括 LKRG 用户空间记录工具的强化版本、更优的错误报告以及对 CI 测试的调整。据开发人员介绍,测试现已覆盖搭载最新主线内核的 Fedora、Ubuntu 24.04 LTS 至 25.10 版本,以及已停产的旧版 CentOS 7。
更新的软件包已通过 Rocky Linux SIG/Security 仓库提供,Rocky Linux 9.6 和 8.10 的版本即将推出。这些软件包还兼容其他企业级 Linux 发行版,包括 AlmaLinux 和 RHEL 8/9。
更多信息,请参阅公告。