寄存器文件数据采样 (RFDS)¶
寄存器文件数据采样 (RFDS) 是一种微架构漏洞,仅影响英特尔 Atom 部件(也称为 E 核)。 RFDS 可能允许恶意行为者推断先前在浮点寄存器、向量寄存器或整数寄存器中使用的数据值。 RFDS 不提供选择推断哪个数据的能力。 CVE-2023-28746 已分配给 RFDS。
受影响的处理器¶
以下是受影响的英特尔处理器列表 [1]
通用名称
Family_Model
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
作为此表的例外,代号为 Catlow 的 Intel Xeon E 系列部件 ALDERLAKE(06_97H) 和 RAPTORLAKE(06_B7H) 不受影响。 它们在 Linux 中报告为易受攻击,因为它们与受影响的部件共享相同的系列/型号。 与受影响的同类部件不同,它们不枚举 RFDS_CLEAR 或 CPUID.HYBRID。 此信息可用于区分受影响和未受影响的部件,但由于在这些部件枚举 RFDS_NO 时报告会自动修复,因此认为不值得增加复杂性。
缓解¶
英特尔发布了一个微代码更新,使软件能够使用 VERW 指令清除敏感信息。 与 MDS 类似,RFDS 部署相同的缓解策略,以强制 CPU 在攻击者提取秘密之前清除受影响的缓冲区。 这是通过将未使用的和过时的 VERW 指令与微代码更新结合使用来实现的。 当执行 VERW 指令时,微代码会清除受影响的 CPU 缓冲区。
缓解点¶
内核在返回用户空间之前以及 KVM 在 VMentry 之前执行 VERW。 受影响的内核均不支持 SMT,因此 C 状态转换不需要 VERW。
IA32_ARCH_CAPABILITIES 中的新位¶
较新的处理器和现有受影响的处理器上的微代码更新在 IA32_ARCH_CAPABILITIES MSR 中添加了新位。 这些位可用于枚举漏洞和缓解能力
位 27 - RFDS_NO - 设置后,处理器不受 RFDS 的影响。
位 28 - RFDS_CLEAR - 设置后,处理器会受到 RFDS 的影响,并且具有在执行 VERW 时清除受影响缓冲区的微代码。
内核命令行中的缓解控制¶
内核命令行允许在启动时使用参数“reg_file_data_sampling=”控制 RFDS 缓解。 有效参数为
on
如果 CPU 易受攻击,则启用缓解;在退出用户空间和进入虚拟机之前清除 CPU 缓冲区。
off
禁用缓解。
缓解默认值由 CONFIG_MITIGATION_RFDS 选择。
缓解状态信息¶
Linux 内核提供了一个 sysfs 接口来枚举系统的当前漏洞状态:系统是否易受攻击,以及哪些缓解措施处于活动状态。 相关的 sysfs 文件是
/sys/devices/system/cpu/vulnerabilities/reg_file_data_sampling
此文件中的可能值为
“不受影响”
处理器不易受攻击
“易受攻击”
处理器易受攻击,但未启用缓解措施
“易受攻击:没有微代码”
处理器易受攻击,但微代码未更新。
“缓解:清除寄存器文件”
处理器易受攻击,并且启用了 CPU 缓冲区清除缓解措施。