shellshock: vulnerabilidade no Bash

Uma falha crítica foi encontrada no gerenciado de linha de comando Bash utilizado em muitos sistemas operacionais Linux, Unix e IOS, conforme descrtito pelo CVE-2014-6271. Este bug afeta todas as versões do Bash até a 4.3.

Para testar se o seu Bash é vulnerável, execute a seguinte sequência de comandos (fique tranquilo, estes comandos não vão detonar seu sistema):

env X="() { :;} ; echo vulneravel: shellshock" /bin/bash \
-c "echo completed"

Se a mensagem a seguir for apresentada, seu Bash é vulnerável:

> vulneravel: shellshock
> completed

Se, por outro lado, apenas a mensagem completed for apresentada, então seu Bash é imune à esta vulnerabilidade.

Um detalhe importante: alguns podem pensar que esta vulnerabilidade não seja assim tão importante, mas isto não é verdade. Vamos entender um pouco mais.

Ao que tudo indica, esta vulnerabilidade é bastante antiga e está relacionada à forma como o Bash manipula variáveis de ambiente: é possível executar códigos arbitrários dependendo de como os comandos são atribuídos à variáveis do Bash, numa forma especial chamada de funções exportadas. Quando uma variável deste tipo é criada, os comandos executados de forma que a variável recebe o resultado da execução da função atribuída à variável. Um atacante poderia formatar uma variável com uma função de forma que códigos arbitrários poderiam ser executados pelo sistema.

Este problema torna-se especialmente importante quando consideramos que vários web sites utilizam-se de chamadas de comandos em Bash para a sua execução. Para evitar este problema, o melhor é atualizar o Bash e desabilitar a execução de scripts CGI no servidor web.

Um detalhe importante é que muitos roteadores que utilizam-se de Linux (a maioria?) utilizam o servidor web interno para permitir a configuação do equipamento que, por sua vez, utilizam-se de scripts CGI para executar as configurações selecionadas pelo usuário. Ora, se o atacante acessar a página de configuração do equipamento, ele pode acabar inserindo códigos específicos na página de forma a ser executado pelo Bash através de uma chamada a um script CGI, que executam códigos arbritários no equipamento, ou seja, game over!

Deve-se pensar que a onda hoje é a IoT (Internet of Things, ou Internet das coisas), onde a maioria dos equipamentos comunica-se em rede e possui interfaces de configuração baseadas em páginas Web internas que executam scripts CGI que, na maioria das vezes, executam códigos em Bash.

Fui!