瀏覽器廠商應對重大 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 的安全檢查機制,不使用分支指令,防止越界讀取內存漏洞。
參考來源:
- Project Zero: Reading privileged memory with a side-channel
- Mitigations landing for new class of timing attack | Mozilla Security Blog
- Mitigating speculative execution side-channel attacks in Microsoft Edge and Internet Explorer - Microsoft Edge Dev BlogMicrosoft Edge Dev Blog
- Actions Required to Mitigate Speculative Side-Channel Attack Techniques - The Chromium Projects
- 506723 - Reduce resolution of performance.now to prevent timing attacks - chromium - Monorail
- 665930 - Security: ASLR bypass by MMU cache side channel: AnC or ASLR^Cache - chromium - Monorail
- 798864 - Control when we make SharedArrayBuffer available - chromium - Monorail
- About speculative execution vulnerabilities in ARM-based and Intel CPUs - Apple Support
- https://chromium.googlesource.com/chromium/src/+/a77687fd89adc1bc2ce91921456e0b9b59388120
- What Spectre and Meltdown Mean For WebKit
推薦閱讀: