导师带学生卡Bug,这波操作~

本文来自知乎

https://www.zhihu.com/question/455891395/answer/1847953969

事情的起因是明尼苏达大学计算机科学&工程系的助理教授 Kangjie Lu 和他的 Ph. D. 学生 Qiushi Wu 的论文《通过伪君子提交在开源软件中隐蔽地引入漏洞的可行性》,据称将在 2021 年五月的 42 届 IEEE 安全隐私研讨会发表)这篇文章(可以在 Wu 的 github 上找到)。

摘要如下:

他们试图研究这种伪善提交导致的安全问题,并且选择 Linux 内核项目作为目标,开发了一系列用于产生这种测试补丁和验证的工具。

Linux 内核的维护者发现来自明尼苏达的一些提交是毫无意义甚至显著错误的代码(来自 Aditya Pakki,明尼苏达大学计算机科学&工程系的博士,导师正是 Kangjie Lu),这招致了维护者们的愤怒(by Al Viro,内核维护者)

简单地说,这个补丁要么意味着这个人(对内核)完全不了解要么他的行动不真诚,如果是后者,我可以建议***(粗口)的社会学家们***(粗口,滚开),不要再用***(粗口,意思是垃圾)来测试(代码)评审吗?

以及警告(Greg K H,内核维护者):

请停止提交已知无效的补丁。你的教授正试图玩弄(代码)评审程序以用古怪的方式完成论文。
这是不对的,浪费了我们的时间,我们将不得不再次向你们的大学报告此事……

但是 Aditya Pakki 回应称:

诚挚的,我要求你停止进行近乎诽谤的疯狂指责。
这些补丁是作为我写的一个新的静态分析器的一部分发送的,他们显然不是非常敏感。我发送补丁的目的是希望得到反馈。我们不是Linux内核方面的专家,反复发表这些言论让人听了很反感。
显然,这个步骤是错误的,但你的先入为主的偏见是如此强烈,以至于你提出的指控毫无根据,也不给我们辩解(无罪推定)的任何机会。
这种态度不仅不受欢迎,而且对新手和非专家也是一种恐吓,因此我将不会再发送任何补丁。

最终, Greg K-H 最终决定禁止明尼苏达大学向内核贡献任何代码,并且取消之前的全部贡献。

涉及的提交:

我截图其中一个提交:

这个bug卡的有点意思,其中有一个判断,是从读取函数里面获取返回值的,新的代码修改是不判断函数的返回值,这看起来其实并没有多大的问题,如果能够正确读取到val值,并且val是0x01的话,才会返回返回正确。其他情况下就会返回ret,但是实际上read函数里面有很多种情况,这里都只能返回 -EINVAL 了。

这个提交看起来不会引发非常严重的错误。

但是我们再看看另一个提交:

这个修改就有点意思了,释放了内存空间,对应的指针本来是要执行NULL的,这家伙把这行代码给注释掉了。

然后,

在另一个判断的位置,直接去掉这个判断。这样做比较危险的情况是,如果有一个地方使用rm和NULL判断作为它是否被初始化,就会出现致命的问题了。

在这个提交上,也明显的标志了revert这个提交的原因

我看了我们量产项目中的代码,没有完全比对,发现我上面看了这两个提交都已经合入了MTK主分支中。至于真的会不会卡到bug,那也是要出现问题了才知道了。

参考:

1. 报告这件事的新闻:Here's Why University of Minnesota is Getting Banned from Contributing to Linux Kernel Code - It's FOSS News

2. Gerg 决定撤销来自 umn.edu 的所有更改:

https://lore.kernel.org/lkml/20210421130105.1226686-1-gregkh@linuxfoundation.org/

3. Gerg 对这件事的回应(以及讨论串) Re: [PATCH] SUNRPC: Add a check for gss_release_msg

4. 文章的地址 github.com/QiushiWu/Qiu

5. 作者 Wu 的博客 Qiushi Wu

6. Wu github 中的 issues,大部分针对这个问题,特别“不诚信的研究”:github.com/QiushiWu/qiu

7. 作者 Lu 的主页 www-users.cs.umn.edu/~kjlu/papers/clarifications-hc.pdf

8. Lu 关于这件事的澄清:www-users.cs.umn.edu/~kjlu/papers/clarifications-hc.pdf


