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

参考