Skip to main content

Como gerenciar contêineres com segurança

Escrito por
Headshot of Tales Casagrande

Tales Casagrande

feature safe containers

22 de junho de 2022

0 minutos de leitura

Este post foi escrito por Tales Casagrande, um Snyk Ambassador. Os Snyk Ambassadors têm paixão por compartilhar seus conhecimentos em segurança. Torne-se um hoje mesmo inscrevendo-se!

No setor de transporte marítimo, o formato dos contêineres segue a norma ISO 668, que regulamenta o empilhamento seguro de contêineres.

Imagine suas aplicações usando vários contêineres, executando aplicações diferentes e atendendo a pessoas do mundo todo com finalidades distintas.

Segurança de contêineres de software

O software moderno não é muito diferente de um navio. “Empilhamos” vários microsserviços nos projetos, há equipes responsáveis pelo desenvolvimento e pela segurança do ambiente e, se alguém cometer um erro crítico, tudo pode se perder. Vamos analisar os contêineres sob a perspectiva do desenvolvimento e da segurança.

  • Você confia na imagem que está implantando em produção? A origem é confiável?

  • Você realiza testes de segurança para identificar possíveis problemas?

  • Como você prioriza as correções?

  • Sua imagem base contém apenas o mínimo necessário para executar sua aplicação?

  • A equipe de desenvolvimento se mantém atualizada sobre as práticas recomendadas?

  • Sua equipe de segurança ajuda durante o desenvolvimento ou apenas procura culpados quando uma vulnerabilidade é detectada?

Se você não consegue responder a todas as perguntas, não tem problema! Continue lendo e vou compartilhar algumas dicas.

Comece sua análise com o Snyk Container

O objetivo aqui é derrubar as barreiras entre as equipes de segurança e desenvolvimento, ajudando ambas a priorizar as vulnerabilidades em contêineres com base em critérios, em vez de gerar relatórios enormes.

Como exemplo, vamos usar o repositório snyk-goof, que contém uma aplicação propositalmente vulnerável para testes (não recomendamos usá-la em ambientes de produção). Vamos analisar essa aplicação com o Snyk Container, que oferece uma maneira simples e eficaz de automatizar correções de vulnerabilidades e ajuda os desenvolvedores a focar nos problemas.

Primeiro, crie uma conta (é grátis!). Se você já tem uma, basta entrar. Acesse Projects > Add project.

Menu de adição de projeto com as opções GitHub, Docker Hub, CLI e Outras, com “Monitorar repositórios públicos do GitHub” em destaque
Interface da Snyk para monitorar um repositório público do GitHub, exibindo snyk/snyk-goof e um botão “Importar 1 repositório”

Os resultados da análise podem levar alguns minutos para aparecer no projeto recém-importado. A Snyk consegue analisar código, bibliotecas e contêineres. Hoje, vamos focar nos contêineres.

Painel de projetos do Snyk mostrando os resultados da análise de código de um Dockerfile e de um package.json, com contagens por nível de gravidade e datas dos testes mais recentes

Dê uma olhada no Dockerfile. Você transportaria um contêiner com problemas críticos de infraestrutura para alto-mar? Acho que não! Vamos fazer algumas perguntas:

  • Por onde podemos começar?

  • Qual é a prioridade de cada um desses problemas?

Agora, para montar seu plano, considere o seguinte:

  • Alguém poderia explorar essas falhas?

  • Já existe na internet algum código malicioso (um exploit) capaz de explorar essa falha?

  • Alguém está falando sobre essa falha nas redes sociais?

  • Existe uma correção?

Cada vulnerabilidade recebe uma pontuação do Sistema Comum de Pontuação de Vulnerabilidades (CVSS). O cálculo considera critérios como superfície de ataque, complexidade do ataque, interação do usuário e privilégios necessários.

Painel de vulnerabilidades mostrando problemas nos pacotes OpenSSL e curl, incluindo níveis de gravidade, pontuações, status de exploração e versões corrigidas.

O Snyk Container oferece muitas informações úteis sobre cada vulnerabilidade.

Painel de vulnerabilidade de segurança que mostra uma falha crítica de travessia de diretório no python3.5-minimal, com o CVE-2019-9948 e a versão corrigida do pacote.

Neste exemplo, estamos falando de uma imagem simples, mas imagine isso em grande escala. Como seria? Podemos estabelecer uma referência com base nas perguntas acima.

Tabela com recomendações de atualização de imagens base, comparando imagens Node.js pela quantidade e pelo nível de gravidade das vulnerabilidades.

Esta imagem mostra as recomendações de atualização da imagem base do Snyk Code. Essas atualizações reduzem os riscos e nos poupam o tempo que gastaríamos procurando outra imagem base (ou tentando atualizá-la).

Executando a mesma análise com a Snyk CLI

Fiz minha análise usando a interface gráfica. Mas as equipes de desenvolvimento costumam trabalhar na linha de comando ou no IDE. Então, vamos eliminar a barreira de um novo login e fazer a mesma análise com a Snyk CLI.

No console da Snyk, acesse Integrations > CLI e siga as etapas para seu ambiente. Vamos usar o mesmo projeto: snyk-goof.

Terminal exibindo a clonagem concluída do repositório snyk-goof no GitHub, com a transferência de objetos e a atualização de arquivos em 100%.

Agora vamos criar a imagem.

Terminal exibindo um build bem-sucedido do Docker para uma aplicação Node.js, incluindo etapas de build em cache e o nome da imagem library/java-goof

Agora vem a parte divertida! Vamos iniciar a análise pela CLI.

Terminal mostrando o comando “snyk container test snyk-goof” e uma mensagem analisando as dependências do contêiner snyk-goof
Saída do terminal mostrando 1.033 vulnerabilidades encontradas em uma imagem base do Node.js, com recomendações para atualização e tipos alternativos de imagem.

Os resultados dos testes no console e na CLI são um pouco diferentes porque fiz os testes em dias distintos, mas a análise executada com a Snyk CLI ainda apresenta as mesmas recomendações de atualização da imagem base.

A vantagem da análise baseada em métricas

Novas vulnerabilidades surgem o tempo todo. Não podemos parar para corrigir todos os problemas. Precisamos priorizar, automatizar e concentrar nossos esforços onde o impacto pode ser mais grave. Uma análise baseada em métricas elimina o ruído entre as equipes e ajuda você a encontrar rapidamente maneiras de manter seus contêineres seguros.

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.

Leia mais

blog feature snyk container custom base recommendations
Blog

Conheça o Evo Agentic AppSec: segurança que acompanha o ritmo do desenvolvimento com IA

O desenvolvimento impulsionado por IA está ultrapassando os fluxos de trabalho tradicionais de segurança. O Agentic AppSec da Snyk usa agentes de segurança para encontrar, corrigir e verificar vulnerabilidades continuamente, enquanto as pessoas definem os critérios.

feature insights context
Blog

Os ataques autônomos já chegaram. A defesa precisa acompanhar o ritmo.

Os atacantes autônomos estão reduzindo o tempo disponível para a defesa. Saiba como a descoberta, a correção, a validação e a prevenção contínuas ajudam as equipes de segurança a acompanhar esse ritmo.

feature insights context
Blog

A prevenção é essencialmente um problema resolvido?

A prevenção em código gerado por agentes está resolvida do ponto de vista arquitetural — mas escolher controles que protejam a segurança sem desacelerar o desenvolvimento continua sendo um desafio.