介绍
2014年9月24日,一个被称为Shellshock或Bash Bug
的GNU Bash漏洞被披露,简而言之,该漏洞允许远程攻击者在某些条件下执行任意代码,通过在环境变量分配后传递代码串。由于Bash在Linux、BSD和Mac OS X发行版中无处不在的状态,许多计算机都容易受到Shellshock的攻击;所有1.14到4.3之间的Bash版本(即迄今为止所有版本)都面临风险。
Shellshock 漏洞可被利用在运行服务或允许未经授权的远程用户分配 Bash 环境变量的应用程序的系统上。
- Apache HTTP 服务器使用以 Bash 编写的 CGI 脚本(通过'mod_cgi' 和'mod_cgid')或启动到 Bash 子壳
- 某些 DHCP 客户端
- 使用 'ForceCommand' 功能的 OpenSSH 服务器 使用 Bash 的各种网络曝光服务
该错误的详细描述可在 CVE-2014-6271, CVE-2014-7169, CVE-2014-7186和 CVE-2014-7187找到。
由于Shellshock的漏洞非常普遍 - 甚至比OpenSSL Heartbleed的漏洞更为广泛 - 并且特别容易被利用,因此强烈建议对受影响的系统进行适当的更新,以便尽快修复或减轻漏洞。
检查系统漏洞
在运行 Bash 的每个系统上,您可以通过在 bash 提示中运行以下命令来检查 Shellshock 漏洞:
1env 'VAR=() { :;}; echo Bash is vulnerable!' 'FUNCTION()=() { :;}; echo Bash is vulnerable!' bash -c "echo Bash Test"
命令中突出的echo Bash is vulnerable!
部分表示远程攻击者可以注入恶意代码;随机代码在环境变量分配中遵循函数定义。
1Bash is vulnerable!
2Bash Test
如果您的输出不包含模拟攻击者的实用负载,即Bash is vulnerable
不是作为输出打印的,那么您至少受到第一个漏洞的保护(CVE-2014-6271,但您可能对后来发现的其他CVE具有脆弱性。
如果测试命令的唯一输出是以下,则您的Bash是安全的Shellshock:
1Bash Test
远程网站测试
如果您只是想测试网站或特定 CGI 脚本是否易受攻击,请使用此链接: ‘ShellShock’ Bash Vulnerability CVE-2014-6271 测试工具。
只需输入您想要测试的网站或 CGI 脚本的 URL,并提交。
修复漏洞:更新Bash
解决漏洞的最简单方法是使用默认包管理器来更新 Bash 的版本,下面的子部分涵盖了在各种 Linux 发行版上更新 Bash,包括 Ubuntu、Debian、CentOS、Red Hat 和 Fedora。
应用程序:Ubuntu / Debian
对于目前支持的 Ubuntu或 Debian版本,请通过apt-get
更新 Bash 到最新的版本:
1sudo apt-get update && sudo apt-get install --only-upgrade bash
现在,通过在上一节执行命令(检查系统漏洞)来再次检查系统漏洞。
生命的终结 Ubuntu / Debian 发布
如果您正在运行 Ubuntu / Debian 版本,该版本被认为是 end of life 状态,您将需要升级到支持的版本以使用包管理器来更新 Bash. 可以使用以下命令升级到新版本(建议您先备份您的服务器和重要数据,如果您遇到任何问题):
1sudo do-release-upgrade
升级完成后,请确保您更新了 Bash。
YUM:CentOS / 红帽 / Fedora
更新 Bash 到最新的版本可通过 yum
:
1sudo yum update bash
现在,通过在上一节执行命令(检查系统漏洞)来再次检查系统漏洞。
终结生命 CentOS / Red Hat / Fedora 发布
如果您正在运行 CentOS / Red Hat / Fedora 版本,该版本被认为是 end of life 状态,则需要升级到支持的版本以使用包管理器来更新 Bash. 可以使用以下命令升级到新版本(建议您先备份您的服务器和重要数据,如果您遇到任何问题):
1sudo yum update
升级完成后,请确保您更新了 Bash。
结论
请确保将所有受影响的服务器更新到最新版本的 Bash! 此外,请确保您的服务器保持最新安全更新!