作者 | 褚杏娟

“即使你可以提供证据证明那些补丁是有效的,但为什么事实上我们却是在浪费时间做额外的工作?”

Linus Torvalds 应该要气炸了。

近日,Linux 内核稳定分支的维护者 Greg Kroah-Hartman 将美国明尼苏达大学(UMN)拉入了“黑名单”,禁止其向主线 Linux 内核提交补丁,原因是 UMN 故意提交有安全影响的可疑代码,并以研究的名义进行其他“实验”。

 

1 并非第一次引起争议

前段时间,明尼苏达大学计算机科学与工程专业的博士生 Qiushi Wu(本科为中国科学技术大学)和该学院的助理教授 Kangjie Lu(本科为北京大学)撰写了一篇旨在提高 OSS 中修补过程安全性的论文,题为“On the Feasibility of Stealthily Introducing Vulnerabilities in Open-Source Software via Hypocrite Commits”。

据悉,Qiushi Wu 在 2018 年获得了中国科学技术大学信息科学与工程系的学士学位,研究方向是程序分析技术在 Linux 内核等操作系统上的应用。Qiushi Wu 在今年 2 月份将上述论文上传到 GitHub 上(目前已经删除),并计划在 5 月份举行的第 42 届 IEEE 安全与隐私研讨会上针对该论文进行讨论。

该论文探索了在开源项目的补丁程序中藏匿安全漏洞的可能性,希望指导维护团队更科学地衡量此类补丁、正确做出合并判断。

在研究中,研究团队用实验来演示引入漏洞补丁的实用性,该行为被认为会在操作系统软件中引入错误条件。而且在论文中,他们公开了将漏洞插入 Linux 内核及其他开源项目的可行方法,并表示向各类开源项目的漏洞植入成功率已经接近 60%。这些在当时就引发了很大的安全争议。

对此,Qiushi Wu 在去年 12 月 15 日也做出了解释。“我们没有也不打算在 Linux 内核中引入任何错误或漏洞。所有引入错误的补丁只在电子邮件交流中保留,并没有被采用或合并到任何 Linux 分支中,这是由维护者明确确认的。因此,在任何 Linux 分支中,邮件中引入错误的补丁甚至都没有变成 Git 提交。没有 Linux 用户会受到影响。”

同时,Qiushi Wu 也表示,该实验已通过了 UMN 的机构审查委员会(IRB)审查,该委员会确定该项目不涉及人类研究,因此没有再进行伦理审查。

但最近,明尼苏达大学的研究人员又提交了新一轮的补丁,这些补丁声称来自“一个新的静态分析器”,这引起了 Greg 的反感,并将整个明尼苏达大学拉入黑名单。

“我一直想这么做,但最近的事件终于迫使我这么做了。”Greg 表示。对此,明尼苏达大学计算机科学与工程专业博士生 Aditya Pakki 表示很气愤,并向 Greg 发邮件表示:

Greg,我谨请你停止这些诽谤性的野蛮指控。

这些补丁是作为我编写的新静态分析器的一部分发送的,显然它的灵敏度不高。我提交了补丁,希望能得到反馈。我们不是 Linux 内核方面的专家,但(你)反复发表这些声明令人讨厌。

这显然是一个错误的步骤,但是你先入为主的偏见如此强烈,以至于你提出的指控毫无根据,也没有带来任何正向、有益的反馈。由于不但不受欢迎而且还会吓到新手和非专家,因此我将不再提交补丁。

而 Greg 也在回复的电子邮件中强调,错在明尼苏达大学,社区不是其测试对象:

你和你的团队已经公开承认发送了已知的错误补丁,以查看内核社区对它们的反应,并基于此发表了一篇论文。

现在你又提交了一系列明显错误的补丁,我该怎么看待这件事情呢?

这些补丁显然不是由任何一个有智能的静态分析工具创建的,因为它们都是完全不同的模式的结果,而且所有这些显然都没有修复任何东西。那么,除了你和你的团队继续通过提交这种毫无意义的补丁来对内核社区的开发者进行试验之外,我还能想到什么?

任何对 C 语言有一定了解的人,用点时间都可以看出来你们提交的补丁根本没有任何作用,所以认为一个工具创造了这些补丁,然后你认为它们是有效的 "修复",这完全是你们的疏忽,不是我们的。错在你们,我们的工作不是成为你创造的工具的测试对象。

我们社区不喜欢被试验,也不喜欢通过提交已知的补丁被“测试”,这些补丁要么是故意不做什么,要么是故意引入 bug。如果你想做这样的研究,我建议你找其他社区,你在这里是不受欢迎的。

