梦晨 萧箫 发自 凹非寺
量子位 报道 | 公众号 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/

华人学者往Linux内核里提交bug,社区把整个明尼苏达大学拉黑了相关推荐

  1. 如何向Linux内核提交代码,华人教授向 Linux 内核提交含 Bug 代码,Linux 管理员直接拉黑整所大学!...

    技术编辑:小魔丨发自 思否编辑部公众号:SegmentFault Linux 内核是目前最大的软件项目之一,拥有 2800 万行代码.世界各地的贡献者每天向 Linux 内核管理员提交大量 patch ...

  2. exfat单元分配要设置多少_微软宣布,支持往Linux内核里添加exFAT存储了!跨系统存储的福音...

    栗子 发自 凹非寺  量子位 报道 | 公众号 QbitAI exFAT,是微软开发的文件系统,为闪存而生. 你的U盘.SD卡.手机等等存储设备,能存4G以上的大文件,很大程度上是它的功劳. 可exF ...

  3. Linux 内核里的“智能指针”【转】

    转自:http://blog.jobbole.com/88279/ 众所周知,C/C++语言本身并不支持垃圾回收机制,虽然语言本身具有极高的灵活性,但是当遇到大型的项目时,繁琐的内存管理往往让人痛苦异 ...

  4. Linux 内核里的“智能指针”

    Linux 内核里的"智能指针" from: http://begeek.cn/post/7889.html?ref=myread 众所周知,C/C++语言本身并不支持垃圾回收机制 ...

  5. Linux内核里的“智能指针” (续)

    在上一篇文章<Linux内核里的智能指针>里介绍了Linux内核如何使用引用计数来更加安全的管理内存,本文承接前篇,主要介绍几点使用kref时的注意事项. Linux内核文档kref.tx ...

  6. linux红黑树节点没有数据,真正理解红黑树,真正的(Linux内核里大量用到的数据 -电脑资料...

    作为一种数据结构,红黑树可谓不算朴素,因为各种宣传让它过于神秘,网上搜罗了一大堆的关于红黑树的文章,不外乎千篇一律,介绍概念,分析性能,贴上代码,然后给上罪恶的一句话,它最坏情况怎么怎么地... 1. ...

  7. Linux 内核里的数据结构——基数树

    Linux 内核里的数据结构--基数树 正如你所知道的,Linux内核提供了许多不同的库和函数,它们实现了不同的数据结构和算法.在这部分,我们将研究其中一种数据结构--基数树Radix tree.在 ...

  8. linux5关闭apic服务,阐述Linux内核里面的APIC编程

    微软操作系统的火热,你是在应用Linux操作系统么?如果你是Linux操作系统的老用户. 这里为你讲解的问题会对Linux内核里面的APIC编程有所帮助.Linux内核的名字也是"Linux ...

  9. linux内核之旅ppt_一起玩转 Linux 内核之旅开源社区吧

    | 作者:梁金荣 | 转载自:Linux 内核之旅 | 编辑:王皓月 | 设计:朱亿钦 开源社引言 开源社向来是支持本土的开源 Community 的发展的,非常欣喜的看到西安邮电大学的陈莉君教授迈出 ...

最新文章

  1. 面试:你知道 Java 中的回调机制吗?
  2. jQuery Template的用法
  3. 再爆安全漏洞,这次轮到Jackson了,竟由阿里云上报
  4. 数据结构与算法 整理笔记---二叉搜索树
  5. 产品问答 | 入职一家公司,你的选择依据是什么?
  6. linux id高 负载高,linux下的rsync连接数突然增高,负载增高导致服务登录失败
  7. JAVA入门级教学之(break跳出)
  8. 102.如何减轻缓存失效时上游服务的压力
  9. 【BZOJ2816】【洛谷】【ZJOI2012】—网络(LCT)
  10. 【Django 2021年最新版教程7】前端html接收后端传递的变量值 渲染
  11. 数字电路实验四选一数据选择器行为级模型
  12. 基于 MapObjects开发电子海图系统的研究与实现
  13. w7计算机快捷键设置方法,win7快捷键设置,windows常用24个快捷键
  14. 北京大学可视化发展前沿研究生暑期学校Day1
  15. Android Studio 实现将视频资源嵌入APP中
  16. css字号 h5_你应该知道的CSS文字大小单位PX、EM、PT
  17. shiro 安全(权限)框架
  18. 信息系统项目管理师核心考点(四十六)采购工作说明书(SOW)
  19. 增值税发票生成EXCEL——调用百度开发接口
  20. mysql 垃圾_垃圾mysql pipelin

热门文章

  1. 获取PHP中的完整URL
  2. SpringBoot数据缓存
  3. 微信公众号开发小记(二)--服务器验证
  4. dom4j的xpath查找xml的指定节点
  5. 实现自己的连接池(一)
  6. Where we can find sharepoint user list
  7. 为什么java安装卡在满格_Java面试总结(JVM)
  8. decimalformat精度丢失_笔记一:DecimalFormat BigDecimal
  9. 数据备份 另一服务器_为什么NAS网络存储服务器会受到如此多的关注?
  10. SpringMVC框架 学习DAY_03:@RequestMapping注解/拦截器与过滤器