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

Criando Container Runtimes mais Seguras com Wolfi

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on. →

Criando Container Runtimes mais Seguras com Wolfi

Avatar for Erika Heidi

Erika Heidi

June 07, 2024

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