一、病毒通缉令
小白:燃烧吧!小宇宙!就算把我烧成骷髅!那我也是帅骷髅
大东:小白兴奋个啥劲儿呢。
小白:大东东,你看这张牌,它的内心独白一定是这样的!
大东:咱们小白学傻了吧。
小白:好吧,大东东快讲讲,这是啥。
大东:这是幽灵。它的名字是“CVE-2015-0235”,这个漏洞可以允许攻击者远程获取操作系统的最高控制权限,影响大部分的Linux操作系统。
小白:哦,这么厉害……
二、Linux漏洞
大东:小白啊,你上次安装Linux系统是什么时候来着?
小白:大概两周前?
大东:当时为什么要选择Linux系统?
小白:因为我觉得使用Linux操作系统很帅啊,操作只要用一条命令就可以解决,简直装逼神器。而且现在Windows总是今天一个病毒明天一个漏洞的,用着觉得很心慌,但我就没有听过Linux上有过什么病毒的~
大东:首先,我要说的是安全是相对的。其次,你知道为啥你觉得Linux上不会有漏洞么?
小白:为什么?
大东:那是因为你不知道它不安全的地方在哪儿啊。
小白:所以Linux其实……
大东:是的。想了解一下这个漏洞么?
小白:我热爱学习!所以大东东你说吧。
大东:行~首先需要说的是在Linux上的一个运行库——“glibc”。glibc是一个C语言运行库,是Linux系统中最底层的接口,几乎其它任何运行库都依赖于它。glibc除了封装Linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。
小白:噢~就是一个操作系统和用户之间的中间人。
大东:glibc囊括了几乎所有的UNIX通行的标准,可以想象其内容包罗万象,像一个支架一般撑起整个操作系统。可以算是Linux操作系统的基石。
小白:所以这个基石出问题了么?
大东:2015年年初,Qualys公司在进行内部代码审核时,发现了一个在glibc中某个函数导致的缓冲区溢出漏洞。
小白:缓冲区溢出漏洞,这个是啥?
大东:计算机程序一般都会使用到一些内存,这些内存或是程序内部使用,或是存放用户的输入数据,这样的内存一般称作缓冲区。溢出则是指盛放的东西超出容器容量而溢出来了,在计算机程序中,就是数据使用到了被分配内存空间之外的内存空间。
小白:噢…那缓冲区溢出就是存放用户输入数据的地方满了?
大东:缓冲区溢出,简单的说就是计算机对接收的输入数据没有进行有效的检测,向缓冲区内填充数据时超过了缓冲区本身的容量,而导致数据溢出到被分配空间之外的内存空间,溢出的数据覆盖了其他内存空间的数据。
小白:那缓冲区溢出的漏洞会造成什么危害呢?
大东:缓冲区溢出的漏洞的话,比较轻的那种就是会导致程序崩溃。假设你在玩一个游戏,你玩着玩着游戏突然蹦一个窗口,告诉你游戏停止工作了,然而你都没有保存,那怎么办?
小白:no!!那严重的会怎么样?
大东:缓冲区溢出中,最为危险的是堆栈溢出,因为入侵者可以利用堆栈溢出,在函数返回时改变返回程序的地址,让其跳转到任意地址。带来的危害一种是程序崩溃导致拒绝服务,另一种就是跳转并且执行一段恶意代码,比如得到系统权限!我们这次说的存在于glibc库中的缓冲区溢出漏洞就是属于后者的,通过操作库中的函数,将可能产生一个堆上的缓冲区溢出,本地和远程均可行。
小白:那岂不是很危险?
大东:Qualys公司的工作人员后来开发了一套完整的针对Exim邮件服务器的攻击PoC(观点验证程序),测试中发现可以绕过所有现有保护,且通杀32位和64位的机器。
小白:看来Linux也不好混啊……
三、幽灵现身
小白:那出了这个问题以后,官方有啥动作吗?
大东:第一个受攻击版本是glibc-2.2,发布于2000年11月10日,也是相当有年头了,这个漏洞其实在2013年5月21日就已经被修复了,也就是在glibc-2.17和glibc-2.18的发行版之间。不幸的是,当时它并没有被认为是一个安全威胁,导致了现在的大多数稳定版和长期支持版本依然暴露在漏洞影响下。
小白:所以这个库的维护人员对他们这个漏洞是不是高危的心里没有一点数咯?
大东:但是也不用担心,因为Qualys已经在网上公开了POC代码,可以检测是否存在漏洞。
小白:这个,咋用呀?
大东:先用root登录系统,下载ghost.c代码,然后在终端执行#gcc ghost.c –o ghost命令编译文件,再使用#./ghost命令执行测试。如果结果中显示vulnerable,表示存在漏洞,显示not vulnerable,表示不存在漏洞,无需进行补丁修复。
小白:哇,这个Qualys还是挺负责的嘛~
大东:还有一种方法是查看系统中的glibc库的版本,版本在Glibc 2.2 ~ Glibc 2.18范围内存在漏洞,对于centOS执行#rpm -qa|grep glibc而对于Ubuntu就执行#dpkg -l|grep libc6就好了。
小白:我对于Linux这种可以使用终端执行命令的操作系统还是很膜拜的~~
大东:所以知道了系统中是否存在漏洞了以后,我们就可以针对性地修复漏洞啦,对于Centos/RHEL/5,6的升级方法就是终端执行#yum updateglibc。
小白:一条命令就能修复,简直太友好~~
大东:而对于ubuntu10.04、12.04还有Debian等系统,在终端中执行#sudo apt-get update或者#sudo apt-getdist-upgrade就可以修复啦。
小白:这样就完了,真是棒。
大东:别忘了后期检查的工作,升级完后,建议重启服务器,然后执行#./ghost测试漏洞是否还存在。
小白:得嘞~现在看来Linux系统也不安全。
大东:安全都是相对的,没有绝对的安全。
四、话说漫威
大东:你看,这幽灵像不像章鱼博士。
小白:哪个章鱼?
大东:漫威世界反派之一,他是个科学家,能力是可以操作后背上的四只强而有力的电子机械手臂。
小白:看起来像是个科学怪人……
大东:章鱼博士专注于基因变异研究,蜘蛛侠、绿魔、蜥蜴博士等都是来自他制作的基因药剂,还组建了罪恶六人组向蜘蛛侠复仇。
小白:嗯…他研发的成果促成了其他英雄的诞生,这点倒是有点儿像是glibc那个漏洞嘛。
大东:没想到小白也能get到我的点。
小白:我怎么一点都不想get呢……