因此,我现在不得不禁止你的大学今后的所有贡献,并剔除掉你以前的贡献,因为它们显然是以恶意的方式提交的,目的是造成问题。

在此之后,UMN 计算机科学官方也通过 Twitter 发布了以下声明,表示该研究项目已被暂停,并计划调查该项目的批准程序,以确定是否需要采取补救措施和可能的保障措施。

今天,明尼苏达大学计算机科学与工程学系的领导了解到一位教职员工和研究生正在研究 Linux 内核的安全性的详细信息。由于所使用的研究方法引起了 Linux 内核社区的强烈关注,导致截至目前为止本大学被禁止为 Linux Kernel 做出任何贡献。

我们对此非常重视,并立即中止了这一研究。我们将对该研究的方法和批准流程做相应的调查,确定适当的补救措施,并在需要时采取措施防止未来可能发生的问题。我们会尽快将调查结果报告给社区。

Mats Heimdahl,部门主管

Loren Terveen,部门副主管

 

2 浪费社区时间还是有价值的研究?

Linux 内核是迄今为止规模最大的软件开发项目之一,目前其代码总量已经达到 2800 余万。Linux 内核维护团队每天都要接受来自世界各地、不同领域的贡献者们提交的大量补丁,并在将成果正式合并前对内容进行审核。明尼苏达大学研究团队的行为无疑遭到了 Linux 贡献者和维护人员的强烈谴责。

在 Linux 内核方面拥有丰富经验的开发人员 Leon Romanovsky 发现后立即表示要求明尼苏达大学停止提交已知无效的补丁,“这是在浪费我们的时间。”甚至有网友表示,这篇论文故意误导,试图夸大其贡献。“学术界的很多人只是为了拿到证书而已。”

位于美国波士顿的东北大学计算机科学副教授 Abhi Shelat 表示,“学术研究不应该浪费社区的时间。如果你觉得这项研究值得做,应该联系 UMN 的机构审查委员会。”Shelat 同时敦促 Linux 社区成员向明尼苏达大学的 IRB 提出质疑,以确定该实验是否得到了充分的审查。

针对这点,Qiushi Wu 在之前的解释中也表示,这项工作确实了浪费了维护人员的时间,虽然仔细考虑过这个问题,但没有找到更好的解决方案,但团队将通过精简补丁等方式在努力避免该问题。

不过,也有 Linux 内核社区之外的开发人员认为,大家应该关注的是 Linux 内核代码的安全性问题,而非研究人员的“滑稽”行为。

如果 UNM 没有引起任何注意,它们是否会被发现?其他恶意行为者是否有做过这样的事情而没有被抓住?

“这似乎表明任何黑客组织或个人可以将自己的攻击行为置于内核中。假设他们贡献了 99.9%的有用代码,解决了实际问题,在几年内建立了信任,并且很少编写难以察觉的恶意漏洞。然后,每个人都认为那些漏洞只是普通的错误。”

Google 密码学和软件工程师 Filipo Valsorda 在推特上表示,就像 Linux 内核维护者说他们无法确定补丁是否是恶意的,因此必须依靠电子邮件地址域名。比起谴责学者,是否基于确定的代码正确性做出信任决定应该是更值得关注的问题。

卢塔安全公司 (Luta Security) 首席执行官凯蒂•穆苏里斯 (Katie Moussouris) 也表达了类似的看法,称这种反应是“情绪上的过度反应”,并认为这些发现从国家安全角度来看是有价值的。

经过激烈的争论之后,Greg 现在表示,将还原该团队提交的所有补丁,并再次进行审查来确定其是否有效。在此之前,该团队的补丁仍会被删除,以确保代码库中没有引入任何问题。

这个补丁集有的可以“简单”恢复,有 68 个需要手动检查恢复,其中一些还不能被还原。在确定这些更改有效后,明尼苏达大学研究团队可以重新提交。

但最后,Greg 还是表示,“即使你可以提供证据证明它们是有效的,但为什么事实上我们却是在浪费时间做额外的工作?”

延伸阅读:

https://fosspost.org/researchers-secretly-tried-to-add-vulnerabilities-to-linux-kernel/

https://www.theregister.com/2021/04/21/minnesota_linux_flaws/

有道无术,术可成;有术无道,止于术

欢迎大家关注Java之道公众号

好文章,我在看❤️

