Meltdown 簡簡述

Meltdown 簡述

近日現代 CPU 的 Meltdown & Spectre 漏洞沸沸揚揚,最先是 Google 研究員發現能夠經過內存側信道時序攻擊來獲取隱私數據,後續 Chromium, Apple 以及 Mozilla 都發文討論了其對各個平臺的影響與應對方案。 網上討論該漏洞的文章也不少,筆者我的感受 This is how Meltdown works, Why Raspberry Pi Isn't Vulnerable to Spectre or Meltdown 講解的不錯,而本文則翻譯自 Meltdown in a nutshell 這個簡述;本文概括於 Linux 配置使用、內部原理與 Shell 編程系列。html

對於以下僞代碼:shell

x = read(memory_location_of_os_where_secret_lies) // 拋出異常

y = arr[x *4096] // 基於 x 讀取本地內存
複製代碼

應用程序會被編譯或者解釋爲 CPU 指令,第一行對於敏感內存的讀取最終會拋出異常,不過因爲 CPU 的推測執行(Speculative Execution)優化,第二行代碼會在 CPU 進行權限檢測前執行,即 y 的值實際上已經被讀取到了 CPU 緩存中。若是 x 的值是 s,那麼內存 arr[s * 4096] 即會被 CPU 讀取。CPU 發現進程無權讀取後,即會清除 x 與 y 的值,不過 CPU 爲了優化讀取速度,會將本次的讀取值緩存到 CPU 本地。攻擊者即利用這一特性發起了旁路攻擊,攻擊者使用相似暴力破解的方式,遍歷全部可能的 arr[x *4096] 地址;根據計時器來判斷哪一個地址的讀取速度最快,便可以獲取到  x 的值 s。依次類推能夠得到 ‘e’, ‘c’,’r’,’e’,’t’ 等值。編程

相關文章
相關標籤/搜索