“大神” linus torvalds 又来怼人了。
据开源中国报道,近日,linux 内核项目负责人 linus torvalds 删除了 aws 工程师提交的一个补丁,他认为这将导致所有使用该补丁的 linux 用户的 cpu 性能下降(无论他们是否使用英特尔 cpu) 。在回复该邮件时表示:
在我看来,这基本上是将缓存刷新指令导出到用户空间,并为进程提供了一种方式,可以说让与这事情无关的其他人也慢了下来。
换言之,据我所知,这就是疯狂的 intel 发布了有缺陷的 cpu,它给虚拟化代码带来了问题(我对此并不太在意),但现在要因为它的问题影响到本来就没有这些问题的 linux 用户,这是完全没有意义的。
我不想某个应用程序跑起来就像在说 ‘哦,我是一个特别的,漂亮的,如此娇嫩的花,我想刷新 l1d 上的每一个任务缓存,无论我在什么 cpu 上,无论它是否有漏洞’。因为这个应用程序不仅会降低自身速度,还会降低其他应用程序的速度。
也就是说,漏洞确实存在,影响不大,但如果利用这个补丁来修复反而会让用户的电脑变得更慢。
同时,他也指出,linus 对虚拟化的引用其实也是针对 aws 的,aws 和其他云服务提供商一样,销售的虚拟 cpu 通常启用了同步多线程(simultaneous multithreading,smt)功能。
“在启用 smt 的情况下,任务调度是分布式进行的,所以说,在任务结束与新任务开始之间刷新 l1d 缓存是非常愚蠢的。”
对此,有网友表示赞成,认为这是典型的 aoe 补丁,打补丁之后,无论是 amd 还是 intel ,都会降低性能,不能通过是正常的。
也有些网友纯碎是来吃瓜的,表示 linus 又口吐芬芳了,我的青春又回来了!(手动狗头)
新型攻击方式 snoop
那么,让大神吐槽的这个漏洞补丁是啥?
据开源中国介绍,这种新型攻击名为“探听辅助 l1 数据采样攻击”,简称 snoop (cve-2020-0550)。
今年 3 月,来自 aws 的软件工程师 pawel wieczorkiewicz 发现了 intel 处理器的这一漏洞,称它可能会泄露 cpu 内部存储器或缓存中的数据,涉及 cpu 包括 intel 旗下流行的 xeon 和 core 系列处理器。pawel 迅速向 intel 报告了此问题,随后该漏洞被 intel 定位为中等严重性漏洞。
snoop 攻击利用 intel cpu 多级缓存、缓存一致性和总线监听等特性,通过位于 cpu 内核中的一级数据缓存(l1d),通过“总线监听”(bus snooping)功能 —— 在 l1d 中修改数据时发生的缓存更新操作,将数据从 cpu 中泄漏出来。
所以,这个漏洞到底重不重要呢?
在讲这个问题之前,先要明白三级缓存的概念。
百度百科显示,通常,计算机会采用三级缓存的设计来提高 cpu 的运行效率,三级缓存包括 l1 一级缓存、l2 二级缓存、l3 三级缓存,这些缓存都集成在 cpu 内,它们的作用是作为 cpu 与主内存之间的高速数据缓冲区。
图片来源自网络(侵删)
其中 l1 最靠近 cpu 核心;l2 其次;l3 再次。运行速度方面:l1 最快、l2 次快、l3 最慢;在执行一项任务时,cpu 会先在最快的 l1 中寻找需要的数据,找不到再去找次快的 l2,还找不到再去找 l3,l3 都没有才去内存找。
一级缓存又可以分为一级数据缓存(data cache,d-cache,l1d)和一级指令缓存(instruction cache,i-cache,l1i),分别用于存放数据及执行数据的指令解码,两者可同时被 cpu 访问,减少了 cpu 多核心、多线程争用缓存造成的冲突,提高了处理器的性能。
也就是说,这个漏洞一旦被攻击者利用就会直接攻击电脑的核心,所以,pawel 认为这一攻击方式是危险的,补丁是必要的。
但 linus torvalds 却不这样认为。
intel 官方也给出了解释,表示这种新攻击很难实施,并且不会泄露大量数据,因为 l1d 缓存中的数据非常有限,并且只有在任务运行时调用数据的短暂时间内才会存在。
我们不认为 snoop 攻击在可信赖的操作系统环境下是一种实用的攻击方法,因为要利用这一漏洞需要同时满足很多苛刻的条件,比如攻击的时间要正好与用户打开程序的时间吻合,且程序调用的数据正好是攻击者想要窃取的数据。
至于这个补丁是否真的没多大用处,我们也只能等待时间来证明了。
“暴脾气”的开源之父: linus torvalds
在开源世界,linus torvalds 是个如雷贯耳的名字。技术天才、大神、开源领袖……他开发的 linux 对开源软件运动功不可没,是所有 geek 们的最爱。
linux 是一种自由和开放源代码的类 unix 操作系统。该操作系统的内核由 linus benedict torvalds 在 1991 年 10 月 5 日首次发布。在加上用户空间的应用程序之后,成为 linux 操作系统。
但是,伟大的人总有点怪脾气,这位开源之父就经常因为讲话带有情绪,甚至是因为带有脏话的意见而饱受非议。但大多数情况下 linus torvalds 愤怒的主要原因都与技术有关,并不针对人。
比如,2018 年,为了修补 spectre 漏洞,intel 工程师提供了一个间接分支限制推测(indirect branch restricted speculation, ibrs)功能的补丁。linus torvalds 当时就在邮件列表中公开指出 ibrs 会造成系统性能大幅降低,直言该补丁“就是彻彻底底的垃圾”,“intel 真的要做这个 x 一样的东西?”
再比如,他曾经是这样评价c :“坦白的说,c 是一个非常可怕的语言,并且很多不合格的程序员都在使用它,这让它变得更可怕。即使你用c语言不做任何事情也可以把那些用 c 的程序员干掉。”
甚至连 windows 也没逃过他的吐槽。
在一次采访中,记者问他对微软 windows 操作系统的看法时,他回答道:windows 作为一个操作系统,确实打造了许多还算 ok 的应用,其中有些还是非常不错的。但是从操作系统跟这个角度来看的话,windows 真的是一个很烂的操作系统。从道德角度来看,他的影响会更大些。微软确实是在影响着世界,但是我觉得他们不应该涉及那么广,只顾着赚钱。”
还有,在一次课堂上,当有学生问及英伟达芯片相关的问题时,linus 更是简单粗暴,并且直接对着镜头来了这么个动作:
尽管他自己也意识到了自己的这个坏毛病,曾经还表示闭关反省,但网友们认为这也并非什么大问题,毕竟比起他做出的贡献,这些反而是大神的人格魅力。
雷锋网(公众号:雷锋网)