推荐阅读:

专辑|Linux文章汇总

专辑|程序人生

专辑|C语言

我的知识小密圈

关注公众号,后台回复「1024」获取学习资料网盘链接。

欢迎点赞,关注,转发,在看,您的每一次鼓励,我都将铭记于心~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/466056.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我想做个MP3,要怎么入手?

从我更新的频率,大家应该猜出来了,最近有点忙。忙完了设备调试的工作,又来了个画图的活。本来改动不大,但怎料...哎,一言难尽。今天回答一个粉丝的提问:看完这个回复,我依然没明白他到底想做哪部…

[内核同步]自旋锁spin_lock、spin_lock_irq 和 spin_lock_irqsave 分析

关于进程上下文,中断上下文,请看这篇文章Linux进程上下文和中断上下文内核空间和用户空间自旋锁的初衷:在短期间内进行轻量级的锁定。一个被争用的自旋锁使得请求它的线程在等待锁重新可用的期间进行自旋(特别浪费处理器时间),所以…

网络流24题 洛谷 3355 骑士共存

转换成最小割&#xff1b; #include <bits/stdc.h>using namespace std ;const int mx [ 9 ] { 2 , 2 , -2 , -2 , -1 , 1 , -1 , 1 } ; const int my [ 9 ] { -1 , 1 , -1 , 1 , 2 , 2 , -2 , -2 } ; const int N 100000 10 , inf 1e8 7 ;queue < int …

从零开始设计CPU

CPU&#xff0c;中文全称为中央处理单元&#xff0c;简称处理器&#xff0c;是现代电子计算机的核心器件。如果你想了解一台计算机是如何构建并工作的&#xff0c;那么深入了解CPU的设计非常有用。不过&#xff0c;这个美好的愿望是否会遭遇“骨感”的现实呢&#xff1f;毕竟一…

嵌入式OS入门笔记-以RTX为案例:一.简介

嵌入式OS入门笔记-以RTX为案例&#xff1a;一.简介 最近在做OS相关的项目&#xff0c;一方面涉及到大量&#xff08;通用&#xff09;操作系统的概念和理解&#xff0c;另一方面要深入到一个小实时操作系统的源代码中&#xff0c;并在此操作系统上开发应用。虽然说内容上并不难…

Linux进程O(1)调度算法,面试必考哦

进程调度有很多方法&#xff0c;这里只讨论Linux下的进程调度&#xff0c;先说下&#xff0c;这个是高端面试必考题&#xff0c;既然我发文了&#xff0c;大家最好看看&#xff0c;而且目前看到的写得最好的文章&#xff0c;推荐给大家。Linux是一个支持多任务的操作系统&#…

让Visual Studio 也支持JS代码折叠 —— 续 [ Visual Studio | Js | ScriptOutline | SmallOutline ]...

前言 上文让JS代码折叠的功能能用了&#xff0c;本文将对代码继续改进以期更好用、更实用&#xff0c;随后有介绍Visual Studio JS方面的几个插件。 文章 1. VS2003折叠代码的Micro 2. MSDN 3. Document Outline for Client Script in Visual Studio 2005 正文 …

嵌入式OS入门笔记-以RTX为案例:二.快速移植到RTX

嵌入式OS入门笔记-以RTX为案例&#xff1a;二.快速移植到RTX本篇笔记将简单介绍RTX&#xff0c;包括基本架构&#xff0c;如何在Keil中配置。需要安装ARM-MDK和一块硬件板&#xff0c;笔记以STM32F4Discovery为例子。1.为什么要用RTOS&#xff1f;尽管把所有程序放在一个大的循…

再解析下内核自旋锁和优先级翻转问题

[内核同步]自旋锁spin_lock、spin_lock_irq 和 spin_lock_irqsave 分析漫画|Linux 并发、竞态、互斥锁、自旋锁、信号量都是什么鬼&#xff1f;Linux内核自旋锁之前写的自旋锁的文章&#xff0c;现在再加一篇&#xff0c;可能单纯的一两次说明不能把问题说清楚。所以再写一篇文…

ios 逆向编程(环境搭建)

