寄存器文件数据采样 (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 缓冲区清除缓解措施。