Como corrijo a vulnerabilidade de segurança do Shellshock no debian testing / jessie?

24

O comando de teste

x='() { :;}; echo vulnerable' bash

mostra que minha instalação do Debian 8 (Jessie) é vulnerável, mesmo com as atualizações mais recentes. A pesquisa mostra que há um patch para estável e instável, mas esse teste é sem patch.

Eu acho que o patch chegará aos testes em alguns dias, mas isso realmente parece desagradável o suficiente para ser paranóico. Existe alguma maneira de obter o pacote instável e instalá-lo sem interromper o meu sistema? A atualização para instável parece causar mais problemas do que resolve.


Segundo Bob, existe uma segunda vulnerabilidade do Shellshock, que é corrigida em um segundo patch. O teste para isso deve ser:

 env X='() { (a)=>\' bash -c "echo echo vuln"; [[ "$(cat echo)" == "vuln" ]] && echo "still vulnerable :("

Mas não tenho habilidade suficiente no Bash para descobrir o que isso significa ou por que é um problema. De qualquer forma, ele faz algo estranho, impedido pelo bash_4.3-9.2_amd64.deb em sistemas de 64 bits, que no momento da edição é estável e instável, mas não em Jessie / testing.

Para corrigir isso para Jessie , instale o Bash mais recente e instale-o dpkg -i.

Jemenake oferece

wget http://ftp.debian.org/debian/pool/main/b/bash/bash_4.3-9.2_$(dpkg --print-architecture).deb

como um comando que obterá a versão 4.3-9.2 para sua máquina.

E você pode acompanhar isso com:

sudo dpkg -i bash_4.3-9.2_$(dpkg --print-architecture).deb

para instalá-lo.

Se você precisar de mais patches instáveis ​​para o seu sistema Jessie , este é claramente o caminho a seguir ( mutatis mutandis ).

John Lawrence Aspden
fonte

Respostas:

5

Baixe o pacote da instável através deste link . Você também pode verificar as dependências lá, embora pareça que o bash instável tem as mesmas dependências que o bash do teste. Instale o deb baixado com o seguinte.

dpkg -i
Wurtel
fonte
1
Obrigado, fiz isso e resolveu o problema sem destruir visivelmente nada. Presumivelmente, ele será substituído no curso normal das atualizações?
John Lawrence Aspden
3
O link acima é bom se você estiver executando um navegador em uma GUI. Menos ainda, se você estiver executando o lynx em uma sessão shell. Se você quiser algo que possa colar diretamente na linha de comando, tente: wget http://ftp.debian.org/debian/pool/main/b/bash/bash_4.3-9.1_$(dpkg --print-architecture).deb Ele obterá a arquitetura certa para sua caixa.
Jemenake
1
@Jemenake Você deve postar isso como uma resposta separada.
Excellll
Definitivamente, essa era a resposta que eu queria, mas agora que a atualização chegou a Jessie, acho que é melhor que a resposta aceita seja a que as pessoas procuram agora, então estou mudando. Obrigado embora!
John Lawrence Aspden
Na verdade, existem dois bugs de shellshock, e a correção para o segundo agora está no sid, mas não no jessie, portanto essa ainda é a resposta certa (certifique-se de obter de 4,3 a 9,2!), Embora sem dúvida a situação resolva em breve.
John Lawrence Aspden
25

Editei esta resposta para as correções adicionais do bash lançadas na segunda-feira.

Para o Ubuntu 12.04, executei uma atualização, mas também tive que executar a instalação do bash para se livrar da vulnerabilidade.

root@host:/home/ubuntu# env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
vulnerable
this is a test

Esse comando mostra que o sistema está vulnerável, portanto, execute a atualização.

apt-get update && apt-get -y upgrade

Teste novamente.

root@host:/home/ubuntu# env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
vulnerable
this is a test

Ainda vulnerável.

apt-get install -y bash

Teste novamente.

root@host:/home/ubuntu# env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
this is a test

Edit: Depois que os patches adicionais foram lançados, a saída foi alterada.

root@host:/home/ubuntu# env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
this is a test

Yay! Fixo. Isso deve funcionar para outras versões, mas não testei além da versão 12.04.

Além disso, a resposta de runamok abaixo funciona bem, então dê a ele um voto positivo!

Tom Damon
fonte
6
Apenas apt-get update && apt-get install -y bashparece funcionar.
runamok
Com base na resposta de @JabawokJayUK, ainda estou falhando no primeiro teste após a atualização do bash no Ubuntu 12.04.
Birla
Estou apenas recebendo, this is a testmas não o erro e o aviso. Na minha máquina local, recebo o erro, mas no meu servidor não. O que isso mede? Meu servidor está corrigido? Obrigado.
ElBaulP
Parece que o repositório está atualizado agora, porque eu não precisei executar a etapa apt-get install -y, o problema foi resolvido já após a atualização.
user316566
1
Isso realmente não responde à pergunta sobre o Debian testing / jessie. O Ubuntu é uma distribuição diferente com repositórios de pacotes independentes e programações de patches.
Bob
16

Uma alternativa para o Debian 6.0 (Squeeze) sem buscar pacotes do Debian 7 (Wheezy):

Use o repositório de segurança LTS que possui o patch suportado.

Adicione isto a /etc/apt/sources.list:

#LTS security
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

Então corra apt-get update && apt-get install bash.

Via: linuxquestions

poncha
fonte
Funciona para o debian 6. Sempre manteríamos a segurança LTC na lista!
precisa saber é o seguinte
4

apt-get updateantes apt-get dist-upgradee você receberá o patch. Acabei de fazer isso sozinho e houve uma atualização do bash que resolve o problema.

MGD_Toronto
fonte
2
O problema era que os testes do Debian ainda não tinham o pacote atualizado, então baixá-lo manualmente da instável e instalar a solução mais simples da época; a solução dada nesta resposta não teria funcionado. (Talvez agora ele vai, porque o pacote pode ter migrado para testar.)
wurtel
Isso não responde à pergunta original, mas é o que as pessoas precisam fazer agora, por isso estou aceitando que seja a primeira coisa que as pessoas verão. A resposta 'real' para minha dificuldade (é instável e estável, mas não em teste) é a resposta de wurtel usando o download manual do novo bash - ????. Deb e dpkg -i.
John Lawrence Aspden
Eu também acho que essa é a resposta para o Ubuntu, agora que eles corrigiram suas correções corretamente e provavelmente para qualquer outra distribuição baseada em debian que ainda é mantida até o ponto em que as pessoas fizeram correções.
John Lawrence Aspden
Na verdade, existem dois erros de shellshock e a correção para o segundo ainda não chegou a Jessie.
John Lawrence Aspden
Essa ainda é uma solução válida e permanecerá assim enquanto a equipe de segurança de testes do Debian enviar atualizações; eles podem não ter testado no momento da pergunta do OP. Uma outra opção é definir todos os usuários para usar o Dash. Isto é principalmente um problema de servidor e não
MGD_Toronto
3

Corrigi-o no meu Hackintosh :

$ brew install bash

$ x='() { :;}; echo vulnerable' bash
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
bash-4.3$ 
Marcos Maciel
fonte
2
não se esqueça de instalar a bebida antes ...
Marcos Maciel
1

Eu escrevi um artigo sobre como fazer isso com o apt-get em versões antigas do Ubuntu. Você basicamente atualiza seu sources.list para o mais novo e depois executa o apt-get update e upgrade bash. Você pode ler passo a passo ou copipaste a partir daqui .

Resumo:

sudo sed -i 's/YOUR_OS_CODENAME/trusty/g' /etc/apt/sources.list
sudo apt-get update
sudo apt-get install --only-upgrade bash

Leia o artigo se você usa old-releases.ubuntu.com e não se esqueça de que você pode querer alterá-lo novamente:

sudo sed -i 's/trusty/YOUR_OS_CODENAME/g' /etc/apt/sources.list
Erik Duindam
fonte
isso deixará seu sistema com o Trusty em sources.list. na próxima atualização, o sistema será atualizado para o Trusty. isso vai quebrar o seu sistema.
strugee
1

A versão fixa (consulte o changelog ) do pacote Bash está no Debian 8 (Jessie) agora (consulte as informações do pacote ), a partir de 26/09/2014 - 14:18 UTC.

A segunda correção, mencionada nos comentários abaixo, também está no repositório Jessie agora. Não há necessidade de instalar a partir do instável. Veja o link de informações do pacote acima.

Não é mais necessário instalar a partir do unstable.

Apenas corra:

# aptitude update

Seguido por:

# aptitude upgrade

Em seguida, verifique se a vulnerabilidade desapareceu (em um shell recém-aberto):

$ x='() { :;}; echo vulnerable' bash
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
dubadu
fonte
Ainda não corrigiu o acompanhamento CVE-2014-7169.
Bob
@ Bob, acho que isso é relevante apenas para o Ubuntu? E, presumivelmente, o Ubuntu já o corrigiu.
John Lawrence Aspden
@JohnLawrenceAspden Nope. Tente correr env X='() { (a)=>\' bash -c "echo echo vuln"; [[ "$(cat echo)" == "vuln" ]] && echo "still vulnerable :("- se for impresso still vulnerable, o último vuln ainda não está corrigido. AFAIK, Jessie ainda é vulnerável. Observe que esse comando criará um arquivo nomeado echono diretório atual se for bem-sucedido e você precisará excluí-lo antes de executar novamente o teste.
Bob
@ Bob, eu não consigo entender isso, o que está acontecendo com o ponto e vírgula?
John Lawrence Aspden
@ Bob, mas o que quer que faça, você está certo que a atualização para a versão 4.3-9.2 na instável impede!
John Lawrence Aspden