前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >升级Bash修复Shellshock漏洞

升级Bash修复Shellshock漏洞

作者头像
Alicia
发布2018-08-29 17:06:42
1.6K0
发布2018-08-29 17:06:42
举报
文章被收录于专栏:科技前线科技前线

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 检查漏洞
    • CVE-2014-6271
      • CVE-2014-7169
        • CVE-2014-7186
          • CVE-2014-7187和CVE-2014-6277
          • 安装升级
            • Ubuntu和Debian
              • CentOS
                • Fedora
                  • Arch Linux
                    • Gentoo
                      • Bash 3.1
                      • Bash 3.2
                      • Bash 4.0
                      • Bash 4.1
                      • Bash 4.2
                    • OpenSUSE
                      • Slackware
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档