SRBDS - 特殊寄存器缓冲区数据采样

SRBDS 是一种硬件漏洞,它允许 MDS MDS - 微架构数据采样 技术推断从特殊寄存器访问返回的值。特殊寄存器访问是对核外寄存器的访问。根据英特尔的评估,具有隐私安全预期的特殊寄存器读取是 RDRAND、RDSEED 和 SGX EGETKEY。

当使用 RDRAND、RDSEED 和 EGETKEY 指令时,数据通过易受 MDS 攻击的特殊寄存器机制移动到核心。

受影响的处理器

实现 RDRAND 和/或 RDSEED 的核心模型(桌面、移动、Xeon-E3)可能会受到影响。

如果处理器的 Family_Model 和步进在以下列表中,则该处理器会受到 SRBDS 的影响,但列出的处理器导出 MDS_NO 但 Intel TSX 可用但未启用除外。后一类处理器仅在软件使用 TSX_CTRL_MSR 启用 Intel TSX 时才会受到影响,否则它们不会受到影响。

通用名称

Family_Model

步进

IvyBridge

06_3AH

全部

Haswell

06_3CH

全部

Haswell_L

06_45H

全部

Haswell_G

06_46H

全部

Broadwell_G

06_47H

全部

Broadwell

06_3DH

全部

Skylake_L

06_4EH

全部

Skylake

06_5EH

全部

Kabylake_L

06_8EH

<= 0xC

Kabylake

06_9EH

<= 0xD

攻击场景

一个非特权用户可以使用 MDS 技术提取从另一个核心或同级线程上执行的 RDRAND 和 RDSEED 返回的值。

缓解机制

英特尔将发布微代码更新,修改 RDRAND、RDSEED 和 EGETKEY 指令,以覆盖共享暂存缓冲区中的秘密特殊寄存器数据,然后再由另一个逻辑处理器访问秘密数据。

在执行 RDRAND、RDSEED 或 EGETKEY 指令期间,来自其他逻辑处理器的核外访问将被延迟,直到特殊寄存器读取完成并且共享暂存缓冲区中的秘密数据被覆盖。

这对性能有三个影响

  1. RDRAND、RDSEED 或 EGETKEY 指令具有更高的延迟。

  2. 在多个逻辑处理器上同时执行 RDRAND 将被序列化,导致最大 RDRAND 带宽总体减少。

  3. 执行 RDRAND、RDSEED 或 EGETKEY 将延迟其他逻辑处理器错过其核心缓存的内存访问,其影响类似于传统的锁定缓存行拆分访问。

微代码更新提供了一种选择退出机制 (RNGDS_MITG_DIS),用于禁用在 Intel 软件保护扩展 (Intel SGX) 飞地外部执行的 RDRAND 和 RDSEED 指令的缓解措施。在使用此选择退出机制禁用缓解措施的逻辑处理器上,RDRAND 和 RDSEED 的执行时间不会延长,也不会影响同级逻辑处理器内存访问的性能。选择退出机制不影响 Intel SGX 飞地(包括在飞地内执行 RDRAND 或 RDSEED,以及 EGETKEY 执行)。

IA32_MCU_OPT_CTRL MSR 定义

除了此问题的缓解措施外,英特尔还添加了一个新的线程范围 IA32_MCU_OPT_CTRL MSR(地址 0x123)。此 MSR 和 RNGDS_MITG_DIS(位 0)的存在由 CPUID.(EAX=07H,ECX=0).EDX[SRBDS_CTRL = 9]==1 枚举。此 MSR 是通过微代码更新引入的。

将逻辑处理器的 IA32_MCU_OPT_CTRL[0] (RNGDS_MITG_DIS) 设置为 1 会禁用该逻辑处理器上在 Intel SGX 飞地外部执行的 RDRAND 和 RDSEED 的缓解措施。选择退出特定逻辑处理器的缓解措施不会影响其他逻辑处理器的 RDRAND 和 RDSEED 缓解措施。

请注意,在 Intel SGX 飞地内部,无论 RNGDS_MITG_DS 的值如何,都会应用缓解措施。

内核命令行上的缓解控制

内核命令行允许在启动时使用选项“srbds=”控制 SRBDS 缓解。此选项是

off

此选项禁用受影响平台上 RDRAND 和 RDSEED 的 SRBDS 缓解。

SRBDS 系统信息

Linux 内核通过 sysfs 提供漏洞状态信息。对于 SRBDS,可以通过以下 sysfs 文件访问:/sys/devices/system/cpu/vulnerabilities/srbds

此文件中可能包含的值为

未受影响

处理器不受漏洞影响

易受攻击

处理器易受攻击且缓解措施已禁用

易受攻击:没有微代码

处理器易受攻击,并且微代码缺少缓解措施

缓解:微代码

处理器易受攻击,并且缓解措施正在生效。

缓解:TSX 已禁用

仅当启用 TSX 时,处理器才易受攻击,而此系统在启动时禁用了 TSX。

未知:取决于

虚拟机管理程序状态

在受影响的虚拟来宾处理器上运行,但无法知道主机处理器是否已缓解或易受攻击。

SRBDS 默认缓解措施

此新微代码在执行 RDRAND、RDSEED 期间对处理器访问进行序列化,确保在释放共享缓冲区以供重用之前将其覆盖。使用“srbds=off”内核命令行禁用 RDRAND 和 RDSEED 的缓解措施。