Acelere as correções em contêineres com a nova detecção automática de imagens pai da Snyk
12 de agosto de 2021
0 minutos de leituraAo distribuir seus aplicativos em contêineres, você tem liberdade para aproveitar o trabalho de outras pessoas. É possível escolher entre várias imagens de contêiner prontas para uso, capazes de executar praticamente qualquer código ou framework. O Snyk Container já ajuda os usuários a gerenciar suas imagens pai e recomenda opções melhores quando disponíveis — imagens com menos vulnerabilidades, menor tamanho ou ambos. Temos o prazer de anunciar a atualização mais recente dos nossos recursos de gerenciamento de imagens: detecção automática de imagens base.
Fluxos de trabalho de segurança de imagens mais simples
Antes desta versão, o Snyk Container identificava a imagem pai do contêiner analisado examinando o Dockerfile durante o teste da imagem com a opção --file=/path/to/Dockerfile. Isso funciona muito bem se você tiver o Dockerfile à mão e se lembrar de incluí-lo nas análises. Mas, convenhamos: adicionar o Dockerfile é uma opção extra e bem diferente do funcionamento de outros scanners de imagens. Queríamos simplificar o gerenciamento das imagens base e oferecer recomendações logo na primeira análise com o Snyk, então tornamos automática a detecção de imagens base. Basta analisar suas imagens de contêiner com o Snyk e cuidamos do resto.

No exemplo acima, analisei um aplicativo de demonstração que roda em um contêiner baseado em node:10, uma versão extremamente antiga. Durante a análise, o Snyk Container detecta o uso da imagem pai node:10 e recomenda alternativas melhores, que eliminariam mais de 520 vulnerabilidades da imagem que criei. Quase todas as listas de boas práticas para contêineres recomendam escolher imagens base menores para reduzir a superfície de ataque. E, ao testar um contêiner em busca de vulnerabilidades, você logo entende o motivo: imagens maiores ou desatualizadas costumam introduzir muitas vulnerabilidades. Muitas vezes, escolher uma imagem mais recente e enxuta é a maneira mais rápida e eficaz de reduzir vulnerabilidades. Por outro lado, tentar corrigir cada vulnerabilidade do contêiner uma a uma ou examinar centenas de opções de imagens base em repositórios públicos geralmente não é uma boa forma de aproveitar o tempo de ninguém. Por isso, o Snyk Container faz esse trabalho para você com as imagens mais populares do Docker Hub.
No exemplo abaixo, analisei outro aplicativo que usa ruby:2.6-slim como imagem base. Ao contrário da minha imagem Node, esta é uma boa opção, com relativamente poucas vulnerabilidades — ou seria, se eu tivesse criado a imagem do contêiner recentemente. Mas ela foi criada há cerca de sete meses. Por isso, em vez de sugerir imagens base alternativas, recebo um alerta de que minha imagem Ruby está desatualizada e precisa ser recriada para corrigir vulnerabilidades. Usei a opção --json para exibir a saída JSON legível por máquina, ideal para quem quer inserir os resultados do Snyk em outras ferramentas.