故意向Linux内核提交漏洞被全线拉黑?华人教授行为引众怒相关推荐

  1. 异域linux内核漏洞,Linux内核再现漏洞!这次11年后才发现

    原标题:Linux内核再现漏洞!这次11年后才发现 还记得上一次Linux内核出现大的漏洞是什么时候吗?2009年Linux内核出现严重安全漏洞,直到2014年才被发现,这个严重安全漏洞整整存在了5年 ...

  2. Linux系统防CC攻击自动拉黑IP增强版Shell脚本

    Linux系统防CC攻击自动拉黑IP增强版Shell脚本 文章目录 一.Shell代码 二.执行脚本 三.效果测试 四.附加说明 前天没事写了一个防CC攻击的Shell脚本,没想到这么快就要用上了,原 ...

  3. Linux系统防CC攻击自动拉黑IP增强版(Shell脚本)

    这篇文章主要介绍了Linux系统防CC攻击自动拉黑IP增强版(Shell脚本),需要的朋友可以参考下 前天没事写了一个防CC攻击的Shell脚本,没想到这么快就要用上了,原因是因为360网站卫士的缓存 ...

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

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

  5. linux内核远程漏洞,CVE-2019-11815:Linux内核竞争条件漏洞导致远程代码执行

    *本文中涉及到的相关漏洞已报送厂商并得到修复,本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担. 运行了Linux发行版的计算机设备,如果内核版本小于5.0.8的话,将有可能受到一 ...

  6. 如何向Linux内核提交代码,如何往 Linux 内核社区提交代码

    总有这样一群人,不计报酬不辞辛苦的为这个世界的美好添砖加瓦,在这一类人中的某一些人,他们开创了许多伟大的开源工程,这些工程也许会随着年代的久远逐渐被替代,但仍然有一些随着时光流逝变得愈发强大,这其中就 ...

  7. 怎么挖linux内核的漏洞,linux内核漏洞分析实战看看专家是怎么一步步...-卓优商学院问答...

    推荐回答 Linux内核调试方法kdb:只能在汇编代码级进行调试:优点是不需要两台机器进行调试.gdb:在调试模块时缺少一些至关重要的功能,它可用来查看内核的运行情况,包括反汇编内核函数.kgdb:能 ...

  8. Linux一键脚本可防cc攻击,Linux系统防CC攻击自动拉黑IPShell脚本

    加入到crontab计划任务执行的 脚本#!/bin/bash #Author:萧萧一风 #Desc:Auto Deny Black_IP Script. #Date:2019-9-28 #取得参数$ ...

  9. Linux IP不为空 脚本,Linux系统防CC攻击自动拉黑IPShell脚本

    加入到crontab计划任务执行的 脚本#!/bin/bash #Author:萧萧一风 #Desc:Auto Deny Black_IP Script. #Date:2019-9-28 #取得参数$ ...

最新文章

  1. 基于相机和激光传感器的车顶视觉检测系统
  2. java线程 yield_Java线程中yield与join方法的区别
  3. java中char占的二进制,java数据类型与二进制详细介绍
  4. larvel 中的api.php_Laravel API 系列教程(一): 基于 Laravel 5.5 构建 测试 RESTful API...
  5. java应用程序中判断用户输入的一个整数是否在已知数组里。
  6. Pyppeteer 使用笔记
  7. oracle如何把字符集改回默认,更改oracle字符集
  8. Java 数组+循环升级篇
  9. xcode快捷键(二)
  10. css内联样式!important
  11. 进程与线程的一个简单解释---阮一峰的网络日志
  12. 对话系统 NLU项目总结报告
  13. 孟岩:我反对将Token翻译成“代币”
  14. 清华刘知远:好的研究想法从哪里来?
  15. 一个新的起点,也是转折点
  16. 视频监控摄像头直播主要应用领域分析
  17. 不同手机类型该如何更换手机IP
  18. 联想拯救者Y9000P 2022 配置
  19. signature=4746e22a831cd5efc939a83a10a194fc,Title page for ETD etd-07072014-094746
  20. Linux 网络协议栈开发—— 二层桥实现原理

热门文章

  1. android 360旋转动画,ANDROID——仿360手机卫士的旋转打分控件
  2. matlab 同一坐标系 散点图 t,matlab上机练习
  3. 不混淆so文件_浅尝ollvm轻度混淆后的加密算法分析
  4. Django获取request header信息
  5. c语言延时函数delay延时一秒_IMX6UL裸机实现C语言LED实验
  6. centos7 关闭防火墙的指令_CentOS7 怎么安装配置chrony时间同步服务?
  7. ssh连接远程主机执行脚本的环境变量问题
  8. 计组之数据运算:2、奇偶校验码、海明校验码 循环冗余校验码
  9. (王道408考研数据结构)第二章线性表-第三节5:顺序表和链表的比较
  10. Linux系统编程26:进程间通信之进程间通信的基本概念