最近,Linux内核开发负责人 Linus Torvalds建议审查激活STIBP补丁的机制 (单线程间接分支预测器),可针对Spectre v2提供额外的保护。
这些补丁最近已包含在Linux内核分支4.20中 正在开发中,并已重新导出到Linux内核4.19.2的稳定版本。
通过以当前形式使用STIBP,用户 注意到某些应用程序的性能显着下降 当使用这种同时多线程技术(SMT或超线程)时。
考虑到 性能下降可以达到50%用莱纳斯·托瓦尔兹本人的话来说, 以当前形式使用STIBP是没有意义的完全禁用SMT /超线程功能更容易,更可靠,这是安全意识强的人经常这样做的原因。
新的Linux 4.20内核导致的最大减慢是由于Spectre变体2的缓解 Linux创始人Linus Torvalds现在想要限制。
这是当出现问题时,如果对于真正关心安全性的人已经禁用了SMT /超线程,是否默认情况下是否有必要启用STIBP。
而, 对于普通用户而言,50%的性能损失是一个重要因素,可能代表一些问题, 这些理论漏洞是否值得阻止值得怀疑。
Torvalds要求默认情况下不再启用STIBP
与此同时 Linus Torvalds认为,基于Spectre v2的实际攻击不太可能在普通用户系统上出现。
Linus Torvalds认为浏览器是攻击的主要目标,它们已经在其级别上增加了保护(威胁是针对可以开发出选择性保护方法的孤立JIT进程)。
Se 建议在默认情况下仅使用Spectre保护方法,这不会导致性能大幅下降,而是有选择地或作为选择使用其他方法。
那么,当*真正*关心的人已经禁用SMT时,为什么默认情况下STIBP会变慢?
我认为我们应该使用与L1TF相同的逻辑-默认情况下,我们不能降低性能。 对此立即发出通知,让疯狂的人说:“我宁愿50%的成功率,也不用担心理论问题。” 莱纳斯·托沃兹
STIBP的默认使用应恢复
此外, 英特尔的Arjan van de Ven表示,英特尔和AMD不建议默认使用STIBP,因为 可以将此功能与非常重的锤子相提并论,因为它不是日常工作中使用的,但在某些情况下是必需的。
他认为 微代码更新中提出的STIBP机制使您可以控制处理器高速缓存的关闭 通过在CR0寄存器中设置一个特殊位,不应在所有地方都执行此操作,而应仅在特别紧急的情况下进行。
英特尔的Tim Chen提出,只有在通过prctl明确请求或针对禁止创建核心内存转储(PR_SET_DUMPABLE)的进程(例如sshd)时,选择性阻止沙箱攻击才包括STIBP。
关于在Linux Kernel 4.20上使用STIBP补丁时的性能下降,结果很大程度上取决于负载的类型。
例如,已经进行的测试表明,SpecInt Rate 2006软件包的性能下降了21%,而Phoronix测试的性能下降了3%至20%。
Ingo Molnar是著名的Linux内核开发人员和CFS Task Scheduler的作者,对这种情况发表了评论,建议在添加问题的解决方案时添加性能测试信息更改列表。