VUsec安全研究員Ben Gras在一篇文章中寫道,一個影響英特爾處理器的邊信道漏洞(稱爲TLBleed)可能通過窺探翻譯後援緩衝器(TLB)泄漏信息。

Gras將在接下來的Blackhat 2018大會上介紹他的研究發現,聲稱他可以提取GPG所使用的加密密鑰:

我們的TLBleed漏洞攻擊成功獲取libgcrypt(在GPG中使用)的256位EdDSA密鑰,成功率爲98%,只需單獨監視共駐超線程上的簽名操作,分析耗時17秒。

TLB是一種緩存,用於加快將常用虛擬地址轉換爲物理內存地址的速度。 TLBleed通過使用TLB來檢測CPU寄存器中有用的信息,爲超線程訪問運行在同一內核上的另一個超線程的信息提供了一種方式。此漏洞與Spectre和Meltdown無關,這兩個漏洞都利用推測執行故障泄漏CPU緩存中的信息。

關於這個漏洞,人們最關心的是,它使用了數據訪問而不是正在執行的代碼路徑,這意味着現有對已知邊信道攻擊的保護措施可能無法有效對抗TLBleed。事實上,Gras提到了基於TLBleed的第二種攻擊,該攻擊可能會讓最近的libgcrypt版本發生數據位泄漏,這一版本的libgcrypt包含了一個邊信道抗RSA實現。第二種類型的攻擊利用了機器學習技術。The Register特約作者Chris Williams可以訪問Gras等人的白皮書,他解釋說,該團隊使用分類器來識別敏感操作,包括基於TLB延遲的加密操作。

英特爾不打算解決這個漏洞,他們認爲,一個能夠正確保護自己免受其他類型邊信道攻擊的程序,例如,不管是否使用加密密鑰,其數據訪問模式看起來都是一樣的,如果能做到這樣一點,也就對TLBleed免疫。Gras雖然也承認這一點,但他認爲,很少有程序寫得這麼完美,libgcrypt泄露RSA密鑰就是最好的例子。

OpenBSD維護者採取了不一樣的立場,他們決定禁用對英特爾處理器禁用併發多線程(SMT):

由於很多現代機器不再提供在BIOS設置中禁用超線程的能力,因此,可以在我們的調度程序中禁用額外的處理器線程。另外,因爲我們懷疑它存在嚴重風險,所以默認將其禁用。

OpenBSD將在未來將此策略擴展到其他CPU和其他架構。

對操作系統級具有較低侵入性的緩解措施是防止在同一內核的不同進程上併發執行兩個線程,不過這要對操作系統的調度器做出修改,而且不是個小改動。

目前還不清楚其他廠商是否會在操作系統級別上採取任何措施解決TLBleed問題,或者雲提供商是否會提供阻止兩個不同虛擬機共享相同內核的可能性。InfoQ將會帶來更多相關信息。

原文來自:https://www.linuxprobe.com/tlb-cpu-bug.html

相關文章