在不支持的Ubuntu服务器上修复Shellshock Bash错误的build议方法是什么?

我维护一个不支持的Ubuntu 12.10(Quantal Quetzal)服务器(请不要问我为什么),我们需要修补Shellshock Bash安全漏洞。 由于升级不再可用,build议修补Bash的方法是什么?

我发现这个答案 (它build议从Debian检索软件包,不安装二进制文件包 ,但从安装软件包)。 这对我来说似乎可以,但是还有什么其他的build议?

这篇文章对于Ubuntu 12.10(Quantal)我仍然需要支持的几个实例很有帮助。

解决Bash利用Ubuntu的新旧版本问题

总之,步骤是:

  1. 获取当前版本的代号(例如量子)并将其存储在一个variables中:

    lsb_release -a DISTRIB_CODENAME=quantal 
  2. 将源更改为/etc/apt/sources.list中的/etc/apt/sources.list 。 例如,

     sudo sed -i "s/$DISTRIB_CODENAME/trusty/g" /etc/apt/sources.list 
  3. 更新和升级bash

     sudo apt-get update sudo apt-get install --only-upgrade bash 
  4. validation最新版本未能通过以下testing(即,您不应该看到“已被破坏”)

     env X="() { :;} ; echo busted" `which bash` -c "echo completed" 
  5. 恢复/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的地&#x65B9;

祝你好运

由于您只应该从公认的提供商那里安装这种安全更新,所以您只能从源代码编译解决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。