这两天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三代受到的影响比较小.
针对老平台的测试我还需要有时间准备, 所以先针对市售比较集中的产品吧.