Recentemente, surgiram notícias sobre o "CVE-2014-6271" (consulte USN-2362-1 ), que é uma vulnerabilidade no Bash. Como sei se sou afetado por isso, como posso corrigi-lo e por que devo me importar?
Isso foi desenvolvido como uma resposta canônica para essa vulnerabilidade, devido ao seu escopo e gravidade.
bash
security
shellshock
ζ--
fonte
fonte
Respostas:
O que é o Bash?
Bash é o shell interativo padrão no Ubuntu. Quando você está em interface com o terminal (através do emulador de terminal, sobre um tty ou ssh), geralmente digita comandos que
bash
irão ler e executar. Mesmo se você não usar o terminal, ainda terá o Bash.No Ubuntu,
/bin/sh
não é bash (é traço). Somente o bash é afetado por esta vulnerabilidade.Como a exploração me afeta?
O Bash e o SO controlam um conjunto de variáveis de ambiente que descrevem o usuário conectado atual, onde procurar programas no disco rígido e outras funções desse tipo. Ao criar uma variável de ambiente com uma estrutura específica, um invasor poderá executar o código na próxima vez que o Bash for iniciado.
O invasor pode definir essa variável de ambiente de várias maneiras:
ForceCommand
opção sshd é um vetor de ataque. Contas cujo shell não é do bash não são afetadas.Depois de definir essa variável, na próxima vez que
bash
for aberto, por qualquer motivo, o código do atacante será executado. Isso é especialmente assustadorsudo -s
, pois gera uma festança como superusuário (uma regra administrativa de usuário que tem controle total sobre os dados e programas do seu computador). Mesmo se você iniciar o bash apenas como usuário padrão, os arquivos desse usuário poderão ser excluídos.É importante observar que, mesmo se você não usar o bash, muitos programas irão gerar o bash sozinhos como parte de sua operação. Mesmo neste caso, você é vulnerável. No entanto, o Ubuntu
/bin/sh
não é bash, portanto, apenas os programas que invocam explicitamente o bash e não o shell de script padrão são afetados.De acordo com Mitre:
Eu sou vulnerável?
Use o dpkg para verificar sua versão do pacote instalado:
Isso irá procurar informações no seu
bash
pacote e filtrar a saída para mostrar apenas a versão. As versões fixas são4.3-7ubuntu1.4
,4.2-2ubuntu2.5
e4.1-2ubuntu3.4
.Por exemplo, eu vejo:
e pode determinar que eu não sou vulnerável.
Como atualizo?
O gerenciador de atualizações padrão oferecerá essa atualização. Este é um excelente exemplo de como as atualizações de segurança são importantes, independentemente do sistema operacional usado ou da manutenção.
O Boletim da USN afirma que novas versões foram lançadas para o Ubuntu 14.04 Trusty Tahr, 12.04 Precise Pangolin e 10.04 Lucid Lynx. Se você não estiver em uma dessas versões do LTS, mas em uma versão razoavelmente recente, provavelmente poderá encontrar um pacote corrigido.
Primeiro, verifique se você
Se você está vulnerável, primeiro pegue as listas de pacotes mais recentes:
O primeiro comando garante que você tenha a lista de pacotes mais recente que inclui a versão fixa e o segundo comando instala a versão mais nova (fixa) do bash.
Embora o bug só pareça entrar em ação quando o bash for gerado, ainda é uma boa idéia reiniciar imediatamente, se possível.
fonte
Roubou isso do cft no Hacker News . Se você tiver problemas com seus repositórios como eu (Odroid-XU), isso deve funcionar bem se você deseja corrigir / construir a partir do código-fonte.
Então corra:
E se você receber:
Então você está bem!
AVISO: make install instalará o bash in
/usr/local/bin
, portanto/bin/bash
não é modificado e pode ser chamado a partir do curl !!fonte
Nota: O patch de segurança para CVE-2014-7169 foi lançado como uma atualização de segurança padrão. Não há necessidade de adicionar ppa's adicionais para receber esse patch. Apenas o seguinte é necessário.
Para garantir que você corrigiu o bash corretamente, execute o seguinte comando
Se você estiver no 14.04 LTS, deverá ver uma saída de:
Se você estiver no 12.04 LTS, sua saída deve ser:
fonte
Se você estiver no 11.04: use as etapas abaixo (funcionou para mim)
se não for baixado o patche necessário, instale o pacote ftp
Para ver se o patch foi aplicado:
fonte
Estou usando o Natty 11.04, que é EOL (e atualizei o /etc/apt/sources.list para usar old-releases.ubuntu.com), então tenho que construir a partir do código-fonte. Eu queria criar um .deb, portanto, pelo menos, o gerenciamento de pacotes está "ciente" de que a versão do bash não é a padrão. Não sou 100% bem-sucedido - no entanto, o pacote é registrado como "mais recente" e o
bash
binário acaba corrigido, então aqui está o que eu fiz:Agora, no diretório (sub)
bash-4.2/
, existe: um arquivobash-4.2.tar.xz
, que precisa ser descompactado para chegar àbash
fonte; e um subdiretório chamadodebian
.Fiz as seguintes alterações para evitar dependências
texlive
: inbash-4.2/debian/control
:... e em
bash-4.2/debian/rules
:Para alterar a versão, neste
bash-4.2/
diretório, faça:... e preencha as anotações no changelog quando solicitado. Isso garantirá que o .deb (e os metadados relacionados) sejam chamados (no meu caso)
bash_4.2-0ubuntu3patchCVE1_i386.deb
.Então você pode tentar criar com
dpkg-buildpackage -us -uc
oudebuild
comando. Nota - qualquer um deles descompactará a fonte do zip - substituindo assim os patches que você tiver! Ainda assim, execute um deles uma vez para que a fonte seja descompactada e construída (a notadebuild
ainda pode falhar no final devido ao texlive, mas deve descompactar e criar a fonte).Em seguida, aplique os patches; note que você deve usar
-p1
aqui, porque atualmente você está nobash-4.2/
diretório:Em seguida, reconstrua a versão corrigida executando:
Isso reconstruiria o executável; para testá-lo:
Para criar os arquivos .deb, execute:
Isso salvará os arquivos .deb no diretório pai; para listar seu conteúdo:
Para instalar o .deb:
No entanto, por algum motivo, este .deb contém um binário não corrigido (?!), Então tive que fazer adicionalmente:
... e depois disso, o teste começou a passar corretamente para mim:
fonte