英特尔CPU被爆出重大设计缺陷
从1月2号开始,最先由媒体报道Intel的全系列CPU都包含一个因为硬件设计导致的严重缺陷,此缺陷(或称bug)会导致低权限应用访问内核内存。由于此漏洞是硬件设计导致的,无法使用microcode修复,只能进行OS级的修复。按照此前由Intel在Linux 内核邮件列表里发送的邮件的说法,此次的设计缺陷将影响近十年(decede)来的所有Intel的CPU。由于Intel并没有给出此bug的细节,通过现有信息来看,初步认为这一设计缺陷会使得“任何能够在采用了英特尔CPU的电脑中运行代码的程序都可以访问内核内存并获得相应权限”。
对于此次设计缺陷的具体影响力度和宽度暂时没有定论,但是普遍认为影响到了全球超过10亿台采用了Intel CPU的设备,其中不乏各大云计算公司,如亚马逊的aws、微软的Azure和阿里巴巴的阿里云等。此前,亚马逊已经和微软已经宣布近日对旗下所有设备进行安全性更新,阿里云也于今日已经发出广告将于12号进行更新。
最开始,Intel打算和各大操作系统厂商/团体合作,采用静默更新来避免让公众知道这一问题。MacOS已经于12月更新过一次,在“一定程度上”避免了这个设计缺陷被利用,而微软旗下的Windows已经在11月和12月像内测用户推送过,今日将开始向所有用户推送。Linux kernel也已经在4.11着手修复了这一问题,但是即使因为Linux中关于虚拟内存系统的代码注释被缩减,才被人们关注而猜测是为了隐藏漏洞的详细信息。目前采用的修复方法只可以被称作治标不治本,通过KASLR/KPTI技术在系统层面上隔绝/限制内存的行为来弥补这一原本应该是CPU该做的事情。
在phoronix的测试中,这一补丁将使得CPU的性能下降5%-30%,其中IO性能受到的影响最大,几乎下降了50%,所幸的是CPU的游戏性能似乎没有明显下降,但是由于是在Linux系统上测试的游戏性能,所以在Windows平台上的实际表现如何还有待官方测试。
此外,采用了PCID技术的CPU可以一定程度上的减少此补丁导致的性能下降,按照目前多个用户反馈,Windows下大概可以将性能的下降控制在10%左右。据悉,MacOS已经在12月份对其进行 “一部分”更新。
更多的性能对比,可以点击这里查看。
后期Intel曾发布说明,直指AMD和arm的CPU也存在同样的bug,但是AMD和arm随即便否认了Intel的说法。
按照目前公布出来的信息来看,涉及此次设计缺陷的总共有三个问题。Bounds Check Bypass和Branch Target Injection被称为Spectre,来源于CPU在乱序执行时出现的可能的问题。在一定程度上来说,Spectre并不算上一个完整意义上的bug,更多的是乱序执行所带来的不良影响,而Rogue Data Cache Load才是真正导致Intel的CPU出现bug的关键。由于AMD在设计之初便直接采用了硬件阻断的方法,跨权内存会被实时阻断以避免这一问题,所以AMD一直反对任何厂商/团体在运行了AMD CPU的系统上打上这个补丁;而arm虽然有这类问题,但是由于arm采用了双页表的内存方法,并不能完成攻击。
从实际的情况来看,可能是Intel的公关已经开始行动了的原因,Intel目前尽量让此次事件平息,并拉AMD和arm下水,而并非在解决这个问题。尤其是从linus的邮件中看到,intel根本没有打算在下一代的CPU中修复这个问题。