升级Bash修复Shellshock漏洞

2018-08-29 17:06:42 浏览数 (1)

Shellshock,又称Bashdoor,是一个安全漏洞,于2014年9月12日被发现,直到9月24日被赋予了CVE编号CVE-2014-6271才得以控制。该漏洞与Bash有关,Bash是一种广泛使用的Unix shell。此漏洞影响所有Linux发行版,并允许使用环境变量远程执行命令。

除了CVE-2014-6271之外,打了Shellshock补丁后的几天内又发现了许多其他相关漏洞。本指南将告诉你如何安全地升级Linux发行版并保护Linode免受Bash漏洞攻击。

检查漏洞

首先必须检查你的Linode是否易受攻击。由于存在多个漏洞,你需要检查每个漏洞的漏洞状态。

CVE-2014-6271

要检查你的Linode是否容易受到攻击,在Bash中运行以下命令:

代码语言:javascript复制
env x='() { :;}; echo vulnerable' bash -c 'echo this is a test'

如果你的Linode易受攻击,你会看到:

代码语言:javascript复制
vulnerable
this is a test

如果你的Linode不易受攻击,你会看到:

代码语言:javascript复制
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
this is a test

在某些发行版中,例如Ubuntu 12.04,你可能看不到bash警告报错。只要你在输出中看不到vulnerable,正在运行的则是针对CVE-2014-6271的升级版本。

CVE-2014-7169

在检查CVE-2014-6271时,发现了一个新的漏洞,其CVE编号为CVE-2014-7169。

要检查该漏洞,在Bash中运行以下命令:

代码语言:javascript复制
env X='() { (a)=>' sh -c "echo date"; cat echo

如果你的Linode易受攻击,你会看到:

