来自麻省理工的 Vladimir Kiriansky 和咨询公司 Carl Waldspurger 的两位安全研究人员,刚刚发布了一篇揭露臭名昭著的“幽灵”(Spectre)安全漏洞新变种的论文,因其会产生投机性的缓冲区溢出。论文中,两人解释了他们新发现的这个变种(Spectre 1.1 / CVE-2018-3693)可以如何攻击和防御。

  

new-variant-of-spectre-security-flaw-discovered-speculative-buffer-overflows-521915-2.jpg

 

  对于处理器厂商来说,年初被曝光的该漏洞、以及后续陆续出现的多个其它变种,着实令业界感到头疼。而最新的 Spectre 1.1 漏洞,则利用了投机性的缓冲区溢出。

  与经典的缓冲区溢出安全漏洞类似,Spectre 1.1 又被称作‘边界检查绕过存储’(简称 BCBS),将其与最原始的投机性执行攻击区分开来。

  研究人员考虑将新变种归于 Spectre V1 家族的一个微小版本:

  其在投机性执行窗口中使用了相同的开口(即有条件分支投机),但 Spectre 1.1 还是影响了数十亿的现代处理器(波及 Intel 和 AMD)。

  研究人员称,预测缓冲区溢出使得本地攻击者可以在脆弱的系统上执行任意不受信任的代码。

  通过边际信道分析(side-channel analysis)和投机缓冲区溢出(speculative buffer overflow),它可利用微处理器的投机性执行和分支预测来暴露敏感信息。

  通过直接或重定向控制流,数据值攻击可以绕过一些 Spectre-v1 的缓解补丁。

  控制流攻击允许任意投机代码的执行,它可以绕过栅栏指令和此前所有针对预测执行攻击的软件补救措施。

  更可怕的是,研究人员还指出了所谓的 Spectre 1.2 漏洞!

  作为幽灵漏洞的另一个小变体,其影响那些不会强行读/写保护和依赖于懒惰的 PTE 强制执行的处理器。

  在一场 Spectre 1.2 攻击中,被允许的投机存储可覆写只读的数据、代码指针、以及代码元数据:

  其包括 vtables、GOT / IAT、以及控制流缓解元数据,结果就是依赖于只读存储器的硬件执行沙箱都被无效化了。

  研究人员已经在英特尔 x86 和 ARM 处理器上验证了 Spectre 1.1 和 Spectre 1.2 攻击:

  对于 Spectre 1.1,推荐采取 SLoth 家族微架构缓解方案。对于芯片制造商来说,可在未来的处理器上部署所谓的‘流氓数据缓存存储’保护特性。

  尽管研究人员认为通过处理器微代码更新即可完全缓解 Spectre 1.1 漏洞,但英特尔还是建议用户和操作系统供应商部署安全补丁,以应对在可预见的将来会出现的一些新变种。