Versões herdadas do Debian e Bash Shellshock

11

Estamos executando o Debian Etch, Lenny e Squeeze porque as atualizações nunca foram feitas nesta loja; Temos mais de 150 sistemas executando várias versões do Debian. À luz do "choque de shell" desta semana, presumo que precise atualizar o bash. Eu não conheço o Debian, então estou preocupado.

Posso apenas executar apt-get install bashem todos os meus sistemas Debian e obter o pacote Bash correto enquanto meu repositório está apontado para uma entrada Squeeze. Caso contrário, que outro curso de ação eu tenho?

DavidH
fonte
7
você poderia seletivamente backport bash para esses sistemas. ele vai provavelmente ser executado ok sobre eles. Mas você realmente deve atualizar. Você percebe que algo mais antigo que o oldstable não possui atualizações de segurança, certo? E lembre-se de que essa vulnerabilidade é apenas uma dentre muitas.
Faheem Mitha 26/09/14
É mesmo um problema? O que há system shellnesse sistema? (Ou seja, o shell que você obtém ao executar a systemchamada POSIX, que é / bin / sh). Se / bin / sh for bash, você precisará atualizar. Se não estiver ... Então você provavelmente está bem (mas deve atualizar-se de qualquer maneira)
Arafangion

Respostas:

11

Você tem a opção de apenas atualizar o bash. Para fazer isso, use o seguinte apt-getcomando:

apt-get update

Depois que a atualização buscar, todas as atualizações disponíveis serão executadas:

apt-get install --only-upgrade bash

Para obter atualizações sobre versões mais antigas, Squeeze, por exemplo, você provavelmente precisará adicionar o repositório Squeeze-LTS ao seu sources.list.

Para adicionar este repositório, edite /etc/apt/sources.liste adicione a seguinte linha ao final do arquivo.

deb http://ftp.us.debian.org/debian squeeze-lts main non-free contrib

Para verificar se há vulnerabilidades em um sistema específico (ou se a atualização funciona), verifique as versões do bash que você está usando e se a versão foi afetada (provavelmente é) ou se existem vários scripts de teste de shell disponíveis na Web.

EDIT 1

Para atualizar bashem Lenny ou Etch, dê uma olhada na resposta de Ilya Sheershoff abaixo para saber como compilar a bashpartir do código-fonte e atualizar manualmente a versão bashque seu release está usando.

EDIT 2

Aqui está um sources.listarquivo de exemplo de um servidor Squeeze que eu atualizei com êxito:

deb http://ftp.us.debian.org/debian/ squeeze main
deb-src http://ftp.us.debian.org/debian/ squeeze main

deb http://security.debian.org/ squeeze/updates main
deb-src http://security.debian.org/ squeeze/updates main

# squeeze-updates, previously known as 'volatile'
deb http://ftp.us.debian.org/debian/ squeeze-updates main
deb-src http://ftp.us.debian.org/debian/ squeeze-updates main

# Other - Adding the lsb source for security updates
deb http://http.debian.net/debian/ squeeze-lts main contrib non-free
deb-src http://http.debian.net/debian/ squeeze-lts main contrib non-free
111 ---
fonte
Um novato pode não saber que precisa executar o apt-get update primeiro, para obter o catálogo de pacotes mais recente.
Brenda J. Butler
Eu tive que usar: deb ftp.us.debian.org/debian squeeze contrib principal para atualizar o bash para a versão 4.1-3 e depois usar as fontes corrigidas para torná-lo vulnerável.
@ BrendaJ.Butler Boa sugestão, eu adicionei essa etapa também.
111 ---
4

Se a apt-get installopção não funcionar, você precisará recompilar o bash a partir das fontes. Os exemplos de Lenny e Etch estão na resposta. Eu não tenho nenhuma máquina Squeeze, mas é fácil descobrir o que fazer.

A solução do TaNNkoST que encontrei na rede:

Verifique o número de correções disponíveis e altere o número na parte "(seq" se houver novas).

PARA LENNY

#first find out the version you have so you know what to get for the patches and source files
dpkg-query -l|grep bash
ii bash 4.1-3 The GNU Bourne Again SHell

#do this in the /usr/src dir
cd /usr/src
wget http://ftp.gnu.org/gnu/bash/bash-4.1.tar.gz
tar zxvf bash-4.1.tar.gz
cd bash-4.1

# fetch all patches, including latest ones that patches CVE-2014-6271
for i in $(seq -f "%03g" 0 14); do
wget -nv http://ftp.gnu.org/gnu/bash/bash-4.1-patches/bash41-$i
patch -p0 < bash41-$i
done

# check if yacc is installed. if not - install yacc
apt-get install bison

# configure,compile and install bash (this will install bash into /usr/local/bin/bash)
./configure && make
make install

# make a symlink from /bin/bash to the new binary
mv /bin/bash /bin/bash.old
ln -s /usr/local/bin/bash /bin/bash

# check that you're not vulnerable anymore wiith the output of the following
# it should not output vulnerable word anymore
env x='() { :;}; echo vulnerable' bash -c echo

#you can  Delete the old one thats a problem
rm /bin/bash.old

FOR ETCH Eu segui a mesma lógica, mas não fui yaccinstalado no sistema, então tive que instalar o bisonpacote para isso. Aqui está o que eu vim com:

#first find out the version you have so you know what to get for the patches and source files
dpkg-query -l|grep bash
ii bash 3.2-4 The GNU Bourne Again SHell

#do this in the /usr/src dir
cd /usr/src
wget http://ftp.gnu.org/gnu/bash/bash-3.2.tar.gz
tar zxvf bash-3.2.tar.gz
cd bash-3.2

# fetch all patches, including latest ones that patches CVE-2014-6271
for i in $(seq -f "%03g" 0 54); do
wget -nv http://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-$i
patch -p0 < bash32-$i
done

# check if yacc is installed. if not - install yacc
apt-get install bison

# configure,compile and install bash (this will install bash into /usr/local/bin/bash)
./configure && make
make install

# at this point my system is not vulnerable already, test your system
env VAR='() { :;}; echo Bash is vulnerable!' bash -c "echo Bash Test"

# if this is not the case for your system - try the following

# make a symlink from /bin/bash to the new binary
mv /bin/bash /bin/bash.old
ln -s /usr/local/bin/bash /bin/bash

# check that you're not vulnerable anymore wiith the output of the following
# it should not output vulnerable word anymore
env x='() { :;}; echo vulnerable' bash -c echo

#you can Delete the old one thats a problem
rm /bin/bash.old
Ilya Sheershoff
fonte
1
Descobri que recebi o erro make: yacc: Command not foundda solução Lenny e o corrigi usando apt-get install bison.
SharpC
1

Não tenho certeza se você deseja confiar nesses pacotes, mas alguém criou pacotes para o woody (3.0), sarge (3.1), etch (4.0) e lenny (5.0). Eles estão disponíveis aqui:

http://blog.bofh.it/debian/id_451

Cuidado, não há repositório para instalar esses pacotes via apt-get. Você precisa usar dpkgou criar seu próprio repositório local.

tlo
fonte
" se você quiser confiar nesses pacotes "? Eles são assinados com a chave GPG de um desenvolvedor Debian. Assim como qualquer outro pacote oficial do Debian.
peppe
0

Para atualizar o Bash em vários sistemas operacionais diferentes, você pode usar o script universal Deshellshock .

Apóstolo
fonte