浏览器厂商应对重大 CPU 安全漏洞:降低时钟精度,禁用 SharedArrayBuffer

浏览器厂商应对重大 CPU 安全漏洞:降低时钟精度,禁用 SharedArrayBuffer

这两天粗了大事,一个影响面巨大的处理器漏洞被爆出[1],可以被利用进行预测执行旁路攻击(speculative execution side-channel attack)。这次的漏洞貌似对英特尔的 CPU 影响最大,为了修复漏洞可能会造成 5-30% 的性能下降,众人纷纷表示英特尔“修复了 CPU 过于流畅的 bug”,英特尔“把挤出来的牙膏又吸回去了”。。

这次的漏洞有一个 JavaScript 写的在 Chrome 上的 PoC,说明浏览器也受到了影响。各大浏览器厂商表示会采取措施进行缓解(mitigation)。这种旁路攻击是一种时序攻击,依赖精确的时间,所以可以通过不提供精确的时间来缓解这个问题。浏览器有较为精确的时钟 performance.now(),JavaScript 程序也可以通过 SharedArrayBuffer 构造精确时钟。Mozilla 表示 Firefox57 以及之后的版本中将把 performance.now() 时钟精度降到 20 微秒,并且禁用 SharedArrayBuffer[2]。微软表示在 Edge 和 IE 里将把 performance.now() 时钟精度从 5 微秒降到 20 微秒并加入 20 微秒的误差,并且禁用 SharedArrayBuffer[3] 。谷歌表示从 Chrome 64 开始将在 V8 中做出改动,修改 performance.now() 的行为, 禁用 SharedArrayBuffer,并建议用户打开 Chrome 的 Site Isolation功能[4]。

目前 Chrome 中 performance.now() 的精度也是 5 微秒,这个已经是考虑到了时序攻击降低过的[5]。但此后荷兰一所大学的研究小组 VUSec 用 SharedArrayBuffer 时序攻击在浏览器中实现了 ASLR 绕过,但 Chrome 并没有采取应对措施[6]。但该来的终究还是会来的,这一次的漏洞一出来,Chrome 也是不得不应对了[7]。。

2018-01-05 更新:昨天漏掉了苹果的回应。苹果也表示将会在 iOS 和 macOS 平台更新 Safari 以应对攻击[8]。

2018-01-05 更新 2:本人的 Firefox 已经收到了针对此漏洞的 57.0.4 更新推送。

2018-01-05 更新 3:Chromium 的 issue[7] 已经设为不公开,没法围观了。。performance.now() 的精度改成了 100 微秒并加入了抖动[9]。

2018-01-08 更新:苹果已经放出了 Safari 补丁来应对漏洞,并在博客中介绍了 WebKit 的应对措施[10]。采取的措施有:将 performance.now() 的精度将为和 Date.now() 一样的 1 毫秒;禁用 SharedArrayBuffer;修改 JavascriptCore 的安全检查机制,不使用分支指令,防止越界读取内存漏洞。


参考来源:

  1. Project Zero: Reading privileged memory with a side-channel
  2. Mitigations landing for new class of timing attack | Mozilla Security Blog
  3. Mitigating speculative execution side-channel attacks in Microsoft Edge and Internet Explorer - Microsoft Edge Dev BlogMicrosoft Edge Dev Blog
  4. Actions Required to Mitigate Speculative Side-Channel Attack Techniques - The Chromium Projects
  5. 506723 - Reduce resolution of performance.now to prevent timing attacks - chromium - Monorail
  6. 665930 - Security: ASLR bypass by MMU cache side channel: AnC or ASLR^Cache - chromium - Monorail
  7. 798864 - Control when we make SharedArrayBuffer available - chromium - Monorail
  8. About speculative execution vulnerabilities in ARM-based and Intel CPUs - Apple Support
  9. chromium.googlesource.com
  10. What Spectre and Meltdown Mean For WebKit

编辑于 2018-01-09

文章被以下专栏收录