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

由于其范围和严重性,它被设计为该漏洞的典型答案。 br />

评论

“我如何解决它?” ->只需运行您的升级管理器!确实,Ubuntu发布了安全更新,有专门的安全团队。请不要发布有关从源代码构建Bash的答案!不必要地复杂,将来也很难维护您的系统。

另外,还有针对不完整修复程序的其他CVE。 CVE-2014-7169

请发布有关从源代码构建的答案。无论是否应该,有些人都拥有古老的Ubuntu服务器,从源代码构建可能是他们唯一的选择。

抱歉,我只是意识到我在测试中放了bash而不是破折号。没关系,这很好。

阅读:oss-sec:回复:CVE-2014-6271:通过bash远程执行代码。 Bash错误仍未得到修复

#1 楼

Bash是什么?

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

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

漏洞利用对我有何影响?用户,在硬盘上查找程序的位置以及其他此类功能。通过设计具有特定结构的环境变量,攻击者可能能够在Bash下次启动时执行代码。

攻击者可以通过多种方式设置该环境变量:正如Mitre所警告的那样,使用sshd ForceCommand选项是一种攻击手段。外壳不是bash的帐户不会受到影响。
欺骗您设置环境变量。
使另一个程序将环境变量设置为具有该特定值。例如,您可能有一个Web服务器和脚本,需要使用特定的用户内容设置环境变量。即使该脚本创建了自己的脚本,并且不涉及其他环境变量,也足够了。具有任何名称和特定值的单个环境变量足以使漏洞利用成功。出于任何原因,攻击者的代码都会运行。对于bash尤其如此,因为它以超级用户身份生成bash(管理用户规则,可以完全控制计算机的数据和程序)。即使仅以标准用户身份启动bash,也可以删除该用户的文件。

重要的是要注意,即使您自己不使用bash,许多程序也会在操作过程中自行生成bash。即使在这种情况下,您也很脆弱。但是,Ubuntu的sudo -s不是bash,因此仅显式调用bash的程序不受默认脚本外壳的影响。

根据Mitre:




我容易受到攻击吗?

使用dpkg检查您已安装的软件包版本:打包,然后过滤输出以仅向您显示版本。固定版本是/bin/shbash4.3-7ubuntu1.4。例如,我看到:

dpkg -s bash | grep Version


,可以确定我不容易受到攻击。

我如何更新?

标准更新管理器将为您提供此更新。无论您使用什么操作系统或维护程度如何,这都是安全更新的重要性的主要示例。

USN公告指出,已为Ubuntu 14.04 Trusty Tahr发布了新版本, 12.04精确的穿山甲和10.04清醒的山猫。如果您不是使用这些LTS版本中的一个,而是使用了相当新的版本,则很可能能够找到修补的软件包。

首先,检查您是否

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

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


第一个命令可确保您拥有包含以下内容的最新软件包列表:固定版本,第二个命令将安装最新版本(固定)的bash。

虽然该错误似乎仅在生成bash时才起作用,但在可行的情况下,立即重新启动仍然是一个好主意。

评论


抱歉,您很脆弱。原始补丁无法解决整个问题。请参阅cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-7169 AFAIAA,目前没有公开可用的修复程序。参见例如people.canonical.com/~ubuntu-security/cve/pkg/bash.html

–莫尔梅吉尔
2014-09-25 6:42



@hexafraction您从哪里读到12.10对此进行了更新?我认为不是,12.10、13.04、13.10的使用寿命很长!而且,反向端口存储库也不用于安全更新。

– Gertvdijk
2014-09-25 13:39



@hexafraction不,他们没有!这就是终止生命的全部要点:不再支持。

– Gertvdijk
2014-09-25 13:41



@MichaelHärtl如果您使用的是Ubuntu 12.10,则可以从packages.ubuntu.com/precise/bash下载bash的12.04版本并手动安装。