首先如果你想要逆向其他的APP 动态的查看 或者修改人家APP里面的东西 1&#xff0c; 首先要有一台越狱的手机 最好是9.1以下的&#xff0c;因为9.2以上&#xff08;包括9.2&#xff09;就不能完美越狱了 2&#xff0c;手机也要5s以上的&#xff08;因为从5S开始支持arm64架构&…

最大、最小堆的实现

最大最小堆 堆是一种经过排序的完全二叉树&#xff0c;其中任一非终端节点的数据值均不大于&#xff08;或不小于&#xff09;其左子节点和右子节点的值。 最大堆和最小堆是二叉堆的两种形式。 最大堆&#xff1a;根结点的键值是所有堆结点键值中最大者。 最小堆&#xff1a;根…

嵌入式OS入门笔记-以RTX为案例:四.简单的时间管理

嵌入式OS入门笔记-以RTX为案例&#xff1a;四.简单的时间管理 上一节简单记录了进程task。有了进程以后&#xff0c;我们需要关心怎么样分配CPU资源&#xff08;或者运行时间&#xff09;给每个进程。那么就要引入排程&#xff08;scheduling&#xff09;的概念。排程一般都是O…

我等这个含蓄的技术男当上了CEO

大家好&#xff0c;祝大家五一节日快乐&#xff01;今天没有写技术文章&#xff0c;今天想吹一个人&#xff0c;他是我的朋友&#xff0c;他做公众号很久了&#xff0c;技术文章写的也不错&#xff0c;但是阅读和关注量一直没有上来&#xff0c;我之前好几次在公众号上转发了他…

广东总冠军

lets go tiger 看这篇文章之前&#xff0c;先看看我们看球的视频 恭喜广东拿下总冠军&#xff01; 恭喜胡明轩夺得FMVP&#xff01; 我当时预测的是周鹏或者胡明轩拿下FMVP&#xff0c;最后是胡明轩&#xff0c;广东后场三条枪表现都非常亮眼。如果是上一场广东夺冠&#xff0c…

每日一题(1) —— 数组计算

判断下面代码是否可执行&#xff1f;如果可执行&#xff0c;执行结果是多少&#xff1f; #include <stdio.h>int main(void) {int array[10] {0, 2, 3, 4, 5, 6, 7, 8, 9, 10};0[array] 1;printf("%d\n", (-1)[array 5]);return 0; } 分析&#xff1a; C语…

内存文章汇总,并剖析mmap

在看这篇文章之前&#xff0c;可以先看看下面这几篇文章Linux内存&#xff0c;先看这篇文章Linux内存寻址方式Linux虚拟内存TLBLinux物理内存初始化Linux io内存存在的意义~修改cmdline 把内存改成512MB用mtrace定位内存泄漏什么是内存泄漏&#xff1f;Linux内存管理slub分配器…

[综述泛读] A survey on web services composition (IJWGS, 2005)

Time: 2.5 hours Dustdar S, Schreiner W. "A survey on web services composition." International Journal of Web and Grid Services: 1-30. 2005 (30 pages, 单栏) (gs:169) Schahram Dustdar (维也纳技术大学, full prof) Dusdar是Distributed Systems Group的老…

韦老师的开发板和嵌入式书籍赠送

大家五一快乐&#xff01;我知道这个时候大家都没有什么心思学习&#xff0c;所以找了联合了几个朋友一起给大家送点东西。这几个技术号主都非常用心的给大家分享技术文章&#xff0c;我相信&#xff0c;跟他们一起&#xff0c;你们也能变得更加优秀。奖品包括&#xff1a;1. 韦…

每日一题(2)—— -2与2的比较

分析下面的代码&#xff0c;求运行结果。 #include <stdio.h>int main(void) {if(-2 > 2){printf("11111\r\n");}else{printf("22222\r\n");}return 0; }分析&#xff1a; -2和2都没有声明存储类型&#xff0c;编译器默认按int存储&#xff0c;所…

truffle unbox react 出坑指南

最近几天差点就被这鬼东西给逼疯了&#xff0c;truffle init 、truffle unbox webpack 不管我怎么运行都是对的&#xff0c;唯独truffle unbox react 不管在哪个windows都会报错&#xff0c;换了好几台电脑&#xff0c;心都累完了&#xff0c;还好我坚持了下来&#xff0c;找了…