Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Criando Container Runtimes mais Seguras com Wolfi

Criando Container Runtimes mais Seguras com Wolfi

Erika Heidi

June 07, 2024
Tweet

More Decks by Erika Heidi

Other Decks in Programming

Transcript

  1. O que veremos hoje • Introdução a Software Supply Chain

    Security e CVEs • Comparando CVEs em imagens populares • Wolfi, a Linux distro criada para contêineres • Dicas gerais para tornar suas runtimes mais seguras • Q&A
  2. Software Supply Chain Security • Da mesma forma que acontece

    em outras indústrias, o processo de criar, construir, e entregar software depende de uma larga cadeia de dependências que chamamos "software supply chain". • Uma vulnerabilidade em qualquer ponto dessa cadeia (seja intencional ou maliciosa) é um exemplo de uma supply chain potencialmente comprometida • Ações preventivas incluem limitar a superfície de ataque e utilizar assinaturas e outros artefatos para garantir a proveniência das deps
  3. • Sigla para Common Vulnerabilities and Exposures, CVEs são registros

    de vulnerabilidades de software tornadas públicas • O CVE Program foi criado em 1999 e tem hoje mais de 200.000 vulnerabilidades registradas, com novas vulnerabilidades adicionadas diariamente • O framework CVSS (Common Vulnerability Scoring System) fornece um framework para classificar vulnerabilidades por nível de severidade (low, medium, high, e critical) • CVE scanners como Grype e Trivy podem ser usados para escanear imagens de contêiner e detectar a presença de pacotes afetados • Corrigir CVEs é um trabalho muito custoso devido a fatores como falso positivos e a demora para ter pacotes já corrigidos disponíves "upstream" O que são CVEs?
  4. • Em resumo, uma mini Linux distro otimizada para criação

    de imagens de contêiner • Baseada no apk (the Alpine package manager) • Pipelines de build noturno, updates rápidos • Possibilita a criação de imagens distroless O que é Wolfi?
  5. O que é distroless? • Imagens mínimas contendo apenas o

    que é necessário para executar uma aplicação • O aspecto minimalista resulta em uma superfície de ataque bastante reduzida • Menor superfície de ataque = menos CVEs • Images distroless não possuem package manager ou shell, o que torna mais difícil exploitar imagens do tipo
  6. FROM cgr.dev/chainguard/php:latest-dev AS builder USER root COPY . /app RUN

    cd /app && chown -R php.php /app USER php RUN composer install --no-progress --no-dev --prefer-dist FROM cgr.dev/chainguard/php:latest COPY --from=builder /app /app ENTRYPOINT [ "php", "/app/autodocs" ] Multi-Stage Builds for CLI PHP Applications
  7. • Design que facilita builds reproduzíveis • O estado do

    sistema não é modificado quando o apk resolver não consegue "fix the world" Por que APK?
  8. Recomendações Gerais para Segurança de Contêineres • Usar images de

    base com menos CVEs (por óbvias razões) • Usar multi-stage builds para reduzir a superfície de ataque, se possível usando uma imagem distroless como runtime • Atenção a usuários e permissões, ter um usuário menos privilegiado como default • Atenção ao copiar arquivos para o container, use um .dockerignore para ignorar qualquer arquivo com dados sensíveis • Manter a imagem atualizada
  9. Materiais de Referência (em inglês) • Chainguard Academy • Wolfi

    • Chainguard Images Directory • Migrating to Chainguard Images • Debugging Distroless Images