在不受支持的 Ubuntu 服务器上修补 Shellshock Bash 错误的推荐方法是什么?

smo*_*nff 6 ubuntu debian bash upgrade

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

我找到了这个答案(它建议从 Debian 检索包,而不是安装二进制包,而是从源安装包)。这对我来说似乎没问题,但还有什么其他建议?

小智 13

这篇文章很有帮助,并且适用于我仍然需要支持的少数 Ubuntu 12.10 (Quantal) 实例。

修复 Ubuntu 新旧版本上的 Bash 漏洞利用

总之,步骤是:

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

    lsb_release -a
    DISTRIB_CODENAME=quantal
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将 source 更改为 trusty in /etc/apt/sources.list。例如,

    sudo sed -i "s/$DISTRIB_CODENAME/trusty/g" /etc/apt/sources.list
    
    Run Code Online (Sandbox Code Playgroud)
  3. 更新和升级bash

    sudo apt-get update
    
    sudo apt-get install --only-upgrade bash
    
    Run Code Online (Sandbox Code Playgroud)
  4. 验证最新版本未通过以下测试(即您不应看到“破坏”)

    env X="() { :;} ; echo busted" `which bash` -c "echo completed"
    
    Run Code Online (Sandbox Code Playgroud)
  5. 恢复 /etc/apt/sources.list 以使用当前的代号。例如,

    sudo sed -i "s/trusty/$DISTRIB_CODENAME/g" /etc/apt/sources.list
    
    Run Code Online (Sandbox Code Playgroud)

  • 很好的答案,我正在寻找这样的东西 (3认同)

Cra*_*aig 8

https://shellshocker.net/#fix有一些很好的工具可以手动更新 bash。

curl https://shellshocker.net/fixbash | sh
Run Code Online (Sandbox Code Playgroud)

您还可以测试您的系统是否易受攻击:

curl https://shellshocker.net/shellshock_test.sh | bash
Run Code Online (Sandbox Code Playgroud)

运行它需要您自担风险。如果上述链接过期或您不想信任它,它会运行以下脚本:

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
Run Code Online (Sandbox Code Playgroud)

https://github.com/wreiske/shellshocker/blob/master/fixbash是可以找到脚本的地方

祝你好运

  • 通过使用管道传输到 bash 的网站 URL 来修复 bash 漏洞的想法有点可怕(即使它们看起来确实是合法的)。 (13认同)
  • @ceejayoz - 我确实通过在运行之前先下载来检查脚本。当然,这并不能保证每次运行时都会得到相同的脚本,因此运行此脚本的风险由您自己承担。最好的办法是先下载下来检查,然后在本地运行。 (2认同)

Pie*_*ier 5

由于您应该只从公认的提供商处安装此类安全更新,因此从源代码编译的解决方案是您唯一拥有的解决方案。