Marcio Cunha

Como auditar vulnerabilidades em containers Docker com Trivy

Aprenda a integrar a varredura automatizada de segurança de imagens Docker usando o Trivy diretamente no seu pipeline de CI/CD para bloquear deploys vulneráveis.

Marcio Cunha•5 min
Também disponível em:EnglishEspañol
Resumo
  • A segurança de containers exige verificação automatizada antes que o código chegue ao ambiente de produção.
  • O Trivy funciona como um scanner leve que identifica falhas conhecidas em pacotes do sistema operacional e bibliotecas.
  • Inserir a auditoria na esteira de CI/CD impede que vulnerabilidades críticas passem despercebidas por esquecimento humano.
  • O bloqueio automático de deploys baseado em severidade de falhas protege a infraestrutura contra explorações ativas.
  • Manter o banco de dados de vulnerabilidades atualizado garante precisão na detecção de novas ameaças descobertas.

Por que a segurança de containers começa antes da produção

Quando criamos aplicações e as empacotamos em containers usando ferramentas como o Docker, costumamos focar apenas no funcionamento do código. No entanto, cada imagem base que escolhemos traz consigo dezenas ou centenas de pacotes de sistema operacional que podem conter falhas de segurança conhecidas. Na prática, isso significa que colocar um sistema no ar sem verificar esses componentes é como trancar a porta da frente e deixar a janela aberta. Se um invasor descobrir uma falha antiga em uma biblioteca esquecida dentro do seu container, ele poderá comprometer todo o servidor.

Para evitar esse tipo de surpresa desagradável, a comunidade de engenharia de software adotou a prática de escanear imagens de container em busca de vulnerabilidades antes mesmo que elas alcancem os ambientes oficiais. Assim como aprendemos a diagnosticar falhas de rede em containers Docker com tcpdump para entender o tráfego interno, precisamos de ferramentas dedicadas a inspecionar o conteúdo interno dos pacotes instalados. É exatamente aqui que entra o Trivy, um scanner de vulnerabilidades moderno, rápido e altamente integrado ao ecossistema de desenvolvimento.

O que é o Trivy e como ele age nas imagens

O Trivy é uma ferramenta de código aberto desenvolvida pela Aqua Security que se destaca pela simplicidade de uso e pela velocidade na varredura. Em vez de exigir configurações complexas, ele analisa arquivos de imagens de containers, sistemas de arquivos locais e até repositórios de código em busca de vulnerabilidades em pacotes de linguagens como Node.js, Python, Rust e dependências do próprio Linux. Quando executado, ele compara os pacotes encontrados com um banco de dados global de vulnerabilidades conhecidas, chamado de CVE.

Na prática, o Trivy atua como um inspetor minucioso que abre cada camada do seu container e verifica a lista de ingredientes instalados. Se uma biblioteca possui uma falha documentada que permite acesso remoto não autorizado, o scanner emite um alerta detalhado indicando o nível de risco e a versão corrigida disponível. Essa visibilidade imediata transforma a segurança de um conceito abstrato em uma métrica clara que pode ser medida e bloqueada automaticamente.

Automatizando a segurança na esteira de CI/CD

As esteiras de Integração Contínua e Entrega Contínua, conhecidas como CI/CD, são os trilhos automatizados por onde o código passa desde o momento em que é enviado ao repositório até o momento em que vai para o ar. Automatizar a varredura de segurança nesse fluxo significa que nenhuma imagem de container vulnerável consegue escapar para a produção sem passar pelo crivo do scanner. Assim como cuidamos para que o pipeline não trave por falta de espaço limpando o Docker regularmente, precisamos garantir que ele barre falhas críticas de segurança antes de finalizar o empacotamento.

Quando configuramos o Trivy dentro de ferramentas como GitHub Actions, GitLab CI ou Jenkins, criamos uma etapa específica logo após a construção da imagem do container. Se o scanner encontrar vulnerabilidades acima de um limite pré-estabelecido, como o nível crítico ou alto, a esteira é interrompida imediatamente. Isso impede que o código defeituoso seja enviado para os servidores dos clientes, forçando os desenvolvedores a atualizarem as dependências antes de tentar um novo deploy.

Implementando a varredura passo a passo no seu pipeline

Para colocar essa estratégia em prática, podemos utilizar uma abordagem direta baseada em linha de comando que se encaixa facilmente em qualquer script de automação atual. O primeiro passo consiste em baixar ou utilizar a imagem oficial do Trivy diretamente na sua esteira de CI/CD para analisar a imagem do container recém-construída. O comando abaixo demonstra como realizar essa varredura bloqueando o processo caso sejam encontradas falhas críticas.

Execute a verificação com o comando a seguir no seu ambiente de automação:

  1. Construa a imagem do seu container localmente ou no servidor de build usando o comando de build padrão.
    docker build -t minha-aplicacao:latest .
  2. Execute o container do Trivy apontando para a imagem gerada, configurando o parâmetro para falhar em caso de vulnerabilidades críticas.
    trivy image --exit-code 1 --severity CRITICAL minha-aplicacao:latest
  3. Analise o relatório gerado no terminal e atualize as dependências apontadas antes de tentar um novo envio para produção.
    echo 'Varredura concluída. Corrija os pacotes listados antes do deploy.'

O uso do parâmetro de código de saída é fundamental, pois é ele que avisa ao servidor de CI/CD que o processo falhou, interrompendo o ciclo de entrega de forma automática. Dessa forma, a segurança deixa de depender da atenção manual da equipe e passa a ser uma regra inegociável do sistema.

Lidando com falsos positivos e exceções operacionais

No mundo real do desenvolvimento de software, nem toda vulnerabilidade apontada por um scanner representa um risco real para a sua aplicação específica. Às vezes, uma falha é detectada em um pacote do sistema operacional que sua aplicação sequer utiliza ou cujos vetores de ataque estão bloqueados por outras camadas de segurança. Nesses casos, o excesso de alarmes falsos pode gerar frustração na equipe e fazer com que os alertas reais comecem a ser ignorados.

Para resolver esse dilema sem abrir mão da segurança, o Trivy permite o uso de arquivos de configuração de exceção conhecidos como arquivos .trivyignore. Nesses arquivos, você pode listar vulnerabilidades específicas que foram analisadas e julgadas como de baixo risco para o seu cenário, justificando formalmente a decisão. Manter essa lista enxuta e revisada periodicamente garante que o pipeline continue rigoroso contra ameaças reais sem paralisar o fluxo de entregas por burocracia excessiva. Para aprofundar esses conceitos na prática em produção, confira também nossa análise técnica sobre Como usar embeddings locais com ChromaDB na busca semântica.

Considerações finais sobre a blindagem de containers

Automatizar a varredura de vulnerabilidades em containers com o Trivy representa uma evolução indispensável na maturidade técnica de qualquer equipe de engenharia. Ao integrar essa verificação diretamente na esteira de CI/CD, eliminamos a dependência da checagem manual e garantimos que nenhum código comprometido alcance os servidores de produção. A segurança deixa de ser um gargalo no final do projeto e passa a ser parte integrante e invisível do fluxo diário de desenvolvimento, protegendo tanto a empresa quanto os usuários finais contra ameaças imprevistas.