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

参考文献