代码语言:javascript复制
bash: X: line 1: syntax error near unexpected token `='
bash: X: line 1: `'
bash: error importing function for `X'
Sun Sep 08:17:32 EST 2014

如果你的Linode不易受攻击,你会看到:

代码语言:javascript复制
date
cat: echo: No such file or directory

CVE-2014-7186

除了以上两个漏洞,还发现了另一个与之前在Bash中发现的代码问题相关的漏洞。新漏洞被赋予CVE编号CVE-2014-7186。

该漏洞通过使用固定大小的redir_stack允许越界内存访问,从而能够执行本来无法运行的代码。

要测试该漏洞,在Bash中运行以下命令:

代码语言:javascript复制
bash -c 'true <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF' || echo "CVE-2014-7186 vulnerable, redir_stack"

如果你的Linode不易受攻击,你会看到:

代码语言:javascript复制
bash: warning: here-document at line 0 delimited by end-of-file (wanted `EOF')
bash: warning: here-document at line 0 delimited by end-of-file (wanted `EOF')
bash: warning: here-document at line 0 delimited by end-of-file (wanted `EOF')
bash: warning: here-document at line 0 delimited by end-of-file (wanted `EOF')
bash: warning: here-document at line 0 delimited by end-of-file (wanted `EOF')
bash: warning: here-document at line 0 delimited by end-of-file (wanted `EOF')
bash: warning: here-document at line 0 delimited by end-of-file (wanted `EOF')
bash: warning: here-document at line 0 delimited by end-of-file (wanted `EOF')
bash: warning: here-document at line 0 delimited by end-of-file (wanted `EOF')
bash: warning: here-document at line 0 delimited by end-of-file (wanted `EOF')
bash: warning: here-document at line 0 delimited by end-of-file (wanted `EOF')
bash: warning: here-document at line 0 delimited by end-of-file (wanted `EOF')
bash: warning: here-document at line 0 delimited by end-of-file (wanted `EOF')
bash: warning: here-document at line 0 delimited by end-of-file (wanted `EOF')

CVE-2014-7187和CVE-2014-6277

这两个CVE都是由于CVE-2014-6271和CVE-2014-7169修复不完整而导致的。幸运的是,大多数发行版修补了这两个CVE,完成了Shellshock漏洞修补。

如果你仍在使用Debian Squeeze且尚未升级,则需要按照他们的说明使用Debian Squeeze LTS并相应地更改你的sources.list文件以获得升级。

安装升级

以下是升级Bash并确保你的Linode不再容易受到此漏洞攻击的相关信息。每个部分都是为不同的发行版而设计的。以下的说明基于你具有root权限或sudo权限。如果你没有这些权限,将无法运行这些命令。

Ubuntu和Debian

要在Ubuntu和Debian上升级Bash,运行以下命令来更新和升级Bash包。如果你没有以root用户身份运行,请在每个命令前添加sudo

代码语言:javascript复制
apt-get update
apt-get install --only-upgrade bash

重新运行本文档“检查漏洞”部分中的命令,确保已升级。

CentOS

要在CentOS上升级Bash,运行此命令以更新和升级Bash包。如果你没有以root用户身份运行,请在每个命令前添加sudo

代码语言:javascript复制
yum update bash

重新运行本文档“检查漏洞”部分中的命令,确保已升级。

Fedora

要在Fedora上升级Bash,运行此命令以更新和升级Bash包。如果你没有以root用户身份运行,请在每个命令前添加sudo

代码语言:javascript复制
yum -y install bash

重新运行本文档“检查漏洞”部分中的命令,确保已升级。

Arch Linux

要在Arch Linux上升级Bash,运行此命令以更新和升级Bash包。如果你没有以root用户身份运行,请在每个命令前添加sudo

代码语言:javascript复制
pacman -Syu

重新运行本文档“检查漏洞”部分中的命令,确保已升级。

Gentoo

Gentoo根据你当前使用的Bash版本提供了特定的修补说明。要查找你的版本,运行:

代码语言:javascript复制
bash --version
Bash 3.1

要在Gentoo上修补Bash 3.1中的漏洞,运行:

代码语言:javascript复制
emerge --sync
emerge --ask --oneshot --verbose ">=app-shells/bash-3.1_p18-r1"

重新运行本文档“检查漏洞”部分中的命令,确保已修补。

Bash 3.2

要在Gentoo上修补Bash 3.2中的漏洞,运行:

代码语言:javascript复制
emerge --sync
emerge --ask --oneshot --verbose ">=app-shells/bash-3.2_p52-r1"

重新运行本文档“检查漏洞”部分中的命令,确保已修补。

Bash 4.0

要在Gentoo上修补Bash 4.0中的漏洞,运行:

代码语言:javascript复制
emerge --sync
emerge --ask --oneshot --verbose ">=app-shells/bash-4.0_p39-r1"

重新运行本文档“检查漏洞”部分中的命令,确保已修补。

Bash 4.1

要在Gentoo上修补Bash 4.1中的漏洞,运行:

代码语言:javascript复制
emerge --sync
emerge --ask --oneshot --verbose ">=app-shells/bash-4.1_p12-r1"

重新运行本文档“检查漏洞”部分中的命令,确保已修补。

Bash 4.2

要在Gentoo上修补Bash 4.2中的漏洞,运行:

代码语言:javascript复制
emerge --sync
emerge --ask --oneshot --verbose ">=app-shells/bash-4.2_p48-r1"

重新运行本文档“检查漏洞”部分中的命令,确保已修补。

OpenSUSE

要针对OpenSUSE上的漏洞升级Bash,运行:

代码语言:javascript复制
zypper patch --cve=CVE-2014-7187

重新运行本文档“检查漏洞”部分中的命令,确保已升级。

Slackware

要针对Slackware上的漏洞升级bash,必须使用slackpkg升级Bash包:

代码语言:javascript复制
slackpkg update
slackpkg upgrade bash

完成后,请重新运行本文档“检查漏洞”部分中的命令,确保已升级。

bashshell安全漏洞bashshell安全漏洞

0 人点赞