如何在debian测试/ jessie中修复Shellshock安全漏洞?


24

测试命令

x='() { :;}; echo vulnerable' bash

表明我的Debian 8(Jessie)安装存在漏洞,即使具有最新更新也是如此。研究表明,有一个用于稳定和不稳定的补丁程序,但是该测试尚未发布。

我认为该补丁将在几天之内进行测试,但这实际上看起来很讨厌,以至于偏执。有什么方法可以使软件包从不稳定状态中获得并安装它而不会破坏我的系统?升级到不稳定的外观可能会导致更多问题,甚至无法解决。


Bob认为,还有第二个Shellshock漏洞,该漏洞已在第二个补丁中修复。对此的测试应该是:

 env X='() { (a)=>\' bash -c "echo echo vuln"; [[ "$(cat echo)" == "vuln" ]] && echo "still vulnerable :("

但是我对Bash不够熟练,无法弄清楚这意味着什么或为什么会引起问题。无论如何,它做了一些奇怪的事情,在64位系统上,bash_4.3-9.2_amd64.deb阻止了这种情况,在编辑时,bash_4.3-9.2_amd64.deb处于稳定和不稳定状态,但在Jessie / testing中却没有。

要为Jessie修复此问题,请从不稳定的版本中获取最新的Bash并使用进行安装dpkg -i

Jemenake提供

wget http://ftp.debian.org/debian/pool/main/b/bash/bash_4.3-9.2_$(dpkg --print-architecture).deb

作为将为您的计算机获取4.3-9.2版本的命令。

然后,您可以执行以下操作:

sudo dpkg -i bash_4.3-9.2_$(dpkg --print-architecture).deb

安装它。

如果您需要进一步的不稳定斑块为您杰西系统,这显然是走(路比照)。

Answers:


5

通过此链接从不稳定下载包。您也可以在那里检查依赖关系,尽管看起来不稳定的bash与测试的bash具有相同的依赖关系。使用以下命令安装下载的deb。

dpkg -i

1
谢谢,我做到了,它解决了问题,而没有明显破坏任何东西。大概它将在正常的更新过程中最终被覆盖吗?
约翰·劳伦斯·阿斯普登

3
如果您在GUI中运行浏览器,则上面的链接很好。如果您在Shell会话中运行lynx,则不需要这样。如果您希望将某些内容粘贴到命令行中以进行抓取,请尝试: wget http://ftp.debian.org/debian/pool/main/b/bash/bash_4.3-9.1_$(dpkg --print-architecture).deb 它会为您的盒子提供正确的体系结构。
Jemenake

1
@Jemenake您应该将其发布为单独的答案。
Excellll 2014年

这绝对是我想要的答案,但是既然已经更新到了Jessie,我认为如果接受的答案是现在所需要的人会更好,所以我动议了。不过谢谢!
约翰·劳伦斯·阿斯普登

实际上,有两个shellshock bug,第二个bug的修复程序现在是sid而不是jessie,因此,这实际上仍然是正确的答案(请确保您获得4.3-9.2!),尽管毫无疑问,情况将会解决不久。
约翰·劳伦斯·阿斯普登

25

对于周一发布的其他bash修复程序,我已经对此答案进行了编辑。

对于Ubuntu 12.04,我运行了一个更新,但还必须运行bash的安装才能摆脱该漏洞。

root@host:/home/ubuntu# env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
vulnerable
this is a test

该命令显示系统容易受到攻击,因此请运行更新。

apt-get update && apt-get -y upgrade

再次测试。

root@host:/home/ubuntu# env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
vulnerable
this is a test

仍然脆弱。

apt-get install -y bash

再次测试。

root@host:/home/ubuntu# env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
this is a test

编辑:发布了其他补丁程序后,输出已更改。

root@host:/home/ubuntu# env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
this is a test

好极了!固定。这应该适用于其他版本,但是我没有在12.04以后进行测试。

另外,runamok在下面的回复效果很好,请给他投票!


6
只是apt-get update && apt-get install -y bash似乎工作。
runamok

根据@JabawokJayUK的回答,在Ubuntu 12.04中bash更新后,我仍然无法通过首次测试。
Birla 2014年

我只是得到this is a test但不是错误和警告。在我的本地计算机上,我确实得到了错误,但是在我的服务器上却没有。这是什么意思?我的服务器是否打过补丁?谢谢。
ElBaulP 2014年

看来该存储库是最新的,因为我不必执行apt-get install -y步骤,因此升级后问题已得到解决。
user316566 2014年

1
这确实不能回答有关Debian测试/ jessie 的问题。Ubuntu是一个不同的发行版,具有独立的软件包存储库和补丁计划。
鲍勃

16

无需从Debian 7(Wheezy)获取软件包的Debian 6.0(Squeeze)的替代方案:

使用已向后移植补丁的LTS安全存储库。

将此添加到/etc/apt/sources.list

#LTS security
deb http://http.debian.net/debian/ squeeze-lts main contrib non-free
deb-src http://http.debian.net/debian/ squeeze-lts main contrib non-free

然后运行apt-get update && apt-get install bash

通过:linuxquestions


适用于debian6。我们始终将LTC安全性列在清单中!
stanleyxu2005

4

apt-get update之前apt-get dist-upgrade,您将获得补丁。我自己做了,并且进行了一次bash升级,从而解决了该问题。


2
问题是Debian测试还没有更新的软件包,因此从不稳定的版本手动下载并安装是当时最简单的解决方案。该答案给出的解决方案将行不通。(也许到现在为止,因为软件包可能已经迁移到测试中了。)
wurtel 2014年

这并不能回答最初的问题,但是这是人们现在需要做的,因此我接受了它,这是人们首先看到的。解决我难题的“真正”答案(处于不稳定状态且处于稳定状态,但未进行测试)是wurtel的答案,即使用新bash-????。deb和dpkg -i的手动下载。
约翰·劳伦斯·阿斯普登

我也认为这是Ubuntu的解决方案,因为他们已经正确地推送了其修复程序,并且可能适用于任何其他基于debian的发行版,该发行版仍保持着人们推送修复程序的地步。
约翰·劳伦斯·阿斯普登

实际上,有两个Shellshock错误,而第二个错误的修复还没有解决jessie。
约翰·劳伦斯·阿斯普登

只要Debian测试安全团队正在推动更新,这仍然是有效的解决方案。他们在OP提问时可能没有进行测试。另一种选择是将所有用户设置为使用Dash。这主要是服务器问题,而不是
MGD_Toronto 2014年

3

我通过以下方式将其固定在Hackintosh上

$ brew install bash

$ x='() { :;}; echo vulnerable' bash
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
bash-4.3$ 

2
不要忘记在...之前安装啤酒
Marcos Maciel 2014年

1

我写了一篇关于在旧版本的Ubuntu上如何使用apt-get做到这一点的文章。您基本上将您的sources.list更新为最新的,然后运行apt-get update和upgrade bash。您可以逐步阅读它,也可以从此处复制粘贴它。

摘要:

sudo sed -i 's/YOUR_OS_CODENAME/trusty/g' /etc/apt/sources.list
sudo apt-get update
sudo apt-get install --only-upgrade bash

如果您使用old-releases.ubuntu.com,请阅读该文章,并且不要忘记您可能想将其更改回:

sudo sed -i 's/trusty/YOUR_OS_CODENAME/g' /etc/apt/sources.list

呃……这将使您的系统在sources.list中具有Trusty。下次更新时,系统将升级到Trusty。这将严重破坏您的系统。
凌晨

1

Bash软件包的固定版本(请参阅changelog)现在在Debian 8(Jessie)中(请参阅软件包信息),截至UTC 2014-09-26 14:18。

下面的注释中提到的第二个修复程序现在也位于Jessie存储库中。无需从不稳定版本进行安装。请参阅上方的包装信息链接。

不再需要从不稳定版本进行安装。

赶紧跑:

# aptitude update

其次是:

# aptitude upgrade

然后验证漏洞是否消失(在新打开的外壳中):

$ x='() { :;}; echo vulnerable' bash
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'

尚未解决后续的CVE-2014-7169。
鲍勃

@Bob,我认为这仅与Ubuntu相关?大概Ubuntu已经修复了它。
约翰·劳伦斯·阿斯普登

@JohnLawrenceAspden不。尝试运行env X='() { (a)=>\' bash -c "echo echo vuln"; [[ "$(cat echo)" == "vuln" ]] && echo "still vulnerable :("-如果它显示still vulnerable,则后一个vuln尚未修补。AFAIK,杰西仍然很脆弱。请注意,echo如果成功,该命令将在当前目录中创建一个名为的文件,并且您需要在重新运行测试之前将其删除。
鲍勃

@Bob,我无法为此做头或尾,分号的作用是什么?
约翰·劳伦斯·阿斯普登

@Bob,但是无论执行什么操作,您都是对的,如果在不稳定的情况下升级到4.3-9.2版本会阻止它!
约翰·劳伦斯·阿斯普登
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.