这两天Intel再一次来到了风暴的中心。继之前ME爆出严重的安全漏洞之后,Intel CPU再一次爆出安全漏洞。 比较要命的是这一次的漏洞修复会带来一定的性能损失。一时间各种消息风声鹤唳,什么CPU性能会掉30%,Intel CEO提前卖掉股票跑路等等。 但是八卦归八卦,我们还是应该冷静下来看一下,这次的漏洞门对我们的日常使用到底有多少影响。
关于本次漏洞: 这次爆出的漏洞分为“Meltdown”和“Spectre”两个部分,两者的原理基本相同,但是攻击深度有区别。Meltdown是攻击到系统内核层面(例如WIN10系统的核心部分),Spectre则会直接访问系统内存,所以理论上破坏力更大。 现在微软提供的系统补丁是针对Meltdown,Spectre则因为更为复杂,所以暂时还没有修复,只是由于攻击难度比较大,所以暂时还没有明确的攻击事件。 目前来看Meltdown漏洞会影响到Intel和ARM不会涉及,AMD。Spectre则会影响到Intel\AMD\ARM三家大厂。 由于Intel对猜测指令依赖性比较强,所以在这次的事件中波及最大。ARM虽然做了一些防御措施,但是有部分产品线是彻底沦陷的。AMD Ryzen因为是重新开发的,所以Meltdown不会涉及,但是Spectre一样还是会中招。 之所以产生如此之大的争议,主要就是因为打上系统补丁之后CPU性能会有下降。
从原理上简而言之,就是恶意程序可以利用CPU在指令集上的漏洞,触发CPU内部的猜测指令,使CPU会访问系统内存、缓存中所有的部分,从而获取敏感信息。 只是这个攻击方式需要被攻击的数据在攻击触发时刚好出现在内存、虚拟内存或CPU缓存中,病毒必须足够聪明,所以攻击难度比较大。 比较可怕的是这个漏洞同样可以攻击到RING 0层面,也就是Intel ME这个级别的CPU厂商保留区,理论上可以完全控制这台电脑。 那么问题来了,为什么CPU内部会存在一个横贯20多年的漏洞?(Intel宣称1995年起的产品都中招) 主要原因就是性能与安全的平衡。性能与安全、稳定性、成本之类的东西互相之间就像是跷跷板,产品设计的时候要考虑互相之间的平衡。 打个比方我们家用的内存,理论上每运行600万次读写必然会出现一次错误,但是这对于消费级来说问题不大,所以就保留了下来。对应的在服务器级上,就要采用ECC内存,但是这就会带来不少代价,价格会贵不少,超频性能、延迟上也会比较难看。 而CPU作为一个综合性的处理芯片,内部结构复杂,采用一些取巧的算法就很好理解了,不然CPU都做不出来。估计这个漏洞是硬件架构导致的逻辑漏洞。 比方说芯片中会有“与门”这个元件,两个输入端入1和入2都显示为真,这个时候输出端才会显示为真,否则为假。那当首先检测的入1就是假,是不是入2就可以不检测了,反正输出的都是假。猜测指令的目的就是为了减少环节提升效率。 以上的文字确实比较深奥,为了帮大家更容易理解,我来换个比喻帮助大家理解。 CPU厂商就好比是一家做羊肉串的饭店。照道理羊肉串的竹签必须要先洗干净,高温消毒,再照紫外线,最后再检测才能去烤肉,但是烧烤的时候其实就可以把竹签杀菌杀干净。 CPU厂商觉得他的烤串都是现串现烤,竹签上的病菌来不及产生毒素,所以CPU厂商就选择洗干净,然后火烤,把中间高温消毒、照紫外线给省了。这个漏洞就好比是病菌利用这个时间差产生了足够的毒素,结果吃的人就拉肚子了。不是特别确切,但是大致就是这个感觉。 由于打上这个补丁会让CPU一部分的取巧的算法被屏蔽,所以会影响一定的性能。这对数据中心的影响最大。 接下来我就针对家用环境先进行一下初步的测试。 测试平台: 这次的测试平台是I5 7500。这边利用到的是我正好做到一半的测试。本来想做一篇7500对比8100的内容,结果现在系统环境发生了明显的变化,所以之前的测试等于作废。所以这个做到一半的测试就被我拉过来对比。 从Intel给出的说法,6、7、8三代受到的影响比较小。 针对老平台的测试我还需要有时间准备,所以先针对市售比较集中的产品吧。 |