一群我格拉茨科技大學的研究人員 (奧地利),以前以開發 MDS、NetSpectre、Throwhammer 和 ZombieLoad 攻擊而聞名, 揭示了一種新的側信道攻擊 (CVE-2021-46778) AMD 處理器調度程序隊列中用於調度指令在 CPU 的不同執行單元中的執行。
攻擊,稱為 SQUIP,允許確定在另一個過程中的計算中使用的數據 或虛擬機或組織進程或虛擬機之間的隱藏通信通道,允許數據交換而無需通過系統訪問控制機制。
該 基於第 1、第 2 和第 3 Zen 微架構的 AMD CPU 一代(AMD Ryzen 2000-5000、AMD Ryzen Threadripper、AMD Athlon 3000、AMD EPYC) 被影響到的 當使用同時多線程 (SMT) 技術時。
現代 CPU 使用超標量設計,同時執行多條指令以最大限度地提高性能。 這些 CPU 通過幾個階段處理流水線中的指令:(1) 獲取,(2) 解碼,(3) 編程/執行,以及 (4) 獲取。
攻擊基於評估爭用發生的程度(爭用級別)在不同的調度程序隊列中,並通過在同一物理 CPU 上的另一個 SMT 線程中執行的檢查操作開始時測量延遲來完成。 為了分析內容,使用了 Prime+Probe 方法,該方法涉及用一組參考值填充隊列,並通過測量重新加載時對它們的訪問時間來確定更改。
程序/執行階段可以無序地處理指令以最大化指令級並行性。 我們簡要描述每個階段:
-搜索。 CPU 從 L1i 高速緩存中查找要執行的下一條指令。
-解碼。 為了實現高效執行,將獲得的指令(宏操作)解碼為一個或多個更簡單的微操作(µops)並放入 µop 隊列中。 這些微操作被饋送到後端,在那裡它們被調度和執行。
- 計劃/運行。 調度器跟踪哪些微操作準備好執行(有可用的輸入),並動態地將它們(無序)調度到可用的執行單元。 一個 CPU 內核有多個執行單元,可以有多個算術和邏輯單元 (ALU)、分支執行單元 (BRU)、地址生成單元 (AGU)。
在實驗期間 研究人員能夠完全重建 4096 位 RSA 私鑰 用於使用 mbedTLS 3.0 密碼庫創建數字簽名,該庫使用蒙哥馬利算法將數字提升到冪模數。 需要 50.500 條軌跡來確定密鑰。
總攻擊時間為 38 分鐘。 演示了在 KVM 管理程序控制的不同進程和虛擬機之間提供洩漏的攻擊變體。 還表明,該方法可用於編排虛擬機之間以 0,89 Mbit/s 的速率和進程之間以 2,70 Mbit/s 的速率進行的隱蔽數據傳輸,錯誤率小於 0,8、XNUMX%。
CPU 內核被劃分為多個邏輯內核或線程,執行獨立的指令流,但共享 L1i 緩存等資源。 這些線程的微操作也動態共享執行單元以允許更高的總利用率。 內核不同部分的分區。
它是通過競爭性交換來完成的。 AMD Zen 架構允許兩個線程
每個核心。 這些線程可以來自單個程序,也可以來自不同的程序,由操作系統管理。
英特爾處理器不易受到影響 攻擊,因為它們使用單個調度隊列,而易受攻擊的 AMD 處理器為每個執行單元使用單獨的隊列。
作為阻止信息洩露的解決方案, AMD 推薦 那個開發商 使用始終在恆定時間內執行數學計算的算法,無論正在處理的數據的性質如何,並且還可以防止基於秘密數據的分叉。
最後,如果您有興趣能夠了解更多,可以在 下一個鏈接.