setembro 25, 2014

[Segurança] Bashpocalypse‬

A imprensadecretou isso como uma vulnerabilidade "bem pior que o Heartbleed".

Apesar do alarmismo, a recém divulgada vulnerabilidade no Bash é muito preocupante, pois pode afetar todos os sistemas Unix que tenham o shell Bash (que é o shell default no Linux e OS X) - ou seja, a quantidade de máquinas vulneráveis é potencialmente gigantesca.

O Bash ShellShocker (CVE-2014-6271), ou simplesmente "Shellshock", é uma vulnerabilidade no Bash, um interpretador de comandos ("shell") muito utilizado nos sistemas Unix. Ela explora a forma em que o bash processa as variáveis de ambiente, e pode ser acionada em qualquer situação em que um serviço executa um shell (o bash) direta ou indiretamente - tais como no sshd do OpenSSH, nos módulos mod_cgi e mod_cgid no servidor Apache, ou scripts executados por clientes DHCP. Por isso, esta vulnerabilidade pode ser explorada remotamente via HTTP, sem necessidade de se autenticar no site ou no servidor!

O Bash permite que uma variável de ambiente seja atrelada a uma função, o que é definido quando a variável começa com "() {" (abre e fecha parêntesis, seguido de abre chaves). Mas a vulnerabilidade acontece porque o Bash não pára de executar esta variável quando chega no fim da definição (no fecha chaves). Assim, uma variável criada como no exemplo abaixo irá executar o script indicado após a definição da variável VAR.
VAR=() { qualquercoisa; }; scriptmalicioso

A exploração remota de um sistema vulnerável é relativamente trivial, diversos exploits estão disponíveis, já tem módulo para o Metasploit, já tem vírus explorando a vulnerabilidade, e já foram identificadas tentativas de atacar servidores vulneráveis.


Para piorar, o patch que surgiu inicialmente era incompleto e deu origem a outra vulnerabilidade, batizada de CVE-2014-7169. Nada bom, né?

Atualização (06/10): O Shellshock já tem 6 vulnerabilidades associadas a ele: CVE-2014-6271, CVE-2014-7169, CVE-2014-7186, CVE-2014-7187, CVE-2014-6277 e CVE-2014-6278.

Além de afetar todos os tipos e distribuições de servidores Unix (incluindo Linux e OS X), não custa lembrar que o Unix é muito utilizado não só em servidores e desktops, mas também em diversos tipos de appliances e equipamentos, tais como dispositivos de rede, impressoras e equipamentos de segurança. Até mesmo sistemas de câmeras de monitoração, sistemas embarcados e equipamentos domésticos que fazem parte da Internet das Coisas (“Internet of Things”) podem estar vulneráveis (se utilizarem Linux + bash). Essa grande variedade de sistemas vulneráveis acontece porque o Linux é um sistema operacional muito difundido e muito utilizado por diversos fabricantes de equipamentos.

Para saber se o seu servidor está vulnerável, basta rodar um teste muito simples na linha de comando, conforme sugerido pelo The Register:
env X="() { :;} ; echo busted" /bin/sh -c "echo completed"
Ou melhor:
env X="() { :;} ; echo vulneravel" /bin/sh -c "echo teste"
Se aparecer a palavra "busted" ou "vulneravel", então você está em maus lençois...


Os principais fabricantes de segurança já estão correndo para lançar atualizações de seus produtos, incluindo assinaturas para IDS/IPS e scans de vulnerabilidades. Além disso, todos tem que correr para atualizar o bash em seus servidores,

Para saber mais:
Nota: Post atualizado em 29/09 e 06/10.

Um comentário:

Bruno Henrique disse...

Anchises, matéria completa! Obrigado pela disposição das explicações. Parabéns!
Realmente é um problema bem sério e crítico, ao meu ver foi surpreendente encontrar muitas pessoas correndo atrás de atualizar seu servidor conforme comentários de outros sites e no próprio Facebook. Parece que os Admins estão mostrando mais serviço e valorizando a área.

Creative Commons License
Disclaimer: The views expressed on this blog are my own and do not necessarily reflect the views of my employee.