什么是CVE-2014-6271 bash漏洞(Shellshock)以及如何解决?

Modified on: Sat, 09 Jun 2018 17:30:53 +0800

最近,有关于“CVE-2014-6271”的新闻(见USN-2362- 1),这是Bash中的一个漏洞。我怎么知道我是否受此影响,我该如何解决,以及我为什么要关心?

由于其范围和严重性,这被设计为此漏洞的规范答案。

作者:,hexafraction

最佳答案

Bash是Ubuntu中的默认交互式shell。当您与终端(通过终端仿真器,通过tty或ssh)连接时,通常会键入bash将读取和执行的命令。即使你根本不使用终端,你仍然有Bash。

在Ubuntu上,/bin/sh不是bash(它是破折号)。只有bash受此漏洞影响。

漏洞利用对我有何影响?

Bash和操作系统会跟踪一组描述当前登录用户的环境变量,在硬盘上查找程序的位置以及其他此类功能。通过制作具有特定结构的环境变量,攻击者可能能够在下次Bash启动时执行代码。

攻击者可以通过多种方式设置该环境变量:

  • 使用特定设置(例如git over ssh)远程连接到SSH等服务。正如Mitre警告的那样,使用sshd ForceCommand选项是攻击向量。 shell不是bash的帐户不受影响。
  • 诱使您设置环境变量。
  • 导致另一个程序设置环境变量以获得该值。例如,您可能有一个Web服务器和脚本需要设置具有特定用户内容的环境变量。即使该脚本创建了自己的脚本,也没有触及其他环境变量,它就足够了。 具有任何名称和精心设计值的单个环境变量足以使漏洞利用成功
  • 我在这里没有提及的其他方式。

设置此变量后,下次bash打开任何原因时,您的攻击者代码将会运行。这对于sudo -s来说尤其令人生畏,因为它会将bash作为超级用户(一个管理用户规则具有完整控制计算机的数据和程序)。即使您只是以标准用户身份启动bash,也可以删除该用户的文件。

重要的是要注意,即使你不自己使用bash,许多程序也会自行生成bash作为其操作的一部分。即使在这种情况下,你也很脆弱。但是,Ubuntu的/bin/sh不是bash,因此只有显式调用bash而不是默认脚本shell的程序才会受到影响。

根据米特尔的说法:

  

涉及OpenSSH sshd中ForceCommand功能的向量,Apache HTTP Server中的mod_cgi和mod_cgid模块,由未指定的DHCP客户端执行的脚本,以及在Bash执行的特权边界内设置环境的其他情况。

我是否容易受伤?

使用dpkg检查已安装的软件包版本:

dpkg -s bash | grep Version

这将在bash包中查找信息,并过滤输出以仅显示版本。固定版本为4.3-7ubuntu1.44.2-2ubuntu2.54.1-2ubuntu3.4

例如,我看到了:

wlan1-loopback% dpkg -s bash | grep Version
Version: 4.3-7ubuntu1.4

并且可以确定我不易受伤害。

如何更新?

标准更新管理器将为您提供此更新。这是安全更新如何重要的一个主要示例,无论您使用何种操作系统或维护良好。

USN公告指出已为Ubuntu 14.04发布新版本Trusty Tahr,12.04精确穿山甲,和10.04 Lucid Lynx。如果您不是这些LTS版本中的一个,但是处于合理的最新版本,那么您很可能能够找到修补的软件包。

首先,检查你是否

如果您容易受到攻击,您应首先获取最新的软件包列表:

sudo apt-get update && sudo apt-get install bash

第一个命令确保您拥有包含固定版本的最新包列表,第二个命令安装最新(固定)版本的bash。

虽然在生成bash时这个bug似乎才会发挥作用,但如果可行的话,立即重新启动仍然是一个好主意。

作者:,hexafraction

相关问答

添加新评论