【问题标题】:Has Hardware Lock Elision gone forever due to Spectre Mitigation?由于 Spectre 缓解,硬件锁消除是否永远消失了?
【发布时间】:2020-08-02 05:25:59
【问题描述】:

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

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

【问题讨论】:

  • spectre 和 HLE 之间有什么联系? xacquirexrelease(HLE 指令)避免将锁上的获取和释放存储添加到线程事务的写入集(否则所有线程都将正常序列化)。 Spectre 变体通过错误训练分支预测器来获取缓存中的敏感数据相关行来工作,崩溃有点不同。请注意,如果您指的是用于抑制异常的 TSX 扩展,那么它通常由于错误而被禁用。 Retpolines 是分叉瞬态和非瞬态路径的更好方法。
  • 我在这里读到:news.ycombinator.com/item?id=21533791(但我想要一些权威参考作为答案)
  • 我认为他们禁用 HLE 是为了防止 TAA 攻击 (kernel.org/doc/html/latest/x86/tsx_async_abort.html),而不是幽灵。他们可能将 HLE 称为不如 RTM 重要并完全禁用它。

标签: security x86 x86-64 speculative-execution intel-tsx


【解决方案1】:

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

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

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

链接包含以下信息:

  • 某些未来甚至当前的 CPU 可能具有针对 TAA 的硬件缓解措施,由 IA32_ARCH_CAPABILITIES[TAA_NO]=1 检测到。
  • 否则,如果 CPU 易受 MDS 的影响 (IA32_ARCH_CAPABILITIES[MDS_NO]=0),则 MDS 的软件缓解也会缓解 TAA
  • IA32_ARCH_CAPABILITIES[TAA_NO]=0 IA32_ARCH_CAPABILITIES[MDS_NO]=1 的情况下,TAA 应通过以下方式之一缓解:
    • 软件缓解
    • 有选择地禁用 TSX

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

现在,关于 HLE。 TAA article 说:

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

HLE 功能在Intel® 64 and IA-32 Architectures Software Developer’s Manual 中也被标记为已删除:

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

英特尔® 内存保护扩展(英特尔® MPX) MSR_TEST_CTRL,位 31(MSR 地址 33H) 硬件锁省略 (HLE)

我相信我的问题有答案:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-26
    • 2016-02-23
    • 1970-01-01
    • 1970-01-01
    • 2013-08-20
    • 1970-01-01
    • 2017-09-10
    • 1970-01-01
    相关资源
    最近更新 更多