芯片门是如何发酵的
2018年1月3日,安全小组Google Project Zero的研究员Jann Horn在其组织官博上公布了两组芯片漏洞Meltdown和Spectre,分别对应全球统一漏洞库的CVE-2017-5754、CVE-2017-5753/CVE-2017-5715。Meltdown的发现者包括三个独立小组,Cyberus Technology小组、格拉茨技术大学研究小组得出相似结论。嵌入式开发
据称,Jann Horn于2017年6月分别向三大芯片制造商报告了这一问题,可能是基于投资者和股东压力,芯片商的答复比较含糊,处理结果也比较糟糕,直到今年1月漏洞曝光,一石激起千层浪,铺天盖地的麻烦接踵而至,终于谁都躲不过了。
起初英特尔首当其冲,老同行AMD则初步调查后声称有别于英特尔处理器的不同架构,这次安全漏洞对自家处理器产品的影响几乎为零。然而很快一记重拳就打在AMD的脸上,漏洞发布者和测试研究员旋即宣布AMD处理器同样受到影响,同时ARM、英伟达无一幸免。英特尔CEO科再奇发布公开信,呼吁所有芯片商与相关的行业各方联手共渡难关。这一次它们终于“乖乖站好”齐心协力。
事件发酵数日后,英特尔宣布针对各大操作系统发布了更新,这些更新将覆盖近5年来超过90%的英特尔芯片产品。AMD则从一开始咬住“架构不同”不松口到慢慢承认“可能会受到Spectre的影响”,然后默默更新补丁。还真是傲娇呢!影响最大的云端Linux各发行版相继发布内核安全补丁,为抢救Windows 10的微软同样忙得急火燎原。谷歌则宣布对部分自家产品做出了“优雅地回避”,谁知道它干了什么!
据悉,两组漏洞的起因皆为芯片厂商长期为提高CPU执行效率而引入的两个特征:Out-of-Order Execution(乱序执行)和Speculative Execution(推测执行)。人类将20世纪工程学的伟大思想运用到计算机科学上,现代处理器为了提高执行效率有别于早期处理器的顺序指令执行,对指令执行进行相关性分析后进行乱序并行处理,这大大提高了CPU的性能。这种设计思想有赖于英特尔处理器的三级缓存构架,线程之间共享缓存的设计。
为了确保并行执行的准确性,处理器对执行指令进行安全检查,只有符合当前用户权限的指令才能被执行。然而这里有一个窗口期,在并行执行的一段过程中,被加载到缓存的指令并不会接受安全检查,而那些被丢弃的指令也不会在缓存中被重置。推测执行在性能提升的方法上有别于乱序执行,但是指令在缓存中的状态却是相似的。因此,缓存中的对象就成了著名的侧信道攻击的目标。攻击者通过非正面推测缓存中的信息,以此获得隐私数据。
1月的业界身“芯”疲惫,Meltdown和Spectre一跃成为史上影响最深刻、最广泛的史诗级安全漏洞,虽然至今还没有一起关于该漏洞引发的安全实例,但是它的影响力和波及范围足以令整个业界瑟瑟发抖。