Bash漏洞分析报告
报告Pdf版下载
概述:
2014年9月24日GNU Bash软件被爆出存在一个远程代码执行漏洞(CVE-2014-6271),该漏洞是法国 GNU/LINUX研究者 Stéphane Chazelas在9月中旬发现的,9月24日漏洞信息被公布出来,随后被美国安全部门定义为危害等级10(最高级别)的漏洞。Bash是一个为Gnu计划编写的系统shell,用于解析终端的输入的指令,它是目前linux系统及类unix系统中使用最为广泛的系统shell。目前评测该漏洞的危害可能要远超今年4月份公布的openssl心脏滴血漏洞(CVE-2014-0160,危害等级定义为5)。
漏洞编号:
影响范围:
影响的软件版本
Gnu Bash 1.14-4.3版本
影响的操作系统版本
Red Hat Enterprise Linux(版本4-7)
Fedora(版本19-21)
CentOS(版本5-7)
Ubuntu(版本10.04 LTS,12.04 LTS和 14.04 LTS)
Debian
Amazon Linux
Mac OS X 10.10
详细信息
漏洞详情:
Gnu Bash 4.3(包含4.3)之前的版本中存在一个漏洞,允许执行任意代码。漏洞产生的原因是Bash解析过程中允许命令行通过env函数的x参数来定义新的环境变量函数,并在程序里执行这些函数,由于Bash在实现过程中没有有效检查x参数的内容和边界,导致攻击者可以在自定义的变量后添加系统命令来执行。例如我们在系统中输入:
env x='() { :;};’ bash -c “echo test”
Bash执行这条命令时会先扫描x参数的内容,发现存在() {};就认定x参数定义了新的变量,此时Bash会调用系统中的parse_and_execute函数来初始化这个变量(实际上就是执行这个变量),我们看到这条指令里x被定义为空,因此Bash在初始化x函数之后接着执行后面的echo this is a test的命令,在终端中输出回显“this is a test”。
我们测试输入另一条命令:
env x='() { :;}; echo CVE-2014-6271′ bash -c “echo test”
得到的结果将是:
CVE-2014-6271
This is a test
我们看到,系统在初始化x变量时,没有有效的检查x参数的输入,将变量里的echo CVE-2014-6271命令也执行了。
验证方法:
在系统中输入如下命令:
env x='() { :;}; echo vulnerable’ bash -c “echo this is a test”
如果运行结果显示如下,则表示Bash存在漏洞:
Vulnerable
this is a test
以下网站提供了在线检测CGI程序是否受漏洞影响的服务:
http://shellshock.brandonpotter.com/
风险评估:
这个漏洞在本地可以直接通过命令行利用,如果远程服务调用的系统Bash且允许参数输入,则可能导致远程代码执行。目前已确认的可利用的远程服务包括:
- 启用了ForceCommand的OpenSSH sshd
- 使用Bash编写的CGI脚本且使用mod_cgi或mod_cgid的Apache服务器;
- DHCP客户端调用shell脚本来配置系统的时候;
- 各种允许用户输入参数且调用系统bash来执行的远程应用。
教育网中已经检测到大量针对该漏洞的扫描,数据显示这类扫描通过搜索引擎搜索包含cgi的web目录和网页,并试图利用漏洞获取反射的shell。
根据上交大校内的扫描结果显示,存在漏洞的主机包括某些品牌NAS的控制器,某款SSL VPN设备。这类设备通常都是厂商利用linux内核自主开发的操作系统,一般不支持在线直接升级,可能需要厂商重刷操作系统才能解决问题。这类使用linux内核的控制器或者网络设备可能是未来一段时间此漏洞的主要攻击目标。
安全建议
补丁更新:
目前各厂商已经针对该漏洞发布了相应的补丁程序,用户可以根据自己的系统类型来选择更新方法:
- Redhat、CentOS、Fedora系统可以使用系统yum进行升级,命令如下:
Yum -y update bash
注意:升级完成后需要重启
- Debian、unbuntu系统可以使用如下命令升级
sudo apt-get update && sudo apt-get install –only-upgrade bash
- Mac os系统请使用自带的软件更新功能升级
- 其他系统请下载最新bash安装:
http://www.gnu.org/software/bash
临时解决办法:
对于那些暂时没有更新补丁且受漏洞影响的设备,我们建议使用防火墙限制外部对该设备CGI程序的访问。
参考信息:
- Redhat官方信息
- 加拿大安全研究人员Scott Walsh公布的漏洞远程测试方法:
https://www.invisiblethreat.ca/2014/09/cve-2014-6271
- 安天实验室针对CVE-2014-6271的分析:
http://www.antiy.com/response/CVE-2014-6271.html
- 知道创宇公司对CVE-2014-6271的分析: