Linux内核v5.5安全特性深度解析
Linux内核v5.5安全特性
先前版本:v5.4
本篇博客将聚焦Linux内核v5.5版本中值得关注的安全改进:
1. 通过LSM限制perf_event_open()
针对perf子系统的反复出现的漏洞,Joel Fernandes实现了通过LSM(如SELinux、Apparmor等)钩子来控制perf_event_open()
调用的方案,替代了之前被拒绝的sysctl扩展方案。
2. 通用快速全功能refcount_t
Will Deacon将x86和arm64的refcount_t加固工作提炼为架构无关的C语言实现,速度接近x86汇编版本且覆盖更多场景(如从零递增),现默认适用于所有架构。
3. 异常表链接脚本清理
为解决Execute-Only内存实现中的内存读取问题,重新调整了异常表(纯数据表)的存放位置,并更新x86段填充字节为陷阱指令(0xCC/int3)以增强攻击精确性要求。
4. 32位PowerPC的KASLR
Jason Yan为32位PowerPC添加了内核文本基址随机化支持(KASLR)。
5. RISC-V的seccomp支持
David Abdurachmanov为RISC-V架构添加seccomp支持,过程中还完善了seccomp自测试代码的边界情况处理。
6. seccomp USER_NOTIF延续功能
Christian Brauner实现SECCOMP_USER_NOTIF_FLAG_CONTINUE
标志,允许监控进程指示seccomp正常继续系统调用,显著提升容器监控工具效率。
7. x86平台的EFI_RNG_PROTOCOL支持
Dominik Brodowski为x86添加早期启动阶段的EFI随机数生成器接口支持,用于SLUB分配器等需要早期随机化的场景。
8. MIPS平台的FORTIFY_SOURCE
Dmitry Korotin为MIPS启用CONFIG_FORTIFY_SOURCE
,可检测memcpy/strcpy类函数的编译时及运行时缓冲区溢出。
9. 限制copy_{to,from}_user()大小为INT_MAX
为防止大小计算溢出,将这两个函数的参数限制为INT_MAX。
其他重要更新(由Alexander Popov补充):
- KASan支持vmalloc内存检测,可分析包含VMAP栈的内存区域
- MIPS现支持GCC插件和KCOV构建
- userfaultfd要求
CAP_SYS_PTRACE
权限以防止描述符注入攻击
编辑说明:已整合Alexander Popov的补充内容
下期预告:Linux v5.6安全特性分析
©️ 2020, Kees Cook. 本文采用知识共享署名-相同方式共享4.0许可
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
公众号二维码