Shellshock: Por que esse erro ao testar a vulnerabilidade

5

Estou usando o Fedora 20 em duas máquinas.

Depois de ler sobre a vulnerabilidade do Shellshock, agora às 11h (UTC) do dia 26 de setembro de 2014, no Reino Unido, depois de usar yum update bash para protegê-la, tentei os métodos de teste recomendados:

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

e, nos modos usuário e su, obtém esse resultado em uma máquina:

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

Por outro eu tenho simplesmente:

this is a test

Por favor: eu consegui em ambas as máquinas, ou devo me preocupar?

Em resposta ao comentário de @ terdon, obtive este resultado:

[Harry@localhost]~% env X='() { (a)=>\' bash -c "echo echo vuln"; [[ "$(cat echo)" == "vuln" ]] && echo "still vulnerable :("
echo vuln
cat: echo: No such file or directory
[Harry@localhost]~%

Não sei o que significa, no entanto.

Só para deixar claro, estou perplexo com o aviso e também com as diferenças entre as duas máquinas. Eu tive outro olhar mais atento na mensagem de aviso. Pode ser que, na máquina sem a mensagem de erro, eu digite o comando com "copiar e colar": por outro eu digitei e recebi o aviso, e agora vejo que o aviso cita o 'x' final como 'x' (observe o "tick anterior"). Essa máquina tem um teclado americano que eu ainda não posso mudar para o layout do Reino Unido, mas há outra questão inteiramente.

Perseguindo isso na rede, este tópico LinuxQuestions.org discute e parece que ambos são seguros.

    
por Harry Weston 26.09.2014 / 13:26

3 respostas

7

Você fez certo.
Seus sistemas são seguros e não vulneráveis a partir dessa exploração.

Se o seu sistema não estiver seguro, a saída do comando será:

vulnerable
this is a test

mas desde que sua saída é

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

você está seguro.

Se você fez isso ontem, considere executar yum update bash hoje, já que a correção de ontem não é tão boa quanto a lançada hoje.

EDIT (como OP solicitou mais informações)

Também posso acalmá-lo na nova vulnerabilidade. Seu sistema já tem a nova correção instalada.

Se você tivesse a saída

echo vuln
still vulnerable :(

você ainda estaria vulnerável.

Agora eu não posso responder como o exploit funciona exatamente, quero dizer com isso que não posso dizer exatamente o que acontece e quais são as diferenças entre o primeiro e o segundo exploit. Mas posso dar-lhe uma resposta simplificada de como funciona a exposição.

env X='() { (a)=>\' bash -c "echo echo vuln"; [[ "$(cat echo)" == "vuln" ]] && echo "still vulnerable :("
"Não faz mais nada" do que salvar um pouco de código executável em uma variável ambiental que será executado toda vez que você iniciar um bash-shell.
E um bash-shell é iniciado facilmente / frequentemente. Não só por si mesmo, mas também muitos programas precisam de uma festança para realizar seu trabalho. Como CGI por exemplo.

Se você gostaria de ler mais sobre essa exploração, aqui está um link para o blog de segurança Red Hat: link

    
por 26.09.2014 / 13:35
3

Se não foi corrigido, você deve ter lido vulnerable após as duas tentativas.

    
por 26.09.2014 / 13:34
1

A primeira saída é a de uma bash fixa. O segundo não mostra o aviso adicionado pela correção do patch, mas mostra o comportamento correto (não é vulnerável). Talvez a segunda máquina não esteja realmente usando o bash, ou a distribuição usou um patch ligeiramente diferente (por exemplo, um desabilitando funções exportáveis). Você pode fornecer a saída da bash --version para ambas as máquinas?

    
por 26.09.2014 / 18:53

Tags