Trivy escaneia arquivos Docker Compose

Um artigo da XDA este mês revelou algo que a maioria dos homelabs aprende do jeito difícil: um arquivo Docker Compose funcionando não é um arquivo Docker Compose seguro. As portas se ligam a 0.0.0.0 quando deveriam ficar em 127.0.0.1, os serviços de banco de dados terminam na mesma ponte pública que o proxy reverso, e os painéis de administração chegam com credenciais padrão que ninguém lembrou de girar. A solução é um scanner que lê o arquivo compose, a imagem e a configuração do contêiner juntos, e sinaliza o que está exposto. Testamos sete ferramentas de segurança do Docker Compose no Windows, macOS e Linux contra uma pilha de homelab real, focando nas verificações que capturam configurações incorretas reais em vez de ruído.

O que procurar em um scanner de segurança do Docker Compose

A análise ciente de Compose é a primeira verificação. Um scanner que apenas lê Dockerfile perderá as ligações de porta, topologia de rede e blocos de ambiente que residem em docker-compose.yml. A escolha correta lê ambos e entende expose versus ports, redes em modo de host e montagens vinculadas que chegam a /etc ou /var/run/docker.sock.

Os dados de vulnerabilidade devem ser atuais. Isso significa um feed de CVE que é atualizado diariamente, cobertura de pacotes de distribuição e dependências em nível de linguagem, e uma maneira de saber quais descobertas são realmente exploráveis no contêiner em execução em vez de apenas presentes na imagem. Uma ferramenta que exibe cada CVE independentemente do contexto inunda um homelab com avisos e é ignorada dentro de uma semana.

A saída amigável ao CI é o que transforma uma varredura única em uma verificação durável. Saída JSON ou SARIF, códigos de saída diferentes de zero em descobertas acima de uma severidade escolhida e comentários de supressão embutidos no arquivo compose permitem que a mesma ferramenta viva em um gancho de pré-commit git, um trabalho do GitHub Actions ou um cron noturno. A operação local-first é importante para um homelab, sem telemetria, sem conta de nuvem forçada.

Comparação rápida

Aplicativo Melhor para Plataformas Plano gratuito Preço inicial Classificação
Trivy Scanner de imagem e compose tudo-em-um Windows, macOS, Linux Sim Gratuito 4.8
Docker Bench for Security Auditoria de host e daemon CIS Linux, macOS Sim Gratuito 4.6
Grype Varredura rápida de vulnerabilidades de imagem Windows, macOS, Linux Sim Gratuito 4.6
Dockle Linter de práticas recomendadas de imagem Windows, macOS, Linux Sim Gratuito 4.5
Hadolint Linter de Dockerfile com regras de segurança Windows, macOS, Linux Sim Gratuito 4.6
Checkov Scanner de política de IaC e compose Windows, macOS, Linux Sim Gratuito 4.6
Sysdig CLI Scanner Varredura profunda de imagem ciente do tempo de execução Windows, macOS, Linux Teste Modesto para uso comercial 4.5

1. Trivy, a primeira passagem padrão para qualquer pilha de compose

Trivy é a ferramenta em que a maioria dos homelabs desce primeiro, e merece o lugar. Ela escaneia imagens de contêiner para vulnerabilidades do SO e linguagem, lê Dockerfiles e arquivos compose para configurações incorretas e agora inclui varredura de segredos que captura uma chave de API comprometida em um arquivo env. Uma única execução de trivy config docker-compose.yml contra uma pilha de homelab real produz um relatório legível em menos de um minuto.

A atualização do banco de dados é executada a cada varredura por padrão, mantendo as descobertas atuais sem um trabalho cron. Os modos de saída cobrem uma tabela legível por humanos, JSON, SARIF e SBOMs CycloneDX, e os códigos de saída funcionam em um pipeline de CI. É gratuito e código aberto, funciona como um único binário e permanece útil muito depois da varredura inicial.

2. Docker Bench for Security, a auditoria CIS para o host e o daemon

