内核页表隔离

✍ dations ◷ 2025-04-25 05:14:21 #Linux内核功能,虚拟内存,X86架构

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

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

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

2005年,Linux内核采用了地址空间配置随机加载(KASLR)隐匿用户空间中的相关内核地址,增加了利用其他内核漏洞的难度。尽管阻止了对这些内核映射的访问,但在此后发现,现有的英特尔x86处理器(截至2017年12月)还存在着多处可能泄露这些内存位置的旁路攻击,可能绕过KASLR。AMD称其处理器不受这些攻击的影响,所以不需要KPTI作为缓解措施。

2018年1月,影响Intel x86处理器的熔毁漏洞被公布。KAISER补丁改为修复此问题,并更名为KPTI,因为新型攻击很类似,尽管更为严重。

KPTI通过完全分离用户空间与内核空间页表来解决页表泄露。支持进程上下文标识符(PCID)特性的x86处理器可以用它来避免TLB刷新,但即便如此,它依然有很高的性能成本。据KAISER原作者称,其开销为0.28%;一名Linux开发者称大多数工作负载下测得约为5%,但即便有PCID优化,在某些情况下开销高达30%。

KPTI在2018年早期被合并到Linux内核4.15版,并被反向移植到Linux内核4.14.11。Windows和macOS也发布了类似的更新。

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

相关

  • 吞噬体吞噬体也称为吞噬小体,是一种在胞吞作用中在被吞噬物质周围形成的囊泡,这种囊泡由细胞膜向细胞内凹陷产生。吞噬体是一种在免疫过程中常见的细胞结构,入侵机体的病原微生物可在
  • 髋部在脊椎动物解剖学中,髋关节(英语:hip,拉丁语:coxa)既可指代一个解剖学区域,亦可指代一个关节。髋关节区位于臀部外前侧,髂嵴(英语:iliac crest)内侧,覆盖了股骨大转子(英语:greater trocha
  • 杰克·伦敦约翰·格里菲斯·“杰克·伦敦”·钱尼(英语:John Griffith "Jack London" Chaney,1876年1月12日-1916年11月22日),美国20世纪著名现实主义作家。他出身于美国旧金山的一个破产农
  • 夜来香夜来香,包括以下几种花卉:
  • 慕容垂燕成武帝慕容垂(326年-396年6月2日),字道明,原名霸,字道业,一说字叔仁,鲜卑名阿六敦,昌黎棘城(今辽宁义县)鲜卑族人。十六国后燕开国君主。前燕文明帝慕容皝的第五子。在前燕时屡有战功
  • 社会党社会党(法语:Parti Socialiste,缩写为PS),通称法语社会党,比利时法语区政党。该党在比利时德语区也有活动。该党在2010年大选后成为众议院第二大政党,在历经541天无政府僵局后,法语
  • 美国第1海军陆战师二次世界大战朝鲜战争越战沙漠风暴行动自由伊拉克行动海军陆战队第1师(英语:1st Marine Division)是美国海军陆战队第一支步兵师,师部位于加州潘德顿海军陆战队基地。隶属于海军
  • 苗栗苗栗�龙( �注音ㄅㄤˋ,拼音:bàng,为客语发音,有“炸”之意思,因部分系统无法显示�,又常写作“火旁”)为台湾苗栗县于元宵节的主要核心活动,指台湾客家人在苗栗发展出来的传统元宵客家舞
  • 双曲函数在数学中,双曲函数是一类与常见的三角函数(也叫圆函数)类似的函数。最基本的双曲函数是双曲正弦函数 sinh {\displaystyle \sinh } 轴对称
  • 2009年荷兰羽毛球大奖赛2009年荷兰羽毛球大奖赛为第61届荷兰羽毛球公开赛,是2009年世界羽联大奖赛的其中一站。本届赛事于2009年10月13日至10月18日在荷兰阿尔梅勒内的Topsportcentrum Almere举行,并