更新后如何确保我的Bash安装不再受到ShellShock错误的攻击?

评论

请参阅是否有一个简短的命令来测试我的服务器是否针对shellshock bash错误是安全的?

请注意,bash中还有两个其他漏洞尚未修补(CVE-2014-7186和CVE-2014-7187)。

在Deer Hunter发表评论后不久,即可修复CVE-2014-7186和CVE-2014-7187的修补程序。如果您具有CVE-2014-7169发行版提供的补丁,则您可能已经足够阻止7186/7187,请使用以下命令测试您的系统,然后查看。还要检查发行版的更多安全更新。

#1 楼

要检查CVE-2014-6271漏洞

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


它不应回显易受攻击性一词。



/>要检查CVE-2014-7169漏洞
(警告:如果失败,它将创建或覆盖一个名为/tmp/echo的文件,您可以在以后删除该文件,然后在再次测试之前将其删除)。

cd /tmp; env X='() { (a)=>\' bash -c "echo date"; cat echo


它应该说出日期一词,然后用cat: echo: No such file or directory之类的消息来抱怨。如果相反,它告诉您当前日期时间是什么,那么您的系统就很容易受到攻击。



检查CVE-2014-7186

bash -c 'true <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF' || echo "CVE-2014-7186 vulnerable, redir_stack"


它不应回显文本CVE-2014-7186 vulnerable, redir_stack



要检查CVE-2014-7187

(for x in {1..200} ; do echo "for x$x in ; do :"; done; for x in {1..200} ; do echo done ; done) | bash || echo "CVE-2014-7187 vulnerable, word_lineno"


不应回显文本CVE-2014-7187 vulnerable, word_lineno



检查CVE-2014-6277。我对此问题不是100%肯定,因为它似乎依赖于我无法再访问的部分打补丁的系统。

env HTTP_COOKIE="() { x() { _; }; x() { _; } <<`perl -e '{print "A"x1000}'`; }" bash -c "echo testing CVE-2014-6277"


在此通过结果一个是仅回显文本testing CVE-2014-6277。如果它运行perl或抱怨没有安装perl,那肯定是失败的。我不确定其他故障特征,因为我不再有未打补丁的系统。



检查CVE-2014-6278。再次,我不确定该测试是否100%正确,因为我不再有未打补丁的系统。

env HTTP_COOKIE='() { _; } >_[$($())] { echo hi mom; id; }' bash -c "echo testing CVE-2014-6278"


该测试的一个通过之处在于它仅应回显返回文本testing CVE-2014-6278。如果您在任何地方都回显hi mom,那肯定是失败的。

评论


我们可以添加常规测试foo ='(){echo not patch; }'bash -c foo可以吗?在将函数导出放置在单独的命名空间中之前,我们不会停止从一个解析器错误运行到下一个解析器错误。

–billyw
2014-09-29 15:19

该测试有CVE吗?您是否有任何参考文献来描述此问题?同样,由于此Q与如何测试现有补丁的成功或失败有关,因此此类信息可能属于有关shellshock的其他问题之一。

– BeowulfNode42
2014年9月29日在23:13

这是来自Michal Zalewski在即将发布的Shellshock CVE上的博客文章(lcamt​​uf.blogspot.com/2014/09/…)。这是他针对CVE-2014-6278的建议测试,该测试仍未公开。但是,我似乎对测试的一般性是错误的。我已经遇到过Zalewski的测试通过但CVE-2014-7187测试失败的情况。

–billyw
2014-09-30 15:51



以下是CVE-2014-6277和CVE-2014-6278的完整披露,以及检查它们的命令:seclists.org/fulldisclosure/2014/Oct/9

–billyw
2014年10月2日15:31

需要注意的一点是:即使BASH版本易受攻击,如果没有使用它(例如,守护程序使用的所有帐户,例如“ www”或“ cups”等),都将BASH配置为其默认外壳,并且没有您的代码调用了system()之类的东西,拥有漏洞版本的风险可能较小,但仍然请尽快升级BASH。

– DTK
14-10-27在5:40

#2 楼

导出特制的环境变量,该变量将由易受攻击的Bash版本自动评估:

$ export testbug='() { :;}; echo VULNERABLE'


现在执行简单的回显以查看Bash是否将评估$ testbug中的代码即使您自己没有使用过该变量:

$ bash -c "echo Hello"
VULNERABLE
Hello


如果它显示“ VULNERABLE”字符串,答案很明显。否则,您不必担心,您的Bash补丁版本可以。