Docker Bench for Security é um script shell que percorre o Docker Benchmark CIS contra um host em execução. Ele verifica a configuração do daemon, os contêineres em execução e as imagens já no disco em relação a cerca de cem controles documentados e imprime um relatório com status de pass, warn, info e note.

Não é um analisador de compose, mas é a forma mais rápida de capturar configurações incorretas em nível de host que um scanner de compose não consegue ver: um daemon Docker ouvindo em TCP sem TLS, contêineres --privileged, falta de no-new-privileges, padrões de driver de log e permissões de arquivo em /etc/docker. Execute uma vez por mês em qualquer host que execute um serviço público e fixe os resultados na wiki.

3. Grype, varredura rápida de vulnerabilidades de imagem emparelhada com Syft

Grype é o scanner de vulnerabilidades de código aberto da Anchore. Ele lê uma imagem diretamente ou um SBOM produzido por Syft e retorna uma lista de CVEs conhecidas contra pacotes instalados e dependências em nível de linguagem. As varreduras são executadas em segundos porque Grype envia seu banco de dados de vulnerabilidades localmente e é atualizado em um cronograma.

O motivo para emparelhá-lo com Trivy é a cobertura. Trivy é mais amplo; Grype frequentemente captura pacotes em nível de linguagem que Trivy perde, especialmente em imagens Python e Node. Na prática, executamos ambos no mesmo pipeline e falhamos em qualquer descoberta de alta severidade de qualquer um. Grype não adiciona telemetria forçada e nenhuma conta, e funciona da mesma forma em todos os SOs de desktop.

4. Dockle, linter de práticas recomendadas de imagem para a etapa de CI

Dockle é um linter de imagem de contêiner alinhado com as práticas recomendadas do CIS. Onde Trivy se concentra em CVEs e Grype em vulnerabilidades de pacotes, Dockle verifica como a imagem é construída: USER está definido para uma conta não-root, um binário sudo desnecessário é enviado dentro, os segredos são assados nas camadas, a imagem expõe um shell que não precisa. As descobertas mapeiam para números de controle do CIS.

É um pequeno binário que se encaixa em um trabalho de CI como um único comando por imagem. A saída é curta o suficiente para ser lida e o código de saída facilita o gating. Junto com um scanner de compose cobre os dois lados do mesmo problema: o que o arquivo compose conecta e o que a imagem contém antes de ser conectada.

5. Hadolint, linter de Dockerfile que detecta erros adjacentes ao compose

Hadolint lê um Dockerfile e sinaliza os padrões que se tornam problemas de compose: credenciais codificadas, tags faltantes, apt-get install -y sem limpeza, usuários root deixados para trás e ADD usado onde COPY pertence. Ele analisa o Dockerfile com um analisador de shell Haskell real, é por isso que detecta problemas que uma ferramenta baseada em regex perde.

Hadolint é upstream de compose. Corrija o Dockerfile uma vez e o scanner de compose tem menos do que reclamar. Ele funciona como um único binário, se integra perfeitamente com pre-commit ou CI e adiciona uma das verificações de sinal mais alto por linha de código que medimos em projetos de homelab.

6. Checkov, política como código entre compose, Kubernetes e Terraform

Checkov é um scanner de política como código que fala docker-compose, manifestos Kubernetes, Terraform, Helm e uma dúzia de outros formatos IaC. Em um arquivo compose, ele sinaliza soquetes daemon expostos, contêineres root, modo de rede do host, limites de recursos ausentes e ligações de porta pública. As políticas são enviadas com padrões sensatos e podem ser ajustadas por repositório com um arquivo de configuração.

O motivo para escolhê-lo em vez de uma ferramenta de formato único é a mistura. Um homelab que executa Docker Compose hoje mas planeja passar para um pequeno cluster k3s ou Nomad amanhã obtém as mesmas verificações em relação a ambos, e os mesmos comentários de supressão são transferidos. Ele funciona em qualquer lugar onde o Python funciona, o que cobre todos os SOs de desktop.

