SRBDS - 特殊暫存器緩衝區資料取樣¶
SRBDS 是一種硬體漏洞,允許 MDS MDS - 微架構資料取樣 技術推斷特殊暫存器訪問返回的值。特殊暫存器訪問是對脫離核心的暫存器進行的訪問。根據 Intel 的評估,具有安全隱私預期的特殊暫存器讀取包括 RDRAND、RDSEED 和 SGX EGETKEY。
當使用 RDRAND、RDSEED 和 EGETKEY 指令時,資料透過易受 MDS 攻擊的特殊暫存器機制移動到核心。
受影響的處理器¶
實現 RDRAND 和/或 RDSEED 的酷睿型號(桌面、移動、Xeon-E3)可能受到影響。
如果處理器的 Family_Model 和 Stepping 在以下列表中,則受 SRBDS 影響,但列出的處理器在 Intel TSX 可用但未啟用時匯出 MDS_NO 的情況除外。後一類處理器僅在軟體使用 TSX_CTRL_MSR 啟用 Intel TSX 時才受影響,否則不受影響。
通用名稱
系列_型號
步進
IvyBridge
06_3AH
全部
Haswell
06_3CH
全部
Haswell_L
06_45H
全部
Haswell_G
06_46H
全部
Broadwell_G
06_47H
全部
Broadwell
06_3DH
全部
Skylake_L
06_4EH
全部
Skylake
06_5EH
全部
Kabylake_L
06_8EH
<= 0xC
Kabylake
06_9EH
<= 0xD
攻擊場景¶
非特權使用者可以使用 MDS 技術,從在另一個核心或同級執行緒上執行的 RDRAND 和 RDSEED 返回的值中提取資料。
緩解機制¶
Intel 將釋出微程式碼更新,修改 RDRAND、RDSEED 和 EGETKEY 指令,以在共享暫存緩衝區中的秘密特殊暫存器資料被另一個邏輯處理器訪問之前將其覆蓋。
在執行 RDRAND、RDSEED 或 EGETKEY 指令期間,來自其他邏輯處理器的脫核訪問將被延遲,直到特殊暫存器讀取完成且共享暫存緩衝區中的秘密資料被覆蓋。
這會對效能產生三個影響
RDRAND、RDSEED 或 EGETKEY 指令具有更高的延遲。
在多個邏輯處理器上同時執行 RDRAND 將被序列化,導致 RDRAND 最大頻寬的整體下降。
執行 RDRAND、RDSEED 或 EGETKEY 將延遲其他未命中核心快取的邏輯處理器的記憶體訪問,其影響類似於傳統的鎖定快取行拆分訪問。
微程式碼更新提供了一種選擇退出機制 (RNGDS_MITG_DIS),以停用在 Intel 軟體保護擴充套件 (Intel SGX) enclave 之外執行的 RDRAND 和 RDSEED 指令的緩解措施。在透過此選擇退出機制停用緩解措施的邏輯處理器上,RDRAND 和 RDSEED 的執行時間不會增加,也不會影響同級邏輯處理器的記憶體訪問效能。選擇退出機制不影響 Intel SGX enclave(包括在 enclave 內執行 RDRAND 或 RDSEED,以及 EGETKEY 的執行)。
IA32_MCU_OPT_CTRL MSR 定義¶
除了對此問題的緩解措施外,Intel 還添加了一個新的執行緒範圍 IA32_MCU_OPT_CTRL MSR(地址 0x123)。此 MSR 和 RNGDS_MITG_DIS(位 0)的存在透過 CPUID.(EAX=07H,ECX=0).EDX[SRBDS_CTRL = 9]==1 進行列舉。此 MSR 是透過微程式碼更新引入的。
將邏輯處理器的 IA32_MCU_OPT_CTRL[0] (RNGDS_MITG_DIS) 設定為 1 會停用在該邏輯處理器上 Intel SGX enclave 之外執行的 RDRAND 和 RDSEED 的緩解措施。選擇退出特定邏輯處理器的緩解措施不會影響其他邏輯處理器的 RDRAND 和 RDSEED 緩解措施。
請注意,在 Intel SGX enclave 內部,無論 RNGDS_MITG_DS 的值如何,都會應用緩解措施。
核心命令列上的緩解控制¶
核心命令列允許在啟動時透過選項“srbds=”控制 SRBDS 緩解措施。選項如下:
off
此選項會在受影響的平臺上停用 RDRAND 和 RDSEED 的 SRBDS 緩解措施。
SRBDS 系統資訊¶
Linux 核心透過 sysfs 提供漏洞狀態資訊。對於 SRBDS,可以透過以下 sysfs 檔案訪問:/sys/devices/system/cpu/vulnerabilities/srbds
此檔案中可能包含的值有:
不受影響
處理器無漏洞
存在漏洞
處理器存在漏洞且緩解措施已停用
存在漏洞:無微程式碼
處理器存在漏洞且微程式碼缺少緩解措施
緩解:微程式碼
處理器存在漏洞且緩解措施已生效。
緩解:TSX 已停用
僅當 TSX 啟用時處理器才存在漏洞,而本系統是在 TSX 停用狀態下啟動的。
未知:取決於
hypervisor 狀態
執行在受影響的虛擬訪客處理器上,但無法得知宿主處理器是否已緩解或存在漏洞。
SRBDS 預設緩解¶
此新微程式碼在執行 RDRAND、RDSEED 期間使處理器訪問序列化,確保共享緩衝區在釋放以供重用之前被覆蓋。使用“srbds=off”核心命令列可停用 RDRAND 和 RDSEED 的緩解措施。