Shellshock:为什么在测试漏洞时出现此错误

Shellshock:为什么在测试漏洞时出现此错误

我在两台机器上使用 Fedora 20。

就在 2014 年 9 月 26 日 UTC 时间 1100 点左右,在英国阅读了有关 Shellshock 漏洞的信息后,为了yum update bash防范该漏洞,我尝试了以下推荐的测试模式:

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

并且,在用户模式和 su 模式下,在一台机器上得到了这个结果:

bash: warning: x: ignoring function definition attempt
bash: error importing function definition for 'x'
this is a test

另一方面我得到的只是:

this is a test

请问:我在两台机器上都成功了,还是应该担心?


为了回应@terdon的评论,我得到了这个结果:

[Harry@localhost]~% env X='() { (a)=>\' bash -c "echo echo vuln"; [[ "$(cat echo)" == "vuln" ]] && echo "still vulnerable :("
echo vuln
cat: echo: No such file or directory
[Harry@localhost]~%

但不确定这意味着什么。


澄清一下,我对警告以及两台机器之间的差异感到困惑。我再次仔细查看了警告消息。可能是,在没有错误消息的机器上,我用“复制并粘贴”输入了命令:在另一台机器上我输入了它并收到警告,现在我看到警告将最后的“x”引用为‘x’(注意“反勾号”)。那台机器有一个美国键盘,我还无法更改为英国布局,但完全有另一个问题。

在网上追寻这个LinuxQuestions.org 线程讨论了一下,看来两人都是安全的。

答案1

你做对了。
您的系统是安全的,不会受到此漏洞的攻击。

如果您的系统不安全,该命令的输出将是:

脆弱
这是一个测试

但由于你的输出是

bash:警告:x:忽略函数定义尝试
bash:导入“x”的函数定义时出错,
这是一个测试

你很安全。

如果您昨天执行了此操作,请考虑yum update bash今天也运行,因为昨天的修复不如今天发布的修复。


编辑(因为OP要求更多信息)

我还可以让您对新的漏洞感到平静。您的系统已经安装了新的修复程序。

如果你有输出

echo 漏洞
仍然容易受到攻击:(

你仍然很脆弱。

现在我无法告诉您该漏洞利用程序究竟是如何工作的,我的意思是我无法告诉您到底发生了什么以及第一个和第二个漏洞利用程序之间的差异是什么。但我可以给你一个关于expo如何运作的简化答案。

env X='() { (a)=>\' bash -c "echo echo vuln"; [[ "$(cat echo)" == "vuln" ]] && echo "still vulnerable :("
除了将一些可执行代码保存在一个文件中之外,“什么也不做”环境变量每次启动 bash-shell 时都会执行该命令。
并且 bash-shell 很容易/经常启动。不仅是你自己,还有很多程序都需要 bash 来完成他们的工作。例如 CGI。

如果您想更深入地了解此漏洞,请参阅以下红帽安全博客的链接:https://securityblog.redhat.com/2014/09/24/bash-specially-crafted-environment-variables-code-injection-attack/

答案2

vulnerable如果问题没有得到解决,您应该在两次尝试后阅读。

答案3

第一个输出是固定 bash 的输出。第二个不显示补丁修复添加的警告,但显示正确的行为(它不易受攻击)。也许第二台机器并没有真正使用 bash,或者发行版使用了略有不同的补丁(例如,禁用可导出功能的补丁)。您能否提供两台机器的 bash --version 的输出?

相关内容