7. Sysdig CLI Scanner, a opção mais profunda quando o contexto de tempo de execução importa

Sysdig CLI Scanner combina varredura de vulnerabilidades com conscientização de tempo de execução. Ele lê a imagem, correlaciona CVEs em relação a um feed de vulnerabilidades e, quando emparelhado com uma implantação Sysdig, filtra para pacotes realmente carregados em tempo de execução. Esse único filtro frequentemente transforma um relatório de centenas de descobertas em uma lista curta de uma dúzia.

O scanner funciona como um único binário em todos os SOs de desktop. O nível gratuito cobre avaliação e pequenas implantações; o uso comercial cai sob um plano pago. Para um homelab sério ou uma pequena equipe que hospeda serviços fora da LAN, o filtro de tempo de execução vale a pena. Para uma pilha puramente privada, Trivy mais Grype cobre a maioria do mesmo terreno gratuitamente.

Como escolher o correto

A resposta padrão para um homelab é Trivy. Instale-o, execute-o em relação ao arquivo compose e corrija o que aparecer. Ele cobre CVEs de imagem, configurações incorretas de compose e detecção de segredos em um único binário. Se um homelab executa serviços públicos, adicione Docker Bench for Security como uma auditoria mensal em relação ao próprio host, pois um scanner de compose não consegue ver problemas em nível de daemon.

Para equipes que constroem suas próprias imagens, Hadolint captura erros na etapa de Dockerfile e Dockle captura os que sobrevivem à imagem construída. Grype merece um lugar ao lado do Trivy quando a carga de trabalho é pesada em Python ou Node, porque tende a encontrar CVEs em nível de linguagem que outros perderam. Checkov é a escolha correta para um repositório de IaC misto. Sysdig CLI Scanner é a opção mais profunda para equipes que desejam contexto de tempo de execução e estão prontas para emparelhá-lo com um backend Sysdig. Empilhar todos os sete é excessivo; escolha dois ou três e execute-os a cada commit.

FAQ

Como faço para escanear um docker-compose.yml para problemas de segurança? Instale Trivy e execute trivy config docker-compose.yml. Ele relata exposição de porta, contêineres root, soquetes Docker montados e padrões de segredos em um relatório de texto simples. Adicione --exit-code 1 --severity HIGH,CRITICAL para falhar em um pipeline de CI em descobertas sérias.

Trivy é melhor do que Grype para segurança do Docker? São complementares em vez de concorrentes. Trivy cobre uma superfície mais ampla, arquivos de compose, imagens e IaC, enquanto Grype frequentemente captura mais CVEs em nível de linguagem em imagens Python, Node e Ruby. Executar ambos no mesmo pipeline captura mais do que qualquer um sozinho.

Qual é a diferença entre Dockle e Hadolint? Hadolint verifica o Dockerfile antes da construção da imagem. Dockle verifica a própria imagem construída. Juntos, cobrem o mesmo problema de ambos os lados: padrões ruins de construção e estado ruim de imagem.

Posso executar essas ferramentas sem uma conexão com a Internet? Trivy, Grype e Sysdig CLI Scanner todos suportam operação offline por ar isolado importando o banco de dados de vulnerabilidades de um espelho. Dockle, Hadolint e Docker Bench for Security funcionam offline por padrão porque suas regras são incorporadas.

Esses scanners funcionam no Windows e macOS? Sim. Trivy, Grype, Dockle, Hadolint, Checkov e Sysdig CLI Scanner enviam binários nativos ou contêineres para Windows, macOS e Linux. Docker Bench for Security é um script bash e funciona no macOS e Linux; no Windows, ele funciona dentro do WSL.

Essas ferramentas são gratuitas para uso pessoal? Todos os sete têm um nível gratuito para uso pessoal e homelab. Trivy, Grype, Dockle, Hadolint, Checkov e Docker Bench for Security são totalmente código aberto. Sysdig CLI Scanner é gratuito para avaliação e pequeno uso, com um plano pago para implantações comerciais.