梦晨 萧箫 发自 凹非寺
量子位 报道 | 公众号 QbitAI

Linux内核的维护者Greg K-H,突然把整个明尼苏达大学拉黑了!

这是咋回事?

原来明尼苏达大学华人教授K.J Lu带领的团队在向Linux内核提交补丁时,故意引入新的Bug,然后以此写论文。

在被警告过一次之后,最近竟然有这个大学的学生提交明显无效的补丁。

要知道,Greg每天要审查几百个代码提交,忙得要死,中间还发现捣乱的,得是什么心情。

Greg表示,随便一个懂点C语言的人都能看出你这代码没丁点作用,别拿我们当试验对象。

你和你的团队已经公开承认故意提交bug来观察开源社区的反应,以此发表论文。现在你们又提交一系列明显错误的补丁,你叫我怎么想?

Greg放下狠话,未来任何来自umn.edu邮箱的提交都应被默认拒绝

不仅如此,Greg一口气把来自这个学校邮箱的历史提交都撤销了,后面再挨个审查。

此事被Greg挂出,整个开源社区立即炸开了锅。Twitter、Reddit、Hacker News都在疯狂盖楼中。

究竟发生了什么?这个故事要从去年11月说起。

这个团队到底要搞什么?

先看看这篇论文的标题:论通过伪君子式代码提交 (Hypocrite Commits)在开源软件中隐蔽地引入漏洞的可行性。

作者是Lu教授和他的学生Q.S Wu,他们的研究方向是操作系统、程序分析、编译器的安全问题。

Lu教授去年11月把这篇论文的摘要发在了Twitter上,引起了大家的困惑。

随后摘要被删了,只留下一个解释。

Lu教授的说法是,他们先找到一个真实的Bug A,写一个补丁A,这个补丁中却悄悄带一个Bug B。再写一个修复Bug B的补丁B一起提交,换句话说是用了两个步骤修复Bug A。

Lu教授还声称,他们将此事告知了内核管理者,让他们要么同时接受两个补丁,要么都不接受。

并且没有Linux用户因此受到伤害,最终结果是他们提交了一系列补丁修复了3个真实Bug(中间引入的新Bug都被后续补丁修复了)。

后来看到的吃瓜群众表示,你这把帖删了就留个解释,让人更迷惑了。

于是,该研究团队在12月写了一篇完整声明来澄清这件事。

声明中提到,论文的目的是提高开源软件修补过程的安全性,已被IEEE S&P 2021接受。

该团队在为Linux内核修复1000多个bug的过程中观察到了补丁过程存在一些问题。

论文验证了在提交补丁中引入新的Bug,并被开源社区接受的可能性。想呼吁大家重视这个问题、改善补丁的流程,比如开发自动测试和验证补丁有效性的工具。

所有引入Bug的补丁都只停留在邮件列表交流中,没有被采用或合并到任何Linux分支中,这一点得到了社区维护者的明确确认。

总之是为了提高开源软件安全性,没有恶意。由于没有解释清楚造成了许多争议,向大家道歉。

这种研究不可避免地浪费了社区维护者宝贵的时间,为了弥补,团队把补丁的代码改动限制在5行,并努力找出并修复了3个真实的bug。

声明中还举了之前的例子,该团队在2013年证明苹果公司的应用审查过程存在缺陷,随后苹果公司加固了系统。因此该团队相信本次研究最终也能提高Linux内核的安全性。

最关键的是,这项研究已经得到了明尼苏达大学伦理审查委员会(IRB)的豁免(Exempt)。

IRB认为,研究对象不是人类行为,不属于人类研究(Human Research)。

研究过程中没有收集任何个人信息。

研究目的是揭示过程中存在的问题,而不是指责任何开源社区维护者。

但这篇论文,为何会导致社区将明尼苏达大学拉黑呢?

为什么社区要拉黑他们?

时间来到今年4月。

4月6号,明尼苏达大学一个名为Aditya Pakki的在读博士生,给Linux内核提交了一个小补丁。

这个补丁看起来很简单,似乎也能提高代码质量,起初曾获得了几个社区成员的批准。

