Bash Shell, “Shellshock”, correção de bug de segurança (Ubuntu, CentOS).

Um administrador ou usuário de servidor Linux?

Uma vulnerabilidade de segurança recente foi descoberta no GNU Bourne Again Shell (Bash). Se você usa o sistema operacional Windows, pode parar de ler agora. 🙂 Caso contrário, você pode querer corrigir seu sistema operacional baseado em Unix: Ubuntu, CentOS, Fedora e um monte de outros caras legais.

A vulnerabilidade apelidada por alguns de “Shellshock”, foi supostamente encontrada em uso por um exploit ativo contra servidores web.

Então, aqui está como você proceder para não ser uma vítima.

Verifique o estado do seu bash:

  • Verifique se você está vulnerável executando isto em seu shell bash:

Comando abaixo:

env x='() { :;}; echo vulnerable' bash -c "echo this is a test"

Um sistema vulnerável produziria:

vulnerable
this is a test

Um sistema corrigido deve gerar:

bash: warning: x: ignoring function definition attempt
bash
: error importing function definition for `x'
this is a test

Consertar

  • Para Ubuntu, execute isto em seu Bash:

Comando abaixo:

sudo apt-get update && sudo apt-get upgrade

Isso baixa e instala todas as atualizações.

  • Para CentOS:

Comando abaixo:

yum update

Isso deve atualizar e corrigir seu bash junto com quaisquer outras atualizações.

Deixe-me saber se você tiver qualquer problema nos comentários.

Obrigado.

Fonte : Bash Bug

ATUALIZAR

Como @montanaflynn apontou nos comentários, a solução acima não funcionaria para versões mais antigas do Ubuntu.

Aqui está um script que ele adicionou para contornar isso

#!/bin/sh

GCC
=`which gcc`
if [ -z "$GCC" ]; then
echo
"Your system does not have the GNU gcc complier installed."
echo
"Please install the gcc complier and then run this script again."
exit 1
fi

echo
"Creating tmp folder..."
cd
/tmp
mkdir bash

cd bash

echo
"Downloading Bash..."
wget
-N https://ftp.gnu.org/gnu/bash/bash-4.3.tar.gz
echo
"Downloading Bash patches..."
while [ true ];
do i=`expr $i + 1`; wget -N https://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-$(printf '%03g' $i);
if [ $? -ne 0 ];
then break;
fi;
done
echo
"Extracting bash from tar.gz..."
tar zxvf bash
-4.3.tar.gz
cd bash
-4.3
echo
"Applying Patches..."
for p in `ls ../bash43-[0-9][0-9][0-9]`; do patch -p0 < $p; done

echo
"Ready to install. Configuring..."
./configure --prefix=/
echo
"Running make"
make

echo
"Running make install"
if [[ "$USER" == "root" ]]
then
make install

cp
/bin/bash /usr/local/bin/bash
else
sudo make install

sudo cp
/bin/bash /usr/local/bin/bash
fi

echo
"----------------------------------------------"
echo
"Now open a new bash shell to see if it's still vulnerable."

Copie o conteúdo, colar em um arquivo file.sh .
Execute file.sh como um script bash.

Obrigado @montanaflynn