Compatibilidade com mais opções de criação de contêineres
Há outro motivo para a importância da detecção automática de imagens base: cada vez mais ferramentas de contêineres criam contêineres sem usar um Dockerfile. Felizmente, essas ferramentas adotam amplamente os padrões de imagens de contêiner da Open Container Initiative (OCI), o que significa que suas ferramentas e ambientes de execução devem conseguir executar esses contêineres. Ferramentas como Jib, Buildah e Cloud Native Buildpacks permitem criar contêineres compatíveis com OCI sem escrever um Dockerfile.
O Snyk Container sempre conseguiu analisar esses contêineres e, agora, com nossos recursos de detecção automática de imagens base, também podemos recomendar imagens base para esses fluxos de criação alternativos. Nas próximas semanas, publicaremos artigos sobre Jib e Cloud Native Buildpacks. Mas, se não quiser esperar, basta criar um contêiner com a ferramenta de sua preferência e analisá-lo.
Como funciona a detecção de imagens base
Com esse recurso, agora temos dois métodos para detectar a imagem base dos seus contêineres e fazer recomendações:
Analisar o Dockerfile durante a verificação: se você já usa esse método, pode continuar usando. O Snyk Container continuará funcionando como sempre. Usaremos o Dockerfile como fonte para obter os detalhes da imagem base, em vez do método de detecção automática.
Analisar as camadas da imagem: ao analisar as camadas de uma imagem durante a verificação, podemos determinar qual imagem base está sendo usada. O Snyk Container analisa as imagens oficiais mais populares do Docker publicadas no Docker Hub e acompanha os dados das camadas dessas imagens para comparar as camadas da imagem analisada com esses registros.
Hoje, nosso foco está nas imagens oficiais mais populares publicadas no Docker Hub. Isso inclui imagens base que são apenas distribuições Linux, como Debian, Alpine e Ubuntu; imagens com pacotes de linguagens e frameworks integrados, como Python, Node e OpenJDK; e imagens com componentes de aplicativos pré-configurados, como NGINX, WordPress, Mongo e MySQL. Existem muitas outras imagens, e continuamos ampliando a lista. Se quiser que incluamos alguma, conte para nós!
Por que você ainda deve analisar seu Dockerfile
Agora que o Snyk Container detecta imagens base automaticamente, pode parecer que não é mais necessário analisar o Dockerfile. No entanto, há bons motivos para incluí-lo nas suas práticas de desenvolvimento seguro, caso você use um:
Alerta antecipado: se você importar repositórios Git para o Snyk, uma das coisas que procuramos é um Dockerfile. Fazemos isso para alertar o quanto antes quando houver uma imagem base melhor disponível. Além disso, como temos integração com seus repositórios de código-fonte, podemos até automatizar as correções de imagens base por meio de pull requests.
Procedência: ao usar o Snyk Container para analisar tanto o Dockerfile quanto as imagens de contêiner criadas a partir dele, você pode vincular os resultados. Isso ajuda a rastrear a origem das imagens no seu ambiente e a conectar os contêineres em execução na produção à origem deles.
Completude: analisar o Dockerfile no Git permite alertar antecipadamente sobre a escolha da imagem base, mas se limita a apenas recomendar imagens base. Isso acontece porque qualquer imagem criada a partir desse Dockerfile varia de acordo com o momento da criação, já que os pacotes Linux e as imagens base são atualizados com frequência. O Dockerfile, por si só, não informa o que realmente existe em uma imagem que você já criou. Além disso, muitas vezes o Dockerfile fica armazenado junto ao código executado no contêiner. Assim, você ganha contexto adicional ao ver vulnerabilidades e problemas de código ao mesmo tempo que os problemas do contêiner.
Ao analisar tanto o Dockerfile quanto as imagens, você tem uma visão completa das vulnerabilidades, sejam elas provenientes da imagem base ou de outras camadas da imagem, além de poder ir direto ao arquivo de origem e corrigir os problemas rapidamente.
Como começar
Quer conhecer os recursos de detecção e recomendação de imagens base do Snyk? É fácil começar, e eles estão disponíveis em todos os planos, inclusive no plano Free. Basta criar uma imagem baseada em uma das imagens base oficiais populares do Docker e analisá-la com o Snyk Container. Se você estiver usando a versão 1.677 ou posterior da CLI do Snyk, receberá recomendações automáticas de imagens base. Também é possível analisar imagens nos seus pipelines de CI/CD e registros de contêineres. Se você tem um plano Snyk Business ou Enterprise, também pode analisar os contêineres em execução nos seus clusters Kubernetes. Em todos esses casos, você terá a mesma detecção e as mesmas recomendações de imagens base.
Proteja seu código com inteligência de ponta
Conheça toda a gama de recursos de análise estática (SAST) do Snyk Code em apenas 30 minutos.



