Created: 2014-10-01 18:57 | Updated: 2014-10-01 18:57 |
Apresento a seguir o procedimento de atualização do Bash com a finalidade de remover a vulnerabilidade conhecida como shellshock.
Este procedimento foi testado nas versões 5, 6 e 7 do Debian, mas deve funcionar sem problemas nas demais versões e distribuições Linux.
O importante é o seguinte: sempre dê preferência pela atualização dos softwares de sua distribuição Linux utilizando os pacotes disponíveis no repositório da distribuição. O procedimento a seguir é manual, isto é, não utiliza os pacotes oficiais da distribuição. Quando isto é executado, as atualizações do referido software (ou pacote) não mais serão efetuadas pelo seu gerenciador de pacotes o que significa, no final das contas, que todas as atualizações deverão ser realizadas manualmente.
Outra informação importante: como a atualização é manual e a partir do código fonte, ela deve funcionar em todas as distribuições, mas podem ser necessários alguns ajustes. Portanto, execute o procedimento a seguir por sua conta e risco, preferencialmente num ambiente controlado antes de aplicá-lo a servidores de produção.
Como root, crie um diretório de trabalho:
mkdir lixo
cd lixo
Agora, crie um diretório para armazenar e compilar os Bash:
mkdir bash
cd bash
Baixe a última versão do Bash e os respectivos patches:
wget -c http://ftp.gnu.org/gnu/bash/bash-4.3.tar.gz
# Baixar pacthes
for x in $(seq -f "%03g" 0 27) ; do
wget http://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-$x;
done
Agora vamos descompactar o código fonte do Bash, aplicar os patches, configurar e compilar:
tar xzvf bash-4.3.tar.gz
cd bash-4.3
# Aplicação dos patches
for x in $(seq -f "%03g" 0 27) ; do patch -p0 < ../bash43-$x ; done
# Configurar, compilar e instalar
./configure
make
# Install
make install
Agora vamos ativar o uso do Bash: faça uma cópia de segurança do Bash atual para o caso de ocorrerem problemas, e crie um link para o novo Bash:
cd /bin
mv bash bash.OLD
ln -sf /usr/local/bin/bash /bin/bash
Antes de fechar seu console de acesso, acesse o sistema através de um outro console (ALT-F2 por exemplo, se você estiver trabalhando diretamente no computador), ou acesse-o via rede (SSH) e teste se o novo Bash funcionou:
mario@xkzy4 ~$ bash --version
GNU bash, version 4.3.27(1)-release (i686-pc-linux-gnu)
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Veja a versão do Bash (4.3.27). Agora, verifique se a falha foi corrigida:
mario@xkzy4 ~$ env X="() { :;} ; echo shellshock" bash -c "echo completed"
completed
Se algo der errado, restaure o Bash anterior até que você tenha encontrado a causa do problema.
Fui.