Linus拒绝“超越愚蠢”AWS制造的Linux补丁

2020-06-04 08:32:52

Linux内核负责人Linus Torvalds销毁了亚马逊网络服务(AWS)工程师提供的一个补丁,该补丁旨在缓解今年早些时候一名AWS工程师发现的针对英特尔CPU的Snoop攻击。

3月份披露了所谓的Snoop辅助的L1数据采样或Snoop(CVE-2020-0550)攻击,这些攻击影响到一系列英特尔至强和酷睿CPU。

AWS工程师Pawel Wieczorkiewicz发现了一种方法,可以通过位于CPU内核中的L1D高速缓存,通过总线监听(在L1D中修改数据时发生的高速缓存更新操作)泄漏英特尔CPU内存中的数据。

在这一消息披露之后,AWS工程师Balbir Singh为Linux内核提出了一个补丁,使应用程序能够在任务切换时选择加入刷新L1D缓存。

辛格在4月份解释说,这可以保护他们的数据不会在任务上下文切换后通过旁路被窥探或泄露。该修补程序计划随Linux内核5.8版一起提供。

该功能将允许基于选择加入的应用程序调用prctl(2),以便在任务离开CPU时刷新该任务的L1D缓存(假设硬件支持它)。

但是,正如Phoronix发现的那样,Torvalds相信补丁将允许选择加入补丁的应用程序降低其他应用程序的CPU性能。

托瓦尔兹昨天写道,因为在我看来,这基本上就是将缓存刷新指令导出到用户空间,并给进程提供了一种只需说出减慢我安排的其他任何人的速度的方法。

换句话说,据我所知,这让疯狂的英特尔发布了有缺陷的CPU,它会导致虚拟化代码出现问题(我并不太在意这一点),并将其变成任何人都可以选择加入这种疾病的疾病,现在它甚至会影响不需要它的人和CPU,以及它完全没有意义的配置。在这种情况下,任何人都可以选择加入这一疾病,而现在它甚至会影响到不需要它的人和CPU,以及它完全没有意义的配置。在这种情况下,它会导致虚拟化代码出现问题(我并不太在意这一点),并将其转变为任何人都可以选择加入这种疾病,现在它甚至会影响到不需要它的人和CPU,以及它完全没有意义的配置。

我不想让某些应用程序运行。哦,我很特别,很漂亮,而且是如此精致的一朵花,以至于我想刷新每个任务开关上的L1D,不管我在哪个CPU上,也不管有没有勘误表。因为这款应用程序不仅降低了自身的运行速度,还降低了其他应用程序的运行速度。

托瓦尔兹提到的虚拟化是针对AWS的,与其他云提供商一样,AWS销售的虚拟CPU通常启用了同步多线程(SMT)。

他接着指出,启用SMT后,它应该完全禁用这种疯狂的伪安全,因为在那种情况下它是完全没有意义的。

至少,启用SMT应该完全禁用这种疯狂的伪安全,因为在那种情况下它是完全没有意义的。他说,在SMT开启的情况下,计划根本不是同步点,所以说我当然会在上下文切换时刷新L1是非常愚蠢的。

在与辛格的一次讨论中,托瓦尔兹指出,在SMT上刷新L1D$是疯狂的,因为攻击者只会坐在兄弟核心上,在*任务切换发生之前*攻击L1内容。

正如注册中心所指出的那样,AWS首席工程师Benjamin Herrenschmidt在与Red Hat Linux内核贡献者Ingo Molnar的讨论中也为关于补丁的辩论增加了一些背景。

Herrenschmidt承认该补丁对SMT毫无意义,但他敦促内核开发者不要随波逐流,并驳斥了该补丁是因为AWS想要将超线程作为虚拟CPU销售的说法。

赫伦施密特写道,不一定也不是在所有情况下。";是的,虚拟机通常会启用SMT。不过,这并不是针对他们的。他说,讨论期间给出的一个例子是属于不同用户的容器。

另一个示例是,与系统的其余部分相比,进程处理更关键的数据(如支付信息),并且希望保护自己(或管理员希望保护该进程),使其不会将数据泄露给不太受信任的进程。";

";AWS不仅仅有VM可供租用:-)我们的用户可以使用一大堆更高级别的服务,而不是所有这些服务都必须在按vCPU收费的VM上运行。";

Herrenschmidt说,这些补丁并不是试图解决运行SMT的客户虚拟机内部发生的问题,也不是为了保护虚拟机免受同一系统上其他虚拟机的攻击。