我维护一个不支持的Ubuntu 12.10(Quantal Quetzal)服务器(请不要问我为什么),我们需要修补Shellshock Bash安全漏洞。 由于升级不再可用,build议修补Bash的方法是什么?
我发现这个答案 (它build议从Debian检索软件包,不安装二进制文件包 ,但从源安装软件包)。 这对我来说似乎可以,但是还有什么其他的build议?
这篇文章对于Ubuntu 12.10(Quantal)我仍然需要支持的几个实例很有帮助。
解决Bash利用Ubuntu的新旧版本问题
总之,步骤是:
获取当前版本的代号(例如量子)并将其存储在一个variables中:
lsb_release -a DISTRIB_CODENAME=quantal
将源更改为/etc/apt/sources.list
中的/etc/apt/sources.list
。 例如,
sudo sed -i "s/$DISTRIB_CODENAME/trusty/g" /etc/apt/sources.list
更新和升级bash
sudo apt-get update sudo apt-get install --only-upgrade bash
validation最新版本未能通过以下testing(即,您不应该看到“已被破坏”)
env X="() { :;} ; echo busted" `which bash` -c "echo completed"
恢复/etc/apt/sources.list以使用当前代号。 例如,
sudo sed -i "s/trusty/$DISTRIB_CODENAME/g" /etc/apt/sources.list
https://shellshocker.net/#fix有一些手动更新bash的好工具。
curl https://shellshocker.net/fixbash | sh
您也可以testing您的系统是否存在漏洞:
curl https://shellshocker.net/shellshock_test.sh | bash
运行需要您自担风险。 如果上面的链接到期,或者你不想相信它,这是它运行的脚本:
cd ~/ mkdir bash-shellshocker cd bash-shellshocker echo "Downloading Bash..." wget https://ftp.gnu.org/gnu/bash/bash-4.3.tar.gz echo "Downloading Bash patches..." i=0 rtn=0 while [ $rtn -eq 0 ]; do i=`expr $i + 1` wget https://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-$(printf '%03g' $i) rtn=$? done i=`expr $i - 1` echo "Extracting bash from tar.gz..." tar zxvf bash-4.3.tar.gz cd bash-4.3 echo "Applying Patches..." for j in $(seq -f "%03g" 1 $i);do patch -p0 < ../bash43-$j; done echo "Ready to install. Configuring..." ./configure --prefix=/ echo "Running make" make if [[ "$USER" == "root" ]] then echo "Running make install" make install cp /bin/bash /usr/local/bin/bash else echo "Running make install (You may need to type your sudo password here)" sudo make install sudo cp /bin/bash /usr/local/bin/bash fi
https://github.com/wreiske/shellshocker/blob/master/fixbash是脚本可以find的地方
祝你好运
由于您只应该从公认的提供商那里安装这种安全更新,所以您只能从源代码编译解决scheme。
lumpygator的回答帮助了我,但我认为这太复杂了。 如果你想从一个较新的Ubuntu发行版只安装一个软件包,不需要编辑sources.list
,你可以直接下载并安装它。 所以如果是bash shellshock bug,请到http://packages.ubuntu.com/trusty/amd64/bash/download ,点击“* security.ubuntu.com/ubuntu”链接,这会下载文件bash_4.3-7ubuntu1.5_amd64.deb
。 或者,您可以运行命令:
wget http://security.ubuntu.com/ubuntu/pool/main/b/bash/bash_4.3-7ubuntu1.5_amd64.deb
获得新软件包后,您可以直接使用以下软件安装它:
dpkg -i bash_4.3-7ubuntu1.5_amd64.deb
这在Saucy(13.10)上适用于我。
(如果你有一个32位系统,用i386replaceamd64。)
是的,由shellshocker.net提供的脚本正在工作。
但是对于Ubuntu 11.04(Natty Narwhal),11.10(Oneiric Ocelot),12.04 LTS(Precise穿山甲),12.10(Quantal Quetzal),13.04(Raring Ringtail)和13.10(Saucy Salamander),Bash包的版本是4.2,所以脚本需要做一些修改:
cd ~/ mkdir bash cd bash wget https://ftp.gnu.org/gnu/bash/bash-4.2.tar.gz for i in $(seq -f "%03g" 0 49); do wget https://ftp.gnu.org/gnu/bash/bash-4.2-patches/bash42-$i; done tar zxvf bash-4.2.tar.gz cd bash-4.2 for i in $(seq -f "%03g" 0 49); do patch -p0 < ../bash42-$i; done ./configure && make sudo make install
而且你必须安装Bison才能使“make”命令工作:
sudo apt-get install bison
还有另一种方法可以考虑。
在你的过时Quantal服务器是你实际上使用bash?
如果您不需要bash,那么如果您还没有用/ bin / dash链接replace/ bin / bash链接到/ bin / bash,请安装破折号并将其用作Bourne shellreplace。
这说明了为什么在shell脚本中不使用“bashisms”是可移植性的一个好主意,因此可以使用更简单,开销更小,更安全的dash shell。