–大卫
2014-09-25 21:37

更新管理器中提供了CVE-2014-7169修复程序(对我而言)。

–卡尔马留斯
2014-09-26 9:51

#2 楼

在Hacker News上偷了这本书。如果您在使用像我这样的存储库(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


如果你得到了:

env x='() { :;}; echo vulnerable' bash -c "echo this is a test"


那么你都很好!

警告:make install将在b4312079q中安装bash,因此/usr/local/bin不会被修改并且可以从curl中调用!

评论


以下是在Debian Lenny上使用补丁构建bash 3.2的方法:gist.github.com/mattwhite/86de50d30134129e44ef

–马特·怀特
2014-09-25 3:47

-1。无需从源代码构建。 Ubuntu在存储库中有一个安全补丁。如果您有“仓库问题”,请改正它。如果不进行安全升级,您可能会在许多方面受到威胁!

– Gertvdijk
2014-09-25 8:21



@马特·怀特谢谢!您刚刚救了我几个小时:)

–弗洛里安·菲达(Florian Fida)
2014年9月25日上午10:09

@FlorianFida这是AskUbuntu!希望该站点上的每个人都能在使用Ubuntu的范围内发布答案。

– Gertvdijk
2014-09-25 10:11



@MichaelHärtl12.10即将终止。很长时间以来,它不再接收任何安全更新。升级!!!

– Gertvdijk
2014-09-25 13:38

#3 楼

注意:CVE-2014-7169的安全修补程序已作为标准安全更新发布。无需添加其他ppa即可接收此补丁。仅需要以下内容。

sudo apt-get update

sudo apt-get upgrade


为确保正确修补bash,请运行以下命令

dpkg -s bash | grep Version


如果使用14.04 LTS,应该看到以下输出:

Version: 4.3-7ubuntu1.4


如果使用12.04 LTS,那么输出应该是:

 Version: 4.2-2ubuntu2.5


评论


这是正确的,但是现已提供了官方补丁程序,因此安全更新已发布。因此,这些步骤不再是必需的。

–罗比·巴萨克(Robie Basak)
2014-09-26 9:36

这是对的。我将编辑以上帖子。谢谢。

–branch.lizard
2014年9月26日在12:01

#4 楼

如果您使用的是11.04:请使用以下步骤(对我有用)

cd ~/
mkdir bash
wget https://ftp.gnu.org/gnu/bash/bash-4.3.tar.gz
for i in $(seq -f "%03g" 0 25); do wget https://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-$i; done


如果未下载所需补丁,请安装ftp软件包

apt-get install ftp
for i in $(seq -f "%03g" 0 25); do wget https://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-$i; done
tar zxvf bash-4.3.tar.gz
cd bash-4.3
for i in $(seq -f "%03g" 0 25);do patch -p0 < ../bash43-$i; done
./configure && make && make install
apt-get install build-essential
./configure && make && make install


查看是否已应用补丁:

env x='() { :;}; echo vulnerable' bash -c "echo this is a test"


#5 楼

我正在使用Natty 11.04,这是EOL(并且我已经更新了/etc/apt/sources.list以使用old-releases.ubuntu.com),所以我必须从源代码进行构建。我想构建一个.deb,因此至少包管理是“意识到”的,bash版本不是默认版本。我不是100%成功的-但是,该软件包被注册为“较新的”,并且bash二进制文件最终被修复,所以这是我的工作:

apt-get source bash
wget https://gist.githubusercontent.com/drj11/e85ca2d7503f28ebfde8/raw/31bd53ed2e47b220d3c728f5440758e0f76769de/gistfile1.c -O bash_CVE-2014-6271.patch
wget https://gist.githubusercontent.com/drj11/239e04c686f0886253fa/raw/046e697da6d4491c3b733b0207811c55ceb9d927/gistfile1.c -O bash_CVE-2014-6271_plus.patch
cd bash-4.2/


现在在(子)目录bash-4.2/中,有:一个文件bash-4.2.tar.xz,需要解压缩才能到达bash源;和一个名为debian的子目录。

为了避免依赖于texlive,我进行了以下更改:在bash-4.2/debian/control中: bash-4.2/debian/rules

Source: bash
...
Build-Depends: autoconf, autotools-dev, patch, bison, libncurses5-dev,
# texinfo, debhelper (>= 5), texi2html, locales, gettext, sharutils, time, xz-ut
ils
 debhelper (>= 5), locales, gettext, sharutils, time, xz-utils
# Build-Depends-Indep: texlive-latex-base, ghostscript
Build-Depends-Indep: ghostscript


要更改版本,请在此bash-4.2/目录中执行:

binary-doc: bash-install #bash-doc-build
        dh_testdir
        dh_testroot
        mkdir -p $(d_doc)/usr/share/doc/$(p)
        dh_installdocs -p$(p_doc) 
ifeq ($(with_gfdl),yes)
        #cp -p build-bash/doc/bashref.pdf $(d_doc)/usr/share/doc/$(p)/.
        #dh_link -p$(p_doc) \
        #    /usr/share/doc/$(p)/bashref.pdf /usr/share/doc/$(p_doc)/bashref.pdf
else
        rm -f $(d_doc)/usr/share/doc-base/bashref
endif
        rm -f $(d_doc)/usr/share/info/dir*
        #cp -p build-bash/doc/bash.html build-bash/doc/bash.pdf \
        #    $(d_doc)/usr/share/doc/$(p)/
        #dh_link -p$(p_doc) \
        #    /usr/share/doc/$(p)/bash.html /usr/share/doc/$(p_doc)/bash.html \
        #    /usr/share/doc/$(p)/bash.pdf /usr/share/doc/$(p_doc)/bash.pdf
        dh_installchangelogs -p$(p_doc) bash/CWRU/changelog
        ...


。 。并在询问时填写更改日志中的注释。这样可以确保调用.deb(和相关的元数据)(在我的情况下)为bash_4.2-0ubuntu3patchCVE1_i386.deb。然后,您可以尝试使用dpkg-buildpackage -us -ucdebuild命令进行构建。注意-这些都将重新从zip中解压缩源-因此将覆盖您可能拥有的所有补丁!不过,请运行其中之一,以便解压缩并构建源(请注意,由于texlive,最终debuild可能仍会失败,但应解压缩并构建源)。

然后应用补丁;请注意,您应该在此处使用-p1,因为当前您位于bash-4.2/目录中:

这将重建可执行文件;要测试它:

bash-4.2$ dch --local patchCVE


要生成.deb文件,请运行:

bash-4.2$ patch -p1 < ../bash_CVE-2014-6271.patch 
bash-4.2$ patch -p1 < ../bash_CVE-2014-6271_plus.patch 


这将保存父目录中的.deb文件;列出其内容:

bash-4.2$ fakeroot debian/rules build 


要安装.deb:

bash-4.2$ env VAR='() { :;}; echo Bash is vulnerable!' ./build-bash/bash -c "echo Bash Test"


但是,由于某种原因,此.deb包含未修补的二进制文件(?!),因此我不得不另外执行以下操作:
测试开始为我正确通过:

bash-4.2$ fakeroot debian/rules binary


评论


问题:原始问题指出1种可能的攻击媒介为“未指定的DHCP客户端执行的脚本”。这是什么意思?这是否意味着Ubuntu的/ sbin / dhclient <-容易受到攻击?

–麸皮
2014年10月10日,下午1:29

我认为未指定的客户端可能意味着,Ubuntu感染了/ sbin / dhclient,然后运行命令导致bash脚本启动shellshock。那是什么DHCP客户端容易受到Shellshock的攻击? (希望如此,请参阅我从10月10日开始的上述消息)

–麸皮
14-10-23在4:06