Shellshock

folclore

segurançaprogramação

Uma família de vulnerabilidades do Bash, de 2014, que permitia a atacantes executar comandos por meio de variáveis de ambiente manipuladas.

O Bash executava por engano o código que vinha após uma definição de função passada em uma variável de ambiente, e como servidores web e outros serviços definem tais variáveis a partir de entradas do usuário, isso virava execução remota de código. O Bash é tão presente nos sistemas Unix que a exposição foi enorme.

O Shellshock foi uma falha no tratamento de variáveis de ambiente pelo bash. O bash podia exportar funções codificando-as em variáveis, e continuava executando o que viesse depois da definição da função, então qualquer variável controlada por um atacante podia carregar comandos que rodavam automaticamente ao iniciar um novo shell.

A razão de ter sido classificado tão grave quanto qualquer coisa daquela década é a alcançabilidade. Servidores web CGI colocam cabeçalhos HTTP em variáveis de ambiente e então invocam um shell, então um User-Agent forjado virava execução remota de código num número enorme de sistemas, sem autenticação alguma. Clientes DHCP, processadores de e-mail e tudo mais que passasse dado externo para um ambiente ficavam igualmente expostos, e bash existe em todo lugar.

O defeito estivera presente por cerca de vinte e cinco anos, que é a parte que recontextualiza tudo. A correção inicial se revelou incompleta e várias CVEs de acompanhamento chegaram nos dias seguintes, em meio ao maior esforço emergencial de correção que muitas organizações já haviam conduzido. Junto com o Heartbleed no mesmo ano, ele encerrou a suposição de que software fundacional, antigo e amplamente revisado seja, por isso, seguro.

Também conhecido como: Shellshock, Bashdoor, CVE-2014-6271

Fontes

  • CVE-2014-6271 (2014)

Todos os verbetes do glossário