如何修补无法升级的过时 Ubuntu 系统上的 shellshock 漏洞?

如何修补无法升级的过时 Ubuntu 系统上的 shellshock 漏洞?

我有一个远程管理的系统(相隔 2 个时区),它运行的是 Ubuntu 9.04,Jaunty。出于各种原因,主要是我对从这么远的地方尝试进行发行版升级非常谨慎,我无法将其升级到较新的版本。显然它不再受支持,并且没有任何官方补丁。有没有关于如何修补代码并自行重新编译 bash 以消除 shellshock 漏洞的说明?

答案1

偷自询问Ubuntu,来自 Hacker News 上的一个窃取者。在我两台旧服务器上都用过

mkdir src
cd src
wget http://ftp.gnu.org/gnu/bash/bash-4.3.tar.gz
#download all patches
for i in $(seq -f "%03g" 1 28); do wget http://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-$i; done
tar zxvf bash-4.3.tar.gz 
cd bash-4.3
#apply all patches
for i in $(seq -f "%03g" 1 28);do patch -p0 < ../bash43-$i; done
#build and install
./configure --prefix=/ && make && make install
cd .. 
cd ..
rm -r src

更新:我刚刚注意到如果你不添加--prefix=/配置命令,你最终会得到/usr/local/bin/bash最新的并且/bin/bash仍然容易受到攻击。

答案2

还有一个解决方案,就是将 sources.list 更新为最新版本,然后使用 apt-get 仅升级 bash。这非常快捷,而且我写了一篇文章了解它。你基本上需要做的是:

升级到最新的 Ubuntu“可信”apt-get 存储库(如果您使用 old-repositories.ubuntu.com URL,可能还需要更改它们,请查看链接文章):

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

升级 bash/应用修复:

sudo apt-get update
sudo apt-get install --only-upgrade bash

并可能改回 apt-get 存储库。

答案3

命令应该是

sudo apt-get update && sudo apt-get install --only-upgrade bash

答案4

一个简单的选择就是不使用 bash。确保dash已安装,并且/bin/sh是指向 的符号链接dash,而不是bash。(这是某些 Debian 版本的默认设置,但我不确定 Ubuntu 是否如此。)如果您有使用强制命令进行 ssh 访问的用户帐户,您也需要更改他们的登录 shell。您可能还需要使用 bash 明确检查任何脚本;grepping for#!/bin/bash应该可以找到它们。

相关内容