暫存器檔案資料取樣 (RFDS)

暫存器檔案資料取樣 (RFDS) 是一種微架構漏洞,僅影響 Intel Atom 部件(也稱為 E 核)。RFDS 可能允許惡意行為者推斷之前在浮點暫存器、向量暫存器或整數暫存器中使用過的資料值。RFDS 不提供選擇推斷哪些資料的能力。CVE-2023-28746 已分配給 RFDS。

受影響的處理器

以下是受影響的 Intel 處理器列表 [1]

通用名稱

家族_型號

ATOM_GOLDMONT

06_5CH

ATOM_GOLDMONT_D

06_5FH

ATOM_GOLDMONT_PLUS

06_7AH

ATOM_TREMONT_D

06_86H

ATOM_TREMONT

06_96H

ALDERLAKE

06_97H

ALDERLAKE_L

06_9AH

ATOM_TREMONT_L

06_9CH

RAPTORLAKE

06_B7H

RAPTORLAKE_P

06_BAH

ATOM_GRACEMONT

06_BEH

RAPTORLAKE_S

06_BFH

緩解措施

Intel 釋出了微碼更新,使軟體能夠使用 VERW 指令清除敏感資訊。與 MDS 類似,RFDS 也採用相同的緩解策略,強制 CPU 在攻擊者提取秘密之前清除受影響的緩衝區。這是透過將本來未使用且已過時的 VERW 指令與微碼更新結合使用來實現的。微碼在執行 VERW 指令時清除受影響的 CPU 緩衝區。

緩解點

VERW 在核心返回使用者空間之前以及 KVM 進入虛擬機器之前執行。受影響的核心都不支援 SMT,因此在 C 狀態轉換時不需要 VERW。

IA32_ARCH_CAPABILITIES 中的新位

較新的處理器以及現有受影響處理器的微碼更新已向 IA32_ARCH_CAPABILITIES MSR 添加了新位。這些位可用於列舉漏洞和緩解能力

  • 位 27 - RFDS_NO - 設定時,處理器不受 RFDS 影響。

  • 位 28 - RFDS_CLEAR - 設定時,處理器受 RFDS 影響,並具有在執行 VERW 時清除受影響緩衝區的微碼。

核心命令列上的緩解控制

核心命令列允許在啟動時透過引數“reg_file_data_sampling=”控制 RFDS 緩解。有效引數為

開啟

如果 CPU 易受攻擊,則啟用緩解;在退出使用者空間和進入虛擬機器之前清除 CPU 緩衝區。

關閉

停用緩解。

緩解預設值由 CONFIG_MITIGATION_RFDS 選擇。

緩解狀態資訊

Linux 核心提供了一個 sysfs 介面,用於列舉系統當前的漏洞狀態:系統是否易受攻擊,以及哪些緩解措施處於活動狀態。相關的 sysfs 檔案是

/sys/devices/system/cpu/vulnerabilities/reg_file_data_sampling

此檔案中可能的值為

“不受影響”

處理器不受漏洞影響

“易受攻擊”

處理器易受攻擊,但未啟用緩解措施

“易受攻擊:無微碼”

處理器易受攻擊但微碼未更新。

“緩解:清除暫存器檔案”

處理器易受攻擊且已啟用 CPU 緩衝區清除緩解措施。

參考文獻