O que é o Bash?
Bash é o shell interativo padrão no Ubuntu. Quando você está interagindo com o terminal (através do emulador de terminal, através de um tty, ou ssh), você geralmente está digitando comandos que bash
lerão e executarão. Mesmo que você não use o terminal, você ainda tem Bash.
No Ubuntu, /bin/sh
não é bash (é traço). Somente o bash é afetado por esta vulnerabilidade.
Como a exploração me afeta?
Bash e o sistema operacional acompanham um conjunto de variáveis de ambiente que descrevem o usuário atualmente conectado, onde procurar por programas no disco rígido e outras funções semelhantes. Ao criar uma variável de ambiente com uma estrutura específica, um invasor pode executar código na próxima vez que o Bash for iniciado.
O invasor pode definir essa variável de ambiente de várias maneiras:
- Conecte-se remotamente a um serviço como o SSH com uma configuração específica, como git over ssh. Como Mitre avisa, o uso da opção sshd
ForceCommand
é um vetor de ataque. Contas cujo shell não é bash não são afetadas. - Enganar você para definir a variável de ambiente.
- Faz com que outro programa configure uma variável de ambiente para ter esse valor criado. Por exemplo, você pode ter um servidor da web e um script que precisa definir uma variável de ambiente com conteúdo de usuário específico. Mesmo que esse script crie o seu próprio e não toque em outras variáveis de ambiente, é suficiente. Uma única variável de ambiente com qualquer nome e um valor criado é suficiente para o exploit ter sucesso .
- Outras formas que não mencionei aqui.
Depois de definir essa variável, da próxima vez que bash
abrir para qualquer motivo >, o código do invasor será executado. Isso é especialmente espantoso com sudo -s
, pois gera o super-usuário (uma regra de usuário administrativo que tem controle total sobre os dados e programas do seu computador). Mesmo se você apenas iniciar o bash como um usuário padrão, os arquivos desse usuário poderão ser excluídos.
É importante notar que, mesmo que você não use o bash, muitos programas aparecerão sozinhos como parte de sua operação. Mesmo neste caso, você está vulnerável. No entanto, o /bin/sh
do Ubuntu 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:
vetores envolvendo o recurso ForceCommand no OpenSSH sshd, os módulos mod_cgi e mod_cgid no Apache HTTP Server, scripts executados por clientes DHCP não especificados e outras situações nas quais a configuração do ambiente ocorre através de um limite de privilégio da execução do Bash.
Estou vulnerável?
Use o dpkg para verificar sua versão do pacote instalado:
dpkg -s bash | grep Version
Isso procurará informações no seu pacote bash
e filtrará a saída para mostrar apenas a versão. As versões fixas são 4.3-7ubuntu1.4
, 4.2-2ubuntu2.5
e 4.1-2ubuntu3.4
.
Por exemplo, vejo:
wlan1-loopback% dpkg -s bash | grep Version
Version: 4.3-7ubuntu1.4
e pode determinar que não estou vulnerável.
Como faço para atualizar?
O gerenciador de atualização padrão oferece esta atualização. Este é um excelente exemplo de como as atualizações de segurança são importantes, independentemente do sistema operacional que você usa ou de como ele é bem mantido.
O Boletim USN afirma que novas versões foram lançadas para o Ubuntu 14.04 Trusty Tahr, 12.04 Precise Pangolim e 10.04 Lucid Lynx. Se você não estiver em uma dessas versões do LTS, mas estiver em uma versão razoavelmente recente, provavelmente será possível encontrar um pacote corrigido.
Primeiro, verifique se você
Se você estiver vulnerável, primeiro deverá pegar as listas de pacotes mais recentes:
sudo apt-get update && sudo apt-get install bash
O primeiro comando garante que você tenha a lista de pacotes mais nova que inclui a versão fixa, e o segundo comando instala a versão mais recente (fixa) do bash.
Embora o bug só apareça quando o bash é gerado, ainda é uma boa idéia reiniciar imediatamente se possível.