CROSSTalk - Intel CPU 中的一個漏洞,導致核心之間的資料洩露

阿姆斯特丹自由大學的一群研究人員發現了一種新的 脆弱性 (CVE-2020-0543) 存在於英特爾處理器的微架構結構中,值得注意的是,它允許您恢復在另一個 CPU 核心上執行的某些指令的執行結果。 這是推測指令執行機制中第一個允許各個 CPU 核心之間發生資料外洩的漏洞(先前的洩漏僅限於同一核心的不同執行緒)。 研究人員將這個問題命名為 CROSSTalk,但是 英特爾文檔 此漏洞稱為SRBDS(特殊暫存器緩衝區資料採樣)。

該漏洞涉及 呈現 一年前的MDS(微架構資料採樣)類別問題,是基於側通道分析方法對微架構結構中的資料的應用。 操作原理 CROSSTalk 接近漏洞 RIDL,但洩漏源有所不同。
新漏洞操縱了所有 CPU 核心共享的先前未記錄的中間緩衝區的洩漏。

CROSSTalk - Intel CPU 中的一個漏洞,導致核心之間的資料洩露

問題的本質 重要的是,一些微處理器指令,包括 RDRAND、RDSEED 和 SGX EGETKEY,是使用內部微架構 SRR(特殊暫存器讀取)操作來實現的。 在受影響的處理器上,為 SRR 返回的資料儲存在所有 CPU 核心共用的中間緩衝區中,然後將其傳輸到與啟動讀取操作的特定實體 CPU 核心關聯的填充緩衝區。 接下來,填充緩衝區中的值被複製到應用程式可見的暫存器。

中間共享緩衝區的大小與快取行相對應,通常大於正在讀取的資料的大小,不同的讀取會影響緩衝區中不同的偏移量。 由於共享緩衝區被完全複製到填充緩衝區,因此不僅當前操作所需的部分被移動,而且其他操作(包括在其他 CPU 核心上執行的操作)剩餘的資料也被移動。

CROSSTalk - Intel CPU 中的一個漏洞,導致核心之間的資料洩露

CROSSTalk - Intel CPU 中的一個漏洞,導致核心之間的資料洩露

如果攻擊成功,系統中經過驗證的本機使用者可以確定在外部進程中或 Intel SGX enclave 內執行 RDRAND、RDSEED 和 EGETKEY 指令的結果,無論執行程式碼的 CPU 核心如何。
發現問題的研究人員 發表 原型漏洞展示了透過 RDRAND 和 RDSEED 指令洩露有關隨機值的資訊的能力,以在系統上僅執行一次數位簽章操作後恢復在 Intel SGX enclave 中處理的 ECDSA 私鑰。


問題 易受影響的 各種桌面、行動和伺服器 Intel 處理器,包括 Core i3、i5、i7、i9、m3、Celeron(J、G 和 N 系列)、Atom(C、E 和 X 系列)、Xeon(E3、E5、 E7系列(W 和D)、Xeon 可擴充等。 值得注意的是,英特爾於2018 年2019 月收到有關該漏洞的通知,並於XNUMX 年XNUMX 月提供了一個利用原型,演示了CPU 核心之間的資料洩漏,但由於其實現的複雜性,修復程序的開發被推遲。 今天提出的微程式碼更新透過更改 RDRAND、RDSEED 和 EGETKEY 指令的行為來覆蓋共享緩衝區中的數據,以防止殘留資訊在那裡沉澱,從而解決了該問題。 此外,緩衝區存取會暫停,直到內容被讀取和重寫。

這種保護的副作用是執行 RDRAND、RDSEED 和 EGETKEY 時延遲增加,以及嘗試在不同邏輯處理器上同時執行這些指令時吞吐量降低。 執行 RDRAND、RDSEED 和 EGETKEY 也會暫停其他邏輯處理器的記憶體存取。 這些功能可能會對某些伺服器應用程式的效能產生負面影響,因此韌體提供了一種機制 (RNGDS_MITG_DIS) 來停用在 Intel SGX enclave 之外執行的 RDRAND 和 RDSEED 指令的保護。

來源: opennet.ru

添加評論