As dez principais imagens Docker contêm mais de 8.000 caminhos vulneráveis
Hayley Denbraver
7 de março de 2019
0 minutos de leituraIntrodução
Nesta publicação, vamos analisar mais a fundo as imagens Docker e os ecossistemas de contêineres abordados em nosso relatório State of Open Source Security, incluindo a descoberta de que as dez principais imagens Docker contêm mais de 8.000 caminhos vulneráveis.
Temos o prazer de ajudar nossa comunidade a entender melhor a segurança do Docker. Desde a publicação da edição anterior do State of Open Source Security, a Snyk lançou ferramentas para ajudar desenvolvedores a entender e mitigar vulnerabilidades em contêineres. Gostamos não só de compartilhar nossas perspectivas sobre o estado da segurança de código aberto, mas também de oferecer ferramentas para ajudar você a encontrar e corrigir vulnerabilidades nas imagens de contêiner.
Em nossa pesquisa para o relatório State of Open Source Security, observamos as estatísticas a seguir sobre quem é responsável pela segurança de contêineres e quem realmente a pratica.
68% dos usuários acreditam que os desenvolvedores devem ser responsáveis pela segurança das imagens de contêiner Docker.
54% dos desenvolvedores não fazem nenhum teste de segurança em imagens Docker.
Apenas 15,5% dos usuários afirmam testar suas imagens Docker em busca de vulnerabilidades durante o desenvolvimento.
Esses dados indicam uma desconexão entre quem é responsável pela segurança e como ela é colocada em prática. Como os desenvolvedores são responsáveis pela segurança das imagens de contêiner, eles se beneficiariam muito ao incorporar a segurança mais cedo no fluxo de trabalho, durante o desenvolvimento — mas apenas 15,5% fazem isso! Os números também indicam que há desenvolvedores responsáveis pela segurança que não a praticam ativamente. Isso significa que até mesmo medidas simples — como corrigir vulnerabilidades atualizando a tag da imagem base ou recriando a imagem Docker — podem acabar sendo ignoradas.
Por esses motivos, decidimos analisar mais a fundo as vulnerabilidades encontradas para ajudar os desenvolvedores a entender os problemas de segurança relevantes para seus contêineres Docker.
Um mergulho profundo na segurança do Docker
Vamos analisar mais de perto os caminhos das vulnerabilidades, a relação entre dependências e vulnerabilidades e a gravidade das vulnerabilidades.
Uma observação rápida: estes números são atuais na data de publicação e, por isso, variam um pouco em relação aos números apresentados no relatório State of Open Source Security.
Caminhos para vulnerabilidades
Às vezes, uma vulnerabilidade específica é introduzida por várias dependências. A Snyk não queria contar essas vulnerabilidades várias vezes, pois isso daria a impressão de que a imagem é muito menos segura do que realmente é. No entanto, é importante entender que uma vulnerabilidade pode ser introduzida várias vezes. Quanto mais dependências estiverem associadas a ela, mais difícil poderá ser corrigi-la. Para dar uma ideia de com que frequência isso ocorre, a Snyk usa o conceito de “caminhos”, que descreve quantas formas existem para introduzir vulnerabilidades na imagem. Por isso, considerei importante entender a proporção entre caminhos e vulnerabilidades para ter uma noção geral da dificuldade de remover vulnerabilidades de uma determinada imagem Docker.

Esta tabela mostra que a imagem Docker do Node provavelmente é a mais difícil de limpar de vulnerabilidades. Também podemos concluir que toda vulnerabilidade presente nas dez imagens analisadas provavelmente tem mais de um caminho associado. Felizmente, a Snyk ajuda você a não precisar desvendar esses nós por conta própria. Nossas ferramentas para Docker ajudam a descobrir como remover essas vulnerabilidades ou sugerem outras imagens Docker para usar.
Dependências
Agora, vamos analisar mais a fundo as dependências de cada imagem Docker. A tabela a seguir mostra a relação entre o número de dependências e o número de vulnerabilidades.

Considerando em conjunto as dez imagens Docker que estudamos, observamos que, para cada dez dependências adicionadas, provavelmente surgem sete vulnerabilidades. O Node é um caso atípico: em média, são introduzidas 14 vulnerabilidades a cada dez dependências adicionadas — o dobro da média!
Gravidade
A Snyk classifica a gravidade das vulnerabilidades como alta, média ou baixa. Essas categorias ajudam os usuários a avaliar e priorizar quais vulnerabilidades corrigir primeiro. Entender a gravidade das vulnerabilidades encontradas nas imagens Docker nos dá uma visão melhor da dimensão do problema de segurança.
Há boas notícias sobre a gravidade das vulnerabilidades! A grande maioria das vulnerabilidades observadas em nosso estudo foi classificada como de baixa gravidade, correspondendo a 74,9% do total. As vulnerabilidades de gravidade média representaram 16,9%, seguidas pelas de alta gravidade, com 8,2%. Isso é uma boa notícia porque os usuários podem priorizar o pequeno número de vulnerabilidades de alta gravidade e causar um grande impacto na segurança de seus contêineres.
A distribuição da gravidade das vulnerabilidades por imagem Docker é a seguinte:

Podemos ver que, embora haja variações entre as imagens Docker, a tendência geral é que a maioria das vulnerabilidades tenha baixa gravidade. Isso é uma boa notícia!
Conclusões
Nossa descoberta de que as dez principais imagens Docker contêm mais de 8.000 caminhos para vulnerabilidades, aliada à observação de que quase toda dependência presente nessas imagens acrescenta vulnerabilidades, reforça a importância de usar imagens base mínimas. Essa recomendação também foi nossa prática de segurança número 1 no guia rápido sobre segurança do Docker que publicamos recentemente.
Ao optar por imagens mínimas, que incluem apenas as ferramentas de sistema e bibliotecas necessárias para executar seu projeto, você também reduz a superfície de ataque e garante o envio de um sistema operacional seguro. Isso pode significar menos vulnerabilidades, menos caminhos até elas e menos dependências no geral — tudo isso resulta em um contêiner mais seguro.
A segurança do Docker pode ser complexa, mas as ferramentas da Snyk facilitam a correção de vulnerabilidades e a busca por uma imagem base segura.
Segurança de contêineres que prioriza os desenvolvedores
O Snyk encontra e corrige automaticamente vulnerabilidades em imagens de contêiner e workloads do Kubernetes.



