旧版Debian版本和Bash Shellshock


11

我们正在运行Debian Etch,Lenny和Squeeze,因为该商店从未进行过升级。我们有150多个运行各种Debian版本的系统。鉴于本周的“外壳冲击”,我认为我需要升级bash。我不了解Debian,所以我很担心。

我可以在我的apt-get install bash所有Debian系统上执行并获得正确的Bash软件包,而我的存储库却指向一个Squeeze条目。如果没有,我还有什么其他行动方针?


7
您可以选择性地将bash移植到那些系统。它可能会在他们身上运行正常。但是您确实应该升级。您意识到任何比oldstable更旧的版本都没有安全更新,对吗?请记住,此安全漏洞仅是其中之一。
Faheem Mitha 2014年

甚至有问题吗?什么是system shell该系统上?(即运行systemPOSIX调用时获得的shell ,即/ bin / sh)。如果/ bin / sh是bash,则需要更新。如果不是...那您可能没事(但您还是应该更新bash本身)
Arafangion

Answers:


11

您可以选择仅升级bash。为此,请使用以下apt-get命令:

apt-get update

然后,在获取更新后,运行所有可用更新:

apt-get install --only-upgrade bash

要获取旧版本的更新,例如,Squeeze,您可能需要将Squeeze-LTS存储库添加到您的sources.list。

要添加此存储库,请编辑/etc/apt/sources.list以下行并将其添加到文件末尾。

deb http://ftp.us.debian.org/debian squeeze-lts main non-free contrib

要检查特定系统的漏洞(或查看升级是否可行),您可以检查正在使用的bash版本,并查看该版本是否受到影响(可能是),或者Web上有许多可用的Shell测试脚本

编辑1

bash在Lenny或Etch上升级,请查看下面的Ilya Sheershoff的答案,以了解如何bash从源代码进行编译以及如何手动升级bash发行版所使用的版本。

编辑2

这是sources.list我成功升级的Squeeze服务器中的示例文件:

deb http://ftp.us.debian.org/debian/ squeeze main
deb-src http://ftp.us.debian.org/debian/ squeeze main

deb http://security.debian.org/ squeeze/updates main
deb-src http://security.debian.org/ squeeze/updates main

# squeeze-updates, previously known as 'volatile'
deb http://ftp.us.debian.org/debian/ squeeze-updates main
deb-src http://ftp.us.debian.org/debian/ squeeze-updates main

# Other - Adding the lsb source for security updates
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才能获取最新的软件包目录。
布伦达·J·巴特勒2014年

我不得不使用:deb ftp.us.debian.org/debian压榨主要贡献者将bash升级到版本4.1-3,然后使用修补的源使其不容易受到攻击。

@ BrendaJ.Butler很好的建议,我也添加了这一步。
111 ---

4

如果该apt-get install选项不起作用,则需要从源代码重新编译bash。答案就是Lenny和Etch的例子。我没有任何Squeeze机器,但是可以很容易地弄清楚该怎么做。

从TaNNkoST解决方案,我在网上找到:

检查可用补丁的数量,如果有新补丁,请更改“(seq”)部分中的补丁数量。

伦尼

#first find out the version you have so you know what to get for the patches and source files
dpkg-query -l|grep bash
ii bash 4.1-3 The GNU Bourne Again SHell

#do this in the /usr/src dir
cd /usr/src
wget http://ftp.gnu.org/gnu/bash/bash-4.1.tar.gz
tar zxvf bash-4.1.tar.gz
cd bash-4.1

# fetch all patches, including latest ones that patches CVE-2014-6271
for i in $(seq -f "%03g" 0 14); do
wget -nv http://ftp.gnu.org/gnu/bash/bash-4.1-patches/bash41-$i
patch -p0 < bash41-$i
done

# check if yacc is installed. if not - install yacc
apt-get install bison

# configure,compile and install bash (this will install bash into /usr/local/bin/bash)
./configure && make
make install

# make a symlink from /bin/bash to the new binary
mv /bin/bash /bin/bash.old
ln -s /usr/local/bin/bash /bin/bash

# check that you're not vulnerable anymore wiith the output of the following
# it should not output vulnerable word anymore
env x='() { :;}; echo vulnerable' bash -c echo

#you can  Delete the old one thats a problem
rm /bin/bash.old

对于ETCH,我遵循相同的逻辑,但是我尚未yacc安装在系统上,因此必须为此安装bison软件包。这是我想出的:

#first find out the version you have so you know what to get for the patches and source files
dpkg-query -l|grep bash
ii bash 3.2-4 The GNU Bourne Again SHell

#do this in the /usr/src dir
cd /usr/src
wget http://ftp.gnu.org/gnu/bash/bash-3.2.tar.gz
tar zxvf bash-3.2.tar.gz
cd bash-3.2

# fetch all patches, including latest ones that patches CVE-2014-6271
for i in $(seq -f "%03g" 0 54); do
wget -nv http://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-$i
patch -p0 < bash32-$i
done

# check if yacc is installed. if not - install yacc
apt-get install bison

# configure,compile and install bash (this will install bash into /usr/local/bin/bash)
./configure && make
make install

# at this point my system is not vulnerable already, test your system
env VAR='() { :;}; echo Bash is vulnerable!' bash -c "echo Bash Test"

# if this is not the case for your system - try the following

# make a symlink from /bin/bash to the new binary
mv /bin/bash /bin/bash.old
ln -s /usr/local/bin/bash /bin/bash

# check that you're not vulnerable anymore wiith the output of the following
# it should not output vulnerable word anymore
env x='() { :;}; echo vulnerable' bash -c echo

#you can Delete the old one thats a problem
rm /bin/bash.old

1
我发现make: yacc: Command not foundLenny解决方案出现错误,并使用进行了修复apt-get install bison
SharpC 2014年

1

不知道您是否要信任这些软件包,但是有人为woody(3.0),sarge(3.1),etch(4.0)和lenny(5.0)构建了软件包。它们在这里可用:

http://blog.bofh.it/debian/id_451

请注意,没有用于通过安装这些软件包的存储库apt-get。您需要使用dpkg或创建自己的本地存储库。


是否要信任这些软件包 ”?它们使用Debian开发人员的GPG密钥签名。就像任何其他官方 Debian软件包一样。
peppe 2014年

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.