Como faço para corrigir a vulnerabilidade do shellshock em um sistema Ubuntu obsoleto que não posso atualizar?

22

Eu tenho um sistema que eu administro remotamente (2 fusos horários de distância) que roda o Ubuntu 9.04, o Jaunty. Por várias razões, principalmente porque estou realmente preocupado em tentar fazer uma atualização de distribuição tão distante, não posso atualizá-lo para uma versão mais recente. Obviamente, não há mais suporte e não há patches oficiais. Existem instruções disponíveis sobre como posso corrigir o código e recompilar-me para remover as vulnerabilidades do shellshock?

    
por Claus 25.09.2014 / 19:50

4 respostas

29

Roubei isso de AskUbuntu , de alguém que roubou o Hacker News. Trabalhei em dois servidores antigos para mim

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

Atualização: Acabei de notar que, se você não adicionar --prefix=/ ao comando de configuração, você acabará com /usr/local/bin/bash que está atualizado e /bin/bash ainda estará vulnerável.

    
por 25.09.2014 / 20:15
2

Existe também uma solução para atualizar o seu sources.list para o mais novo e depois usar o apt-get para atualizar apenas o bash. É muito rápido e escrevi um artigo sobre isto. Veja basicamente o que você faz:

Atualize para os repositórios apt-get 'confiáveis' do Ubuntu (você também pode precisar alterar as URLs old-repositories.ubuntu.com, se você usá-las, verifique o artigo vinculado):

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

Atualizar bash / aplicar correção:

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

E possivelmente altere os repositórios do apt-get.

    
por 25.09.2014 / 23:37
-1

O comando deve ser

sudo apt-get update && sudo apt-get install --only-upgrade bash
    
por 27.09.2014 / 07:33
-3

Uma opção simples é simplesmente não usar o bash. Certifique-se de que dash esteja instalado e que /bin/sh seja um link simbólico para dash , não bash . (Este é o padrão em algumas versões do Debian, mas eu não tenho certeza sobre o Ubuntu.) Se você possui contas de usuário para acesso ssh com comandos forçados, você precisa alterar seus shells de login também. Você também pode precisar verificar quaisquer scripts explicitamente usando o bash; grepping para #!/bin/bash deve encontrá-los.

    
por 26.09.2014 / 08:23