No sábado passado, 18 de maio, Jerry Gamblin da Kenna Security 1000 das imagens mais populares do Docker Hub quanto à senha usada para o usuário root. Em 19% dos casos, a senha estava vazia.

Contexto sobre o Alpine
A razão para a mini-pesquisa realizada foi o Talos Vulnerability Report que saiu no início deste mês (), cujos autores – graças à descoberta de Peter Adkins da Cisco Umbrella – informaram que as imagens do Docker com a popular distribuição Alpine não possuem senha para root:
«As versões oficiais das imagens Docker do Alpine Linux (a partir da v3.3) contêm senha NULL para o usuário root. Essa vulnerabilidade surgiu em consequência de uma regressão apresentada em dezembro de 2015. A essência do problema é que sistemas implantados com versões problemáticas do Alpine Linux em contêineres e utilizando o Linux PAM ou outro mecanismo que empregue o arquivo shadow do sistema como base de dados para autenticação, podem aceitar senha nula (NULL) para o usuário root».
As versões das imagens Docker com Alpine confirmadas como problemáticas foram 3.3 a 3.9 inclusivas, além da última versão edge.
Os autores forneceram a seguinte recomendação aos usuários afetados pela questão:
«A conta root deve ser explicitamente desabilitada nas imagens Docker construídas sobre versões problemáticas do Alpine. A exploração da vulnerabilidade depende do ambiente, pois seu sucesso requer um serviço ou aplicação expostos que utilize o Linux PAM ou outro mecanismo semelhante».
O problema estava no Alpine nas versões 3.6.5, 3.7.3, 3.8.4, 3.9.2 e edge (snapshot de 20190228), e foi recomendado aos proprietários das imagens afetadas que comentassem a linha com root em /etc/shadow ou garantissem a ausência do pacote linux-pam.
Continuação com Docker Hub
Jerry Gamblin decidiu investigar «qual a disseminação da prática de utilização de senhas nulas em contêineres». Para isso, ele escreveu um pequeno , cuja essência é bastante simples:
- através de uma solicitação curl à API no Docker Hub, é solicitado uma lista das imagens Docker hospedadas lá;
- com o jq, ela é classificada pelo campo
popularity, e dos resultados obtidos, são mantidas as mil primeiras; - para cada uma delas, é executada
docker pull; - para cada imagem recebida do Docker Hub, é executada
docker runlendo a primeira linha do arquivo/etc/shadow; - se o valor da linha for igual a
root:::0:::::, o nome da imagem é salvo em um arquivo separado.
E qual foi o resultado? Em havia 194 linhas com nomes de imagens Docker populares com sistemas Linux, onde o usuário root não tem uma senha definida:
«Entre os nomes mais conhecidos desta lista estavam govuk/govtpaas, hashicorp, microsoft, monsanto e mesosphere. E kylemanna/openvpn é o contêiner mais popular da lista, com mais de 10 milhões de pull's».
Vale lembrar que esse fenômeno em si não implica uma vulnerabilidade direta na segurança dos sistemas que os utilizam: tudo depende de como eles são aplicados. (veja o comentário do caso com Alpine acima). No entanto, a lição desta fábula já vimos muitas vezes: a simplicidade aparente muitas vezes tem um lado negativo, que precisamos sempre lembrar e cujas consequências devemos considerar em nossos cenários de aplicação da tecnologia.
P.S.
Confira também em nosso blog:
- «»;
- «»;
- «»;
- «».
Fonte: habr.com
