比“心脏流血”还危险?详解Bash漏洞安全事件!

很多人或许对上半年发生的安全问题“心脏流血”(Heartbleed Bug)事件记忆颇深,然而仅时隔几个月,又出现了另外一个“毁灭级”的漏洞——Bash软件安全漏洞。

谁是Bash漏洞的发现者?

据 iThome网站报道,Bash漏洞是由法国GNU/Linux爱好者Stéphane Chazelas所发现。

随后,美国电脑紧急应变中心(US-CERT)、红帽以及多家从事安全的公司于周三(北京时间9月24日)发出警告。

为什么说Bash安全漏洞是毁灭级的?

业内人士都知道,Bash是Unix Shell的一种。虽然当初的Bash编写是为了GNU计划而编写,打算用在GNU操作系统上,但它能运行于大多数类Unix操作系统上,这包括Linux与Mac OS系统。

百度百科的介绍显示,Bash(GNU Bourne-Again Shell)是大多数Linux系统以及Mac OS X v10.4默认的shell,它能运行于大多数Unix风格的操作系统之上,甚至被移植到了Microsoft Windows上的Cygwin系统中,以实现Windows的POSIX虚拟接口。此外,它也被DJGPP项目移植到了MS-DOS上。

而Bash的命令语法是Bourne shell命令语法的超集。数量庞大的Bourne shell脚本大多不经修改即可以在Bash中执行,只有那些引用了Bourne特殊变量或使用了Bourne的内置命令的脚本才需要修改。可以说,Bash是类Unix系统的核心,如果Bash出现了漏洞,则说明攻击者可以控制机器一切。

Bash漏洞现在带来的影响?

据悉,这个Bash漏洞为远程解析命令执行漏洞(CVE-2014-6271),可以直接在Bash支持的Web CGI环境下远程执行任何命令。这也就使得一些路由器、堡垒机、VPN等网络设备将会成为重灾区,另外各大Linux发行版和Mac OS X系统都受影响,甚至Android也会受到影响。

据乌云漏洞报告平台称,这个漏洞对一般的网站影响并不大,但对那些受到影响的网站却是很“凶残”,因为之前声称所能使用的补丁,黑客可以轻松绕过。

乌云知识库称,目前Shellshock蠕虫已经开始传播。从漏洞披露到蠕虫病毒出现,也就一天时间,时间间隔非常短,说明这或许真的是一场互联网安全领域的“灾难”。

值得一提的是,目前负责维护Bash Shell的Chet Ramey已经修补该漏洞,更新Bash 3.0至Bash 4.3的版本,可以运行:yum update -y bash进行升级处理。不过新版本Bash是否完全解决了安全问题,目前仍不得而知。

是添油加醋还是真的很严重?

网络安全公司Rapid7工程部经理Tod Beardsley称,Bash漏洞危险几倍很高,但利用复杂度为“低”,只要剪切和粘贴一行代码即可,意味着黑客可以很轻松地利用发起攻击,这从一定程度上又加剧了互联网安全灾难。另外,网络安全公司Trail of Bits的CEO Dan Guido指出,不同于“heartbleed”漏洞,Bash漏洞能取得用户电脑控制权。

据一位叫djvu9的微博用户称,目前已经可以通过DHCP server来远程执行代码了,说不定拿个安卓手机去各种敏感场所,然后做个热点再把SSID改成什么CMCC Free WiFi就行了。

然而一位叫meng_bo的微博用户对这个漏洞有点不以为然,他在微博中称:“整的跟多大事情似的,实际没有多少应用涉及这个事情,谁没事做拿Bash写CGI呢? 也就Git这类应用受影响吧。”而有用户则指出,Redhat博客已经说明,Git/SVN都有中招的可能。

知乎一名叫 “Rix Tox”的用户称,不过就目前得到的信息来看,该漏洞虽然可以造成很严重的破坏,但不见得影响范围就比Heartbleed要大。该漏洞主要影响的是CGI程序,通过注入HTTP字段让Bash在初始化环境变量的时候执行任意Bash命令。具体来说,感觉跟SQL注入有点类似,不过这个更加严重一点,因为直接有执行系统命令的权限。

但据业内人士称,暂时无法估计这个安全漏洞影响究竟多大,就像当时无法预估究竟有多少人在使用内含Heartbleed漏洞的OpenSSL一样。是的,有大量软件以某种方式与Shell交互,所以根本没有办法列出受该漏洞影响的所有软件。 另外,由于该漏洞已经在Linux中存在很长时间,所以修补某个Linux很容易,但是要全部修补,不太容易实现。

不管怎么说,只要出现漏洞,都应得到重视。目前,国内安全实验室安天对漏洞带来的影响进行了总结:

此漏洞可以绕过ForceCommand在sshd中的配置,从而执行任意命令。

如果CGI脚本用Bash或subshell编写,则使用mod_cgi或mod_cgid的Apache服务器会受到影响。

DHCP客户端调用shell脚本来配置系统,可能存在允许任意命令执行,尤其作为根命令的形式,在DHCP客户端的机器上运行。

各种daemon和SUID/privileged的程序都可能执行shell脚本,通过用户设置或影响环境变数值,允许任意命令运行。

业内人士称,严格意义上漏洞不应归咎于Bash

知乎用户Rix Tox在接受CSDN采访时称,这个漏洞只对服务器造成影响,个人电脑没有开启网络服务的话其实是没有什么威胁可言的。

严格来说这个漏洞不应该归咎于Bash,而应该归咎于CGI的服务端程序。环境变量在初始化之前应该先考虑注入的可能性,Bash给了你灵活性,你的程序没有考虑全面这不应该怪Bash。就好比SQL注入的问题难道要怪SQL吗?

其实CGI之类的程序很容易有类似的漏洞,最好在架设这些服务的时候考虑到用户权限的问题,隔离系统权限,把风险降到最低。

结束语

在曝光Bash漏洞后,有人开玩笑称,Windows系统终于胜出了一局。其实,不论是Linux、Unix,还是Windows,计算机的安全永远都是相对的。就拿Bash漏洞来说,或许这个漏洞早已在地下传播很久,最近才曝出来,只是因为有良心的人愿意披露出来而已……所以永远都没有绝对安全的系统,安全也只是暂时没有曝光或没发现漏洞而已。

不过好在这个漏洞终于曝光,得到了所有人关注,相信曝光的越彻底,修复也将会越彻底。

附录:Bash漏洞的攻击原理和检测方法等

Bash漏洞的攻击原理?

据 Linuxidc网站介绍,GNU Bash 4.3及之前版本在评估某些构造的环境变量时存在安全漏洞,向环境变量值内的函数定义后添加多余的字符串会触发此漏洞,攻击者可利用此漏洞改变或绕过环境限制,以执行shell命令。某些服务和应用允许未经身份验证的远程攻击者提供环境变量以利用此漏洞。此漏洞源于在调用Bash shell之前可以用构造的值创建环境变量。这些变量可以包含代码,在shell被调用后会被立即执行。

这是属于远程任意代码执行的安全漏洞,所以可以完全控制电脑。

漏洞存在条件:

据金山毒霸论坛的一名工作人员称,任何已知程序,只要满足以下两个条件就可以被用来通过Bash漏洞导致任意命令执行:

1.程序在某一时刻使用Bash作为脚本解释器处理环境变量赋值;

2.环境变量赋值字符串的提交取决于用户输入。

如何验证漏洞

那如何验证是否存在漏洞?可以使用如下命令来检查系统是否存在此漏洞:

env x='() { :;}; echo vulnerable' bash -c "echo this is a test"

影响范围:

GNU Bash≤4.3,此漏洞可能会影响到使用ForceCommand功能的OpenSSH sshd、使用mod_cgi或mod_cgid的Apache服务器、DHCP客户端、其他使用Bash作为解释器的应用等。

而另一个网站介绍的更详细——这个漏洞能影响众多的运行在GNU/Linux上的会跟BASH交互的应用程序,包括:

在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脚本不 导出的情况下不会受影响。

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180131A035PT00?refer=cp_1026

同媒体快讯

相关快讯

扫码关注云+社区