然而,4月9日,谷歌首席软件工程师、社区成员之一Eric Dumazet很快发现不对,并指出了代码存在的问题。

4月19日,Linux内核社区的贡献者之一Al Viro在看过代码后,非常生气,表示这个补丁的提交者“不是对代码一窍不通的话,就是故意的。”

之所以会做出这样的判断,是因为这名提交代码的博士生Aditya Pakki,恰好也在明尼苏达大学K.J Lu教授的小组中。

而K.J Lu教授带领的团队,正是之前给Linux内核社区提交过“垃圾代码”、来进行“分析开源软件漏洞”研究的团队。

这事一出,社区成员Leon Romanovsky发现,这位博士还提交了3个类似的补丁。

他表示,这四个补丁均带有严重的安全漏洞,其中好些已经进入了核心代码层。

现在,这些补丁正在被移除。

对此,Aditya Pakki在4月21号回应此事,表示研究人员的态度明显是“先入为主”:

希望您能停止这样近乎疯狂的指控,这近乎于诽谤。我们并不是Linux内核专家,在发送这些补丁时,也希望得到反馈……既然你们如此不待见,我不会再发送任何补丁了,而且,你们这种态度对新人和非专业人士很不友好。

这番言论惹怒了Linux内核管理员Greg。

他表示,自己将会禁止明尼苏达大学对Linux内核做出贡献,并会取消这一研究小组此前所有的贡献,因为这些提交“显然都是恶意的行为”。

Greg在社交媒体上表示:“这样做是浪费开源社区的时间,Linux内核开发者们不喜欢被试验。”

那么,为什么要拉黑整个明尼苏达大学呢?

社区认为,明尼苏达大学竟然会让这种研究获得IRB Exempt,证明学校并不在乎开源社区、甚至可能是故意的。

现在,明尼苏达大学计算机科学与工程系官方已出面调查此事:

我们立即暂停了这项研究,目前正在调查这项研究所用的方法、以及研究的审批过程,以采取适当补救措施,防止将来发生其他问题。调查结果将尽快反馈给社区。

具体来说,将会重新调查这一研究获得IRB的过程,是否具有争议。

教授回应:并非同一项目

目前,K.J Lu教授已经针对此事进行回应:

抱歉这件事引起了极大的关注度,上次有关“分析开源软件漏洞”的研究,已在2020年11月份结束。这次提交的错误代码,来自一个新项目,并非我们有意为之。

针对这件事本身,高级Linux内核开发、谷歌工程师Ted t’so认为,这里面最关键的问题在于,Lu教授和他的团队并未对自己此前的研究表示愧疚:

更糟糕的是,明尼苏达大学的IRB机构认为,Lu教授的研究不属于人体试验,因此不受控制。这样的话,禁止全校对Linux内核社区做贡献,可能是唯一的选择。

据ZDNet报道,不少Linux社区的开发者和管理员,都持有这样的看法。

针对教授研究的内容本身,Red Hat的科技策略分析师Jered Floyd则认为,关于“分析开源软件漏洞”的这项研究,确实“不太道德”:

这已经不仅仅是“被试验”了。就像是你自称“安全研究员”,但却去百货商店里剪断了所有汽车的刹车线,看看有多少人会遇上撞车事故。

针对大学的机制,也有网友表示,部分大学的IRB审查机制,还应该进一步完善:

有的学校审查机制真的很严格,有的却根本不太管这些事情。

当然,也有网友认为,Linux也应该采取更安全的方式进行代码贡献:

在这件事情中,双方都应该汲取教训。

争议论文:
https://github.com/QiushiWu/QiushiWu.github.io/blob/main/papers/OpenSourceInsecurity.pdf

对论文的声明:
https://www-users.cs.umn.edu/~kjlu/papers/clarifications-hc.pdf

参考链接:
[1]https://cse.umn.edu/cs/statement-cse-linux-kernel-research-april-21-2021
[2]https://www.zdnet.com/article/greg-kroah-hartman-bans-university-of-minnesota-from-linux-development-for-deliberately-buggy-patches/
[3]https://news.ycombinator.com/item?id=26887670
[4]https://lore.kernel.org/linux-nfs/YH%2FfM%2FTsbmcZzwnX@kroah.com/