TranslateProject/published/201410/20141014 Linux FAQs with Answers--How to detect and patch Shellshock vulnerability in bash.md
2014-11-01 21:03:29 +08:00

3.6 KiB
Raw Permalink Blame History

Linux有问必答如何检测并修复bash中的破壳漏洞

问题我想要知道我的Linux服务器是否存在bash破壳漏洞以及如何来保护我的Linux服务器不受破壳漏洞侵袭。

2014年9月24日一位名叫斯特凡·沙泽拉的安全研究者发现了一个名为“破壳”Shellshock也称为“bash门”或“Bash漏洞”的bash漏洞。该漏洞如果被渗透远程攻击者就可以在调用shell前通过在特别精心编制的环境中输出函数定义执行任何程序代码。然后这些函数内的代码就可以在调用bash时立即执行。

注意破壳漏洞影响到bash版本1.14到4.3当前版本。虽然在写本文时还没有该漏洞权威而完整的修复方案也尽管主要的Linux发行版DebianRed HatCentOSUbuntuNovell/Suse)已经发布了用于部分解决与此漏洞相关的补丁(CVE-2014-6271CVE-2014-7169并且建议尽快更新bash并在随后数日内检查更新LCTT 译注,可能你看到这篇文章的时候,已经有了完善的解决方案)。

检测破壳漏洞

要检查你的Linux系统是否存在破壳漏洞请在终端中输入以下命令。

 $ env x='() { :;}; echo "Your bash version is vulnerable"' bash -c "echo This is a test" 

如果你的Linux系统已经暴露给了破壳漏洞渗透命令输出会像这样

Your bash version is vulnerable
This is a test

在上面的命令中一个名为x的环境变量已经被设置可用于用户环境。就如我们所了解到的它并没有赋值是一个虚函数定义后面跟了一个任意命令红色该命令将在bash调用前执行。

为破壳漏洞应用修复

你可以按照以下方法安装新发布的bash补丁。

在Debian及其衍生版上

# aptitude update && aptitude safe-upgrade bash 

在基于Red Hat的发行版上

# yum update bash 

打补丁之前:

Debian

CentOS

打补丁之后:

Debian:

CentOS:

注意在安装补丁前后各个发行版中的bash版本没有发生变化——但是你可以通过从更新命令的运行过程中看到该补丁已经被安装很可能在安装前需要你确认

如果处于某种原因你不能安装该补丁或者针对你的发行版的补丁还没有发布那么建议你先试用另外一个shell直到修复补丁出现。


via: http://ask.xmodulo.com/detect-patch-shellshock-vulnerability-bash.html

译者:GOLinux 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出