AMD處理器推測執行機制中的漏洞

Grsecurity 專案發布了 AMD 處理器中與無條件前向操作後推測執行指令相關的新漏洞 (CVE-2021-26341) 的詳細資訊和攻擊方法演示。 如果攻擊成功,該漏洞允許確定任意記憶體區域的內容。 例如,研究人員準備了一個漏洞程序,允許他們透過在 ePBF 核心子系統中執行非特權代碼來確定位址佈局並繞過 KASLR(內核記憶體隨機化)保護機制。 不能排除其他可能導致核心記憶體內容洩漏的攻擊場景。

該漏洞允許您創建條件,使處理器在搶佔執行期間推測性地處理內存中緊跟跳轉指令之後的指令(SLS,直線推測)。 而且,這種最佳化不僅適用於條件跳躍運算符,也適用於暗示直接無條件跳躍的指令,例如 JMP、RET 和 CALL。 在無條件跳轉指令之後,可以放置不打算執行的任意資料。 在確定分支不涉及下一條指令的執行後,處理器簡單地回滾狀態並忽略推測執行,但指令執行的踪跡保留在共享高速緩存中,並且可用於使用旁路檢索技術進行分析。

與利用 Spectre-v1 漏洞一樣,攻擊需要內核中存在某些指令序列(小工具),從而導致推測執行。 在這種情況下,阻止漏洞歸結為識別程式碼中的此類小工具並向其添加阻止推測執行的附加指令。 推測執行的條件也可以由 eBPF 虛擬機器中執行的非特權程式建立。 若要阻止使用 eBPF 建置 gadget 的能力,建議停用系統中對 eBPF 的非特權存取(“sysctl -w kernel.unprivileged_bpf_disabled=1”)。

此漏洞影響基於Zen1和Zen2微架構的處理器,包括第一代和第二代AMD EPYC和AMD Ryzen Threadripper處理器,以及AMD Ryzen 2000/3000/4000/5000、AMD Athlon、AMD Athlon X、AMD Ryzen Threadripper PRO 和 APU 系列處理器 A. 為了阻止指令的推測執行,建議在分支操作(RET、JMP、CALL)後呼叫 INT3 或 LFENCE 指令。

來源: opennet.ru

添加評論