请注意,主要的Linux发行版已发布了多个补丁,有时它们不能完全解决漏洞。继续检查安全公告和CVE条目是否存在此错误。

评论


除了CVE-2014-6271之外,来自Red Hat的不完整修复程序也有其自身的缺陷,值得关注:CVE-2014-7169。

– DocMax
2014-09-25 19:28

即使“您正在使用备用登录Shell(可能不了解导出)”,它也不会污染您的shell env并且碰巧可以运行的一种代码:env testbug ='(){:;}; echo VULNERABLE'bash -c“ echo Hello”

– Lloeki
2014-09-26 7:15



这里有一些特定于Ubuntu的详细信息askubuntu.com/questions/528101/…-我个人必须从Ubuntu 13.10升级到14.04才能解决此问题

– dodgy_coder
2014-09-26 11:32



#3 楼

ShellShock实际上是bash多个漏洞的结合,并且此刻还有恶意软件利用了此漏洞,因此ShellShock可能是一个尚待解决的问题,RedHat有一个线程对此问题进行了更新。 br />
Redhat建议以下内容:

运行命令:

$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"


如果输出是:

$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
vulnerable
bash: BASH_FUNC_x(): line 0: syntax error near unexpected token `)'
bash: BASH_FUNC_x(): line 0: `BASH_FUNC_x() () { :;}; echo vulnerable'
bash: error importing function definition for `BASH_FUNC_x'
test


您没有任何解决办法。

如果输出为:

$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
bash: error importing function definition for `BASH_FUNC_x()'
test


CVE-2014-6271修复

如果您的输出是:

$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `BASH_FUNC_x'
test


您就不会受到攻击。

ShellShock检查的另一部分是CVE-2014-7169漏洞检查,可确保保护系统免受文件创建问题的影响。要测试您的Bash版本是否容易受到CVE-2014-7169的攻击,请运行以下命令:

$ cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>\' bash -c "echo date"; cat /tmp/echo
bash: x: line 1: syntax error near unexpected token `='
bash: x: line 1: `'
bash: error importing function definition for `x'
Fri Sep 26 11:49:58 GMT 2014


如果系统容易受到攻击,则将显示时间和日期和/ tmp / echo将被创建。

如果您的系统不容易受到攻击,您将看到类似于以下内容的输出:

$ cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>\' bash -c "echo date"; cat /tmp/echo
date
cat: /tmp/echo: No such file or directory


#4 楼

我编写了一个名为ShellShocker的CLI实用程序,以测试您的Web服务器是否存在CGI脚本中的漏洞。
要测试您的站点,您需要运行:

python shellshocker.py <your-server-address>/<cgi-script-path>


ie

python shellshocker.py http://example.com/cgi-bin/possibly-vulnerable-script.cgi


编辑:该实用程序已被删除,抱歉:'(<< />

评论


您的链接已死

– SSK
2014-09-26 17:24

@SSK对不起;)类型错误。

–利亚姆·马歇尔(Liam Marshall)
2014-09-26 17:26

您的链接仍然无效。

– Mxx
2014-09-30 19:24

是的,对不起,我记下了。它以我不喜欢的方式被利用。

–利亚姆·马歇尔(Liam Marshall)
2014年10月2日,下午5:24

#5 楼

您可以将您的CGI URL提交到此在线测试:

http://shellshock.iecra.org

评论


提供拒绝理由是有礼貌的。

–大卫
2014年9月26日,1:14

“我们记录所有扫描” ???爬行。我将下载python并自行运行。

–布拉德
2014年9月26日在1:54

@brad至少他们在告诉你。我确定如果我提供的白帽安全服务提供了该服务,那么我很可能会保留一个日志(如果只有一个没有个人详细信息的柜台),记录有多少人盲目将其网站详细信息输入表示正在访问的网站尝试进行渗透测试,而又不十分了解提供该测试的网站的真实性……而且,他们希望得到谁进​​行测试的日志,以防有人使用其服务来查找属于他人的易受攻击的网站……

–罗布·莫尔
2014-09-26 7:52



#6 楼

输入env x ='(){:;}; echo易受攻击的bash -c“ echo this is a test”,如果此命令返回易受攻击的漏洞并且这是测试,则表明您的OSX / Linux计算机受到了影响。
解决方法是将bash更新到最新版本。 br />

评论


为什么以root身份?完全没有必要。

–垫子
2014-09-27 13:58