由于 Spectre Mitigation,Hardware Lock Elision 是否已经一去不复返了?

Ale*_*iev 6 security x86 x86-64 speculative-execution intel-tsx

由于 Spectre 缓解,所有当前 CPU 都禁用了硬件锁定省略是否正确,并且任何尝试使用 HLE 内在函数/指令进行互斥都会导致通常的互斥?

这是否有可能在未来不会有类似 HLE 互斥体的东西来避免像 Spectre 这样的漏洞?

Ale*_*iev 5

因此,禁用 TSX 并不是为了缓解 Spectre,而是作为另一个漏洞缓解措施 TSX 异步中止 (TAA) 的一部分。

\n\n

这是英特尔网站上的相关文章:

\n\n\n\n

其中链接到两篇更详细的文章:

\n\n\n\n

链接包含以下信息:

\n\n
    \n
  • 某些未来甚至当前的 CPU 可能具有针对 TAA 的硬件缓解措施,由IA32_ARCH_CAPABILITIES[TAA_NO]=1.
  • \n
  • 否则,如果 CPU 容易受到 MDS ( IA32_ARCH_CAPABILITIES[MDS_NO]=0) 的影响,MDS 的软件缓解措施也将缓解 TAA
  • \n
  • IA32_ARCH_CAPABILITIES[TAA_NO]=0 在和 的 情况下IA32_ARCH_CAPABILITIES[MDS_NO]=1,应通过以下其中一项来缓解 TAA:\n\n
      \n
    • 软件缓解
    • \n
    • 有选择地禁用 TSX
    • \n
  • \n
\n\n

上述选择性禁用 TSX的能力随微码更新而来。此类微代码更新后,控制 TSX 的能力由IA32_ARCH_CAPABILITIES[TSX_CTRL] (bit 7)=1.

\n\n

现在,关于 HLE。TAA 文章说:

\n\n
\n

某些处理器可能需要加载微代码更新以添加对IA32_TSX_CTRL. MSR 支持通过设置禁用 Intel TSX 的 RTM 功能TSX_CTRL_RTM_DISABLE (bit 0)。当该位被设置时,在事务内执行任何指令之前,所有 RTM 事务都将中止并使用中止代码 0,即使是推测性的。在枚举 的处理器上IA32_ARCH_CAPABILITIES[TSX_CTRL] (bit 7)=1,HLE 前缀提示始终被忽略。

\n
\n\n

HLE 功能在Intel\xc2\xae 64 和 IA-32 架构\nSoftware Developer\xe2\x80\x99s 手册中也被标记为已删除:

\n\n
\n

2.5 英特尔指令集架构和删除的功能

\n\n

Intel\xc2\xae 内存保护扩展 (Intel\xc2\xae MPX)\n MSR_TEST_CTRL,位 31(MSR 地址 33H)\n 硬件锁消除 (HLE)

\n
\n\n

我相信我的问题已经有了答案:

\n\n
\n

由于Spectre TAA 缓解措施,所有当前 CPU 都禁用了硬件锁定消除,并且任何使用 HLE 内在函数/指令创建互斥体的尝试都会导致通常的互斥体,这是否正确?

\n
\n\n

是的。它已被弃用。除非英特尔取消弃用它。

\n\n
\n

未来是否可能不会出现 HLE 互斥体之类的东西来避免 Spectre 等漏洞?

\n
\n\n

不会。还有 RTM,可能没有禁用,它可以用来创建像 HLE 互斥体一样的互斥体。未来可能还有一些不受 TAA 影响的处理器,RTM 可能适合它们。

\n