概要介绍
BashBourne againshell)是Linux用户广泛使用的一款用于控制命令提示符工具。2014年9月24日,Bash惊爆严重安全漏洞,这个漏洞的中文名被称为破壳漏洞,英文是ShellShock,编号为 CVE-2014-6271 ,该漏洞将导致远程攻击者在受影响的系统上执行任意代码。
GNU Bash 4.3及之前版本在评估某些构造的环境变量时存在安全漏洞,向环境变量值内的函数定义后添加多余的字符串会触发此漏洞,攻击者可利用此漏洞改变或绕过环境限制,以执行Shell命令。某些服务和应用允许未经身份验证的远程攻击者提供环境变量以利用此漏洞。此漏洞源于在调用Bash Shell之前可以用构造的值创建环境变量。这些变量可以包含代码,在Shell被调用后会被立即执行。
破壳漏洞的严重性被定义为10级(最高),今年4月爆发的OpenSSL“心脏出血”漏洞才5级!
影响范围
破壳漏洞存在有20年,漏洞影响范围:GNU Bash <= 4.3。
注:以下几点参考自https://raw.githubusercontent.com/citypw/DNFWAH/master/4/d4_0x07_DNFWAH_shellshock_bash_story_cve-2014-6271.txt,且结论经过我们验证有效。
·         在SSHD配置中使用了ForceCommand用以限制远程用户执行命令,这个漏洞可以绕过限制去执行任何命令。一些Git和Subversion部署环境的限制Shell也会出现类似情况,OpenSSH通常用法没有问题。
·         Apache服务器使用mod_cgi或者mod_cgid,如果CGI脚本在BASH或者运行在子Shell里都会受影响。子Shell中使用C的system/popen,Python中使用os.system/os.popen,PHP中使用system/exec(CGI模式)和Perl中使用open/system的情况都会受此漏洞影响。
·         PHP脚本执行在mod_php不会受影响。
·         DHCP客户端调用Shell脚本接收远程恶意服务器的环境变量参数值的情况会被此漏洞利用。
·         守护进程和SUID程序在环境变量设置的环境下执行Shell脚本也可能受到影响。
·         任何其他程序执行Shell脚本时用Bash作为解释器都可能受影响。Shell脚本不导出的情况下不会受影响。
 
 东软应急指南
1.       东软FW 5120/5200/5800系列采用自主研发的NetEyeOS系统,使用GNUBash <= 4.3的版本,没有涉及到触发漏洞的环境变量场景,因此不受影响。但为了增强系统安全性,请使用该系列产品的客户联系东软售后服务热线400-655-6789进行咨询,协助用户更新最新补丁。
2.       东软NISG 5000/6000/7000系列采用自主研发的NetEyeOS系统,使用GNUBash <= 4.3的版本,没有涉及到触发漏洞的环境变量场景,因此不受影响。但为了增强系统安全性,请使用该系列产品的客户联系东软售后服务热线400-655-6789进行咨询,协助用户更新最新补丁。
3.       东软NISG-IPS 5000/6000/7000系列采用自主研发的NetEyeOS系统,使用GNUBash <= 4.3的版本,没有涉及到触发漏洞的环境变量场景,因此不受影响。但为了增强系统安全性,请使用该系列产品的客户联系东软售后服务热线400-655-6789进行咨询,协助用户更新最新补丁。
4.       对于用户部署东软的IPS和IDS产品,建议用户升级最新的特征库,可以帮助用户做入侵检测和防御;
5.       对于客户网络中部署的Linux设备建议寻求Linux厂商支持,相关支持参见随后的附录;
6.       对于已经检测到有Shellshock漏洞,但是无法完成补丁更新的设备,建议在存在漏洞的系统前部署最新升级该漏洞检测的IPS设备,并阻止该漏洞。
 
检测方式
 
漏洞验证,可以使用如下命令来检查系统是否存在此漏洞(在本机Bash环境下运行):
 
CVE-2014-6271 测试方式:
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
如执行结果如下表明有漏洞:
vulnerable
this is a test
 
注:CVE-2014-6271 的漏洞源码级分析请参考:
http://blog.knownsec.com/2014/09/bash_3-0-4-3-command-exec-analysis/
 
修补后,又被绕过,CVE-2014-7169 最新测试方法:
env -i X='() { (a)=>\' bash -c 'echo date'; cat echo
如执行结果如下则仍然存在漏洞:
bash: X: line 1: syntax error near unexpected token `='
bash: X: line 1: `'
bash: error importing function definition for `X'
Wed Sep 24 14:12:49 PDT 2014
注:CVE-2014-7169 的漏洞源码级分析请参考:
http://blog.knownsec.com/2014/09/bash_3-0-4-3-command-exec-patch-bypass-analysis/
可能还会有新的绕过方式,时刻保持关注!
 
Linux修复建议
现在可以按照下面方式进行Bash的升级修复:
操作系统
升级方式
Ubuntu/Debian
apt-get updateapt-get install bash
RedHat/CentOS/Fedora
yum update -y bash
Arch Linux
pacman -Syu
OS X
brew updatebrew install bashsudo sh -c 'echo "/usr/local/bin/bash" >> /etc/shells'chsh -s /usr/local/bin/bashsudo mv /bin/bash /bin/bash-backup
sudo ln -s /usr/local/bin/bash /bin/bash
MacPorts
sudo port self updatesudo port upgrade bash
建议升级后按上面的方法诊断是否补丁完全。
对于ShellShock的漏洞我们会持续跟踪,最新动态请关注东软网安的官方链接。

相关资源链接:
ShellShock官网:https://shellshocker.net/  ,东软NetEye官网:http://neteye.neusoft.com/