Como combater o Shellshock e atualizar o Bash no Ubuntu 10.04 (Lucid)

Em 24 de setembro de 2014, uma vulnerabilidade no Unix Bash Shell foi descoberta. Shellshock é um erro no código do Bash, que normalmente é instalado em sistemas operacionais não Windows, como Mac, Unix e Linux. O bug permite que os hackers enviem comandos a um computador sem ter status de administrador, permitindo que eles instalem software malicioso nos sistemas. Foi classificado como 10/10 para gravidade pelo governo dos EUA e afeta até 500 milhões de servidores, roteadores e switches em todo o mundo.

Este é um grande negócio. Se você estiver em uma assinatura de Managed Hosting com empresas como Acquia , Heroku , Mediatemple ou Rackspace , é provável que eles já tenham feito o patch para você.

Se você estiver executando seu próprio servidor ou executando servidores não suportados pelo Managed Services (como eu no Rackspace), você está preso no patch por conta própria.

Se você estiver executando versões mais recentes do Ubuntu, é provável que a maioria dos guias que encontrará na rede sejam precisos e funcionem. No entanto, passei várias horas tentando encontrar uma solução que realmente funcionasse com versões LTS mais antigas (especificamente Lucid 10.04 LTS).

Aqui está o guia passo a passo que elaborei para mostrar como determinei que meus sistemas Ubuntu 10.04 no Rackspace eram vulneráveis, executei os testes para descobrir quais exploits se aplicavam e, em seguida, atualizei o bash.

Verificando a versão do bash conforme relatado pela linha de comando

bash -version

GNU bash, versão 4.1.5 (1) -release (x86_64-pc-linux-gnu)

Verificando a versão do Unix conforme relatado pela linha de comando

lsb_release -a

ID do distribuidor: Ubuntu

Descrição: Ubuntu 10.04 LTS

Versão: 10.04

Codename: lucid

A saída acima confirma a versão porque incluí este guia especificamente em versões mais antigas. Pode ainda funcionar nos mais novos, mas não testei isso.

Teste para o Exploit 1 ( http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-6271 )

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

vulnerável,

este é um teste

Se você vir “vulnerável” na saída, então o Bash está vulnerável.

Teste para o Exploit 2 ( http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-7169 )

env X='() { (shellshocker.net)=>' bash -c "echo date"; cat echo ; rm -f echo

bash: X: linha 1: erro de sintaxe próximo ao token inesperado bash: erro ao importar definição de função para `X’ Seg 29 Set 16:34:31 UTC 2014 =' bash: X: line 1:

Se você vir a data atual, o Bash está vulnerável.

Teste para o Exploit 3

env -i X=' () { }; echo hello' bash -c 'date'

Seg, 29 de setembro de 16:34:43 UTC de 2014

Se você vir “hello” em sua saída, então “Bash” é vulnerável.

Realização das etapas necessárias para atualizar o Bash para uma nova versão segura

sudo apt-get update
sudo apt
-get install --reinstall bash

Lendo listas de pacotes … Concluído

Construindo árvore de dependências

Lendo informações de estado … Concluído

Pacotes sugeridos:

bash-doc

Pacotes recomendados:

bash-completed

Os seguintes pacotes serão atualizados:

bash

1 atualizado, 0 recém-instalado, 0 para remover e 133 não atualizado.

É preciso obter 703kB de arquivos.

Após esta operação, 61,4kB de espaço em disco será liberado.

Obter: 1 http://archive.ubuntu.com/ubuntu/ lucid-updates / main bash 4.1-2ubuntu3.4 [703kB]

Obtido 703kB em 1s (583kB / s)

(Lendo banco de dados … 38079 arquivos e diretórios instalados atualmente .)

Preparando para substituir o bash 4.1-2ubuntu3 (usando … / bash 4.1-2ubuntu3.4amd64.deb) …

Descompactando o bash substituto …

Processando gatilhos para man-db …

Configurando o bash (4.1-2ubuntu3.4) …

atualizar-alternativas: usando / usr / share / man / man7 / bash -builtins.7.gz para fornecer / usr / share / man / man7 /builtins.7.gz (builtins.7.gz) no modo automático.

Teste novamente de exploit 1, sucesso alcançado

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

isto é um teste

Não é mais vulnerável por causa da saída.

Teste de exploração 2 de novo, sucesso alcançado

env X='() { (shellshocker.net)=>' bash -c "echo date"; cat echo ; rm -f echo

data
cat: echo: Não existe tal arquivo ou diretório

Não é mais vulnerável por causa da saída.

Teste de exploração 3 novamente, sem alteração, mas nunca vulnerável

env -i X=' () { }; echo hello' bash -c 'date'

Seg, 29 de setembro 16:47:21 UTC 2014

Nenhuma diferença reconhecida, mas este exploit em particular nunca afetou minha versão.

Como uma observação, pelo menos no meu cenário, executando o:

bash -version

comando não acabou retornando nenhum valor diferente após o patch por algum motivo. No entanto, executar os mesmos testes de exploração novamente e ver que os resultados são diferentes indica que o patch foi aplicado com sucesso.

Shellshocker.net e Digital Ocean têm alguns guias sobre como corrigir outras variantes do UNIX, incluindo Ubuntu. Descobri, no entanto, que as versões mais antigas do Ubuntu, como 10.04LTS, não oferecem suporte ao comando a seguir conforme o esperado.

sudo apt-get update && sudo apt-get install --only-upgrade bash

Ele dá um erro como:

E: Só o sentido não é compreendido, tente verdadeiro ou falso

Foi então que busquei alternativas e pude escrever este guia. Espero que isto ajude!