2014年9月24日,编号为CVE-2014-6271的Bash任意命令执行漏洞(俗称“破壳漏洞”ShellShock)被公开,瞬间引爆安全圈,严重等级直接被定为10级(最高)。相比之下,同年4月爆发的OpenSSL“心脏出血”漏洞仅为5级,差距一目了然。GNU Bash Shell是Linux和Unix家族中最核心的命令行解析器,几乎无处不在,这意味着受影响的设备范围极为广泛:任何基于Linux/Unix的系统都可能中招。具体来看,该漏洞的触发面包括但不限于:
sshd配置中的ForceCommand可被绕过,从而执行任意命令;
若CGI脚本使用Bash或subshell编写,采用mod_cgi或mod_cgid的Apache服务器将直接暴露于风险中;
DHCP客户端在配置系统时会调用shell脚本,攻击者可能通过精心构造的DHCP响应,以root权限在客户端设备上执行任意命令;
各类daemon以及SUID/privileged程序若执行shell脚本,也可能因用户设置或环境变量值被篡改,而被利用来运行任意命令。
问题不仅在于危害巨大——更棘手的是探测手段复杂,不同组件的测试方式差异极大,几乎无法精准评估影响面。唯一可以确定的是:Bash版本≤4.3全部沦陷。而Bash在至少百亿级别的设备上运行,毕竟它是最流行的Linux Shell。安全形势的严峻程度可想而知。安全团队第一时间通过多种方式组合检测,得出了几个关键结论:
第一,某知名交付管理系统在全国范围内有13254台设备受破壳漏洞影响,可被直接远程攻击;
第二,全球大约有142000台主机受影响——需要说明的是,由于Fuzzing规则尚不完备,这个数字肯定偏低,但已足以说明可被直接远程攻击的规模之大;
第三,对主机的80端口进行直接请求,发现至少150万个网站、网关、邮件系统、安全设备受到影响。
研究人员连夜奋战,截至2014年9月26日中午,已拦截1759次针对破壳漏洞的攻击。

从图中可见,安全团队在漏洞爆发之前就已经添加了防护规则。25日的拦截情况如下:
总拦截数:1,759次
受攻击站点数:214个
攻击成功站点数:0个
发起攻击IP数:6个
经过连夜分析,还发现破壳漏洞的蠕虫(代码:https://gist.github.com/anonymous/929d622f3b36b00c0be1)已经开始在全球蔓延,攻击者大概率是利用masscan进行大规模植入。更令人担忧的是,DHCP服务也受影响——这意味着破壳漏洞绝不只是Linux服务器的问题,路由器、嵌入式设备、物联网终端都可能成为攻击跳板。
至于修复方案,目前尚无最可靠的通用补丁。站长们需要密切关注Bash的下一次升级,在此之前,限制环境变量传递、禁用CGI脚本中的Bash调用是最直接的应急手段。
