Share
Embed
Transcript
21 slides
-
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 -
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 -
• 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? -
• 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? -
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 -
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 -
• 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? -
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 -
Materiais de Referência (em inglês) • Chainguard Academy • Wolfi
• Chainguard Images Directory • Migrating to Chainguard Images • Debugging Distroless Images