nan*_*rad 142 security bash shellshock
最近,有关于“CVE-2014-6271”(参见USN-2362-1)的消息,这是 Bash 中的一个漏洞。我怎么知道我是否受此影响,我该如何解决,我为什么要关心?
由于其范围和严重性,这被设计为针对此漏洞的规范答案。
nan*_*rad 126
Bash 是 Ubuntu 中默认的交互式 shell。当您与终端交互时(通过终端仿真器、通过 tty 或 ssh),您通常键入bash
将读取和执行的命令。即使您根本不使用终端,您仍然可以使用 Bash。
在 Ubuntu 上,/bin/sh
不是 bash(它是破折号)。只有 bash 受此漏洞影响。
Bash 和操作系统会跟踪一组环境变量,这些变量描述了当前登录的用户、在硬盘上的何处查找程序以及其他此类功能。通过制作具有特定结构的环境变量,攻击者可能能够在 Bash 下次启动时执行代码。
攻击者可以通过多种方式设置该环境变量:
ForceCommand
选项是一种攻击媒介。shell 不是 bash 的帐户不受影响。一旦他们设置了这个变量,下次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
Run Code Online (Sandbox Code Playgroud)
这将查找有关您的bash
包的信息,并过滤输出以仅显示版本。固定版本4.3-7ubuntu1.4
,4.2-2ubuntu2.5
和4.1-2ubuntu3.4
。
例如,我看到:
wlan1-loopback% dpkg -s bash | grep Version
Version: 4.3-7ubuntu1.4
Run Code Online (Sandbox Code Playgroud)
并且可以确定我不脆弱。
标准更新管理器将为您提供此更新。这是一个很好的例子,说明安全更新的重要性,无论您使用什么操作系统或维护得多么好。
该USN公告指出,新的版本已经发布的Ubuntu 14.04忠实的塔尔羊,12.04精确穿山甲和10.04清醒山猫。如果您使用的不是这些 LTS 版本之一,而是使用了相当新的版本,那么您很可能会找到打过补丁的软件包。
首先,检查你是否
如果您易受攻击,您应该首先获取最新的软件包列表:
sudo apt-get update && sudo apt-get install bash
Run Code Online (Sandbox Code Playgroud)
第一个命令确保您拥有包含固定版本的最新软件包列表,第二个命令安装最新(固定)版本的 bash。
虽然这个错误似乎只在 bash 产生时才起作用,但如果可行,立即重新启动仍然是一个好主意。
小智 27
在 Hacker News 上从cft 那里偷走了这个。如果您像我一样(Odroid-XU)在使用存储库时遇到问题,那么如果您想从源代码修补/构建,这应该可以很好地工作。
TMPDIR=/tmp/bash-src
mkdir $TMPDIR
cd $TMPDIR
#download bash
wget http://ftp.gnu.org/gnu/bash/bash-4.3.tar.gz
#download all patches
for i in $(seq -f "%03g" 1 999); do
wget http://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-$i
if [[ $? -ne "0" ]]; then
MAX=$(expr $i - 1)
break;
fi
done
tar zxf bash-4.3.tar.gz
cd bash-4.3
#apply all patches
for i in $(seq -f "%03g" 1 $MAX);do
echo apply patch bash43-$i
patch -p0 < ../bash43-$i
done
#build and install
./configure && make
sudo make install
cd ../..
rm -r $TMPDIR
Run Code Online (Sandbox Code Playgroud)
然后运行:
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
Run Code Online (Sandbox Code Playgroud)
如果你得到:
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
this is a test
Run Code Online (Sandbox Code Playgroud)
那你们都好!
警告: make install 将安装 bash /usr/local/bin
,所以/bin/bash
不会被修改,可以从 curl 调用!
注意:CVE-2014-7169 的安全补丁已作为标准安全更新发布。无需添加额外的 ppa 即可接收此补丁。只需要以下内容。
sudo apt-get update
sudo apt-get upgrade
Run Code Online (Sandbox Code Playgroud)
为确保您已正确修补 bash,请运行以下命令
dpkg -s bash | grep Version
Run Code Online (Sandbox Code Playgroud)
如果您使用的是 14.04 LTS,您应该会看到以下输出:
Version: 4.3-7ubuntu1.4
Run Code Online (Sandbox Code Playgroud)
如果您使用的是 12.04 LTS,您的输出应该是:
Version: 4.2-2ubuntu2.5
Run Code Online (Sandbox Code Playgroud)