No último sábado, 18 de maio, Jerry Gamblin, da Kenna Security,
verificou as 1000 imagens mais populares do Docker Hub quanto à senha de root usada nelas. Em 19% dos casos, ele estava ausente.

Fundo com alpino
O motivo do mini-estudo foi o Talos Vulnerability Report (
TALOS-2019-0782 ), que apareceu no início deste mês, cujos autores - graças à descoberta de Peter Adkins da Cisco Umbrella - relataram que as imagens do Docker com o popular kit de distribuição de contêineres Alpine não têm uma senha para raiz:
“As versões oficiais das imagens do Alpine Linux Docker (começando na v3.3) contêm uma senha NULL para o usuário root. Esta vulnerabilidade apareceu como resultado de uma regressão introduzida em dezembro de 2015. Sua essência é que os sistemas implantados com versões problemáticas do Alpine Linux em um contêiner e usando o Linux PAM ou outro mecanismo que usa o arquivo de sistema sombra como um banco de dados de autenticação podem aceitar uma senha NULL para o usuário root. ”
As versões alpinas das imagens do Docker testadas para o problema foram chamadas de 3.3 a 3.9, inclusive, bem como a versão mais recente do edge.
Os autores fizeram a seguinte recomendação aos usuários afetados pelo problema:
“A conta raiz deve ser explicitamente desabilitada nas imagens do Docker criadas com base em versões problemáticas do Alpine. A provável exploração da vulnerabilidade depende do ambiente, pois seu sucesso exige um serviço ou aplicativo que foi encaminhado para fora, usando o Linux PAM ou outro mecanismo similar. ”
O problema foi
corrigido nas versões Alpine 3.6.5, 3.7.3, 3.8.4, 3.9.2 e edge (snapshot 20190228), e os proprietários das imagens afetadas foram solicitados a comentar a linha com raiz no
/etc/shadow
ou se certificar de que não há pacote
linux-pam
.
Continuação com o Docker Hub
Jerry Gamblin decidiu perguntar: "quão difundida pode ser a prática de usar senhas nulas em contêineres". Para fazer isso, ele escreveu um pequeno
script do Bash , cuja essência é muito simples:
- por meio de uma solicitação de curvatura para a API no Docker Hub, é solicitada uma lista de imagens do Docker hospedadas lá;
- por jq, ele é classificado pelo campo
popularity
e os primeiros mil remanescentes dos resultados obtidos; docker pull
é executada para cada um deles;- para cada imagem recebida do Docker Hub, a
docker run
é realizada com a leitura da primeira linha do arquivo /etc/shadow
; - se o valor da sequência for
root:::0:::::
, o nome da imagem será salvo em um arquivo separado.
O que aconteceu?
Este arquivo continha 194 linhas com os nomes de imagens populares do Docker com sistemas Linux, o usuário raiz no qual não possui uma senha:
“Entre os nomes mais famosos desta lista estavam govuk / governamentais, hashicorp, microsoft, monsanto e mesosfera. E o kylemanna / openvpn é o contêiner mais popular da lista, suas estatísticas somam mais de 10 milhões de tentativas. "
No entanto, vale lembrar que esse fenômeno por si só não significa uma vulnerabilidade direta na segurança dos sistemas que os utilizam: tudo depende de como eles são usados
(veja o comentário do caso da Alpine acima) . No entanto, já vimos “a moralidade dessa fábula” muitas vezes: a aparente simplicidade geralmente tem uma desvantagem, que sempre deve ser lembrada e cujas consequências devem ser levadas em consideração nos cenários de aplicativos de tecnologia.
PS
Leia também em nosso blog: