内核页表隔离

内核页表隔离(,缩写KPTI,也简称PTI,旧称KAISER)是Linux内核中的一种技术,旨在更好地隔离用户空间与内核空间的内存来提高安全性,缓解现代x86 CPU中的“熔毁(Meltdown)”硬件安全缺陷。

前身
KPTI补丁基于KAISER,它是一个用于缓解不太重要问题的早期补丁,当时业界还未了解到Meltdown的存在。

如果没有KPTI,每当执行用户空间代码(应用程序)时,Linux会在其分頁表中保留整个内核内存的映射,并保护其访问。这样做的优点是当应用程序向内核发送系统调用或收到中斷时,内核页表始终存在,可以避免绝大多数上下文交換相关的开销(TLB刷新、页表交换等)。

2005年,Linux内核采用了位址空間配置隨機載入(KASLR)隐匿用户空间中的相关内核地址,增加了利用其他内核漏洞的难度。尽管阻止了对这些内核映射的访问,但在此后发现,现有的英特尔x86处理器(截至2017年12月)还存在着多处可能泄露这些内存位置的旁路攻击,可能绕过KASLR。AMD称其处理器不受这些攻击的影响,所以不需要KPTI作为缓解措施。,并被反向移植到Linux内核4.14.11。Windows和macOS也发布了类似的更新。

使用内核启动选项“pti=off”可以部分禁用内核页表隔离。依规定也可对已修复漏洞的新款处理器禁用内核页表隔离。

参见

  • 熔毁 (安全漏洞)
  • 幽灵 (安全漏洞)
  • 奔腾浮点除-{}-错误

参考文献
外部链接

评论 (0)

  • 还没有评论,来抢沙发吧。