Slide 1

Slide 1 text

Chainguard Criando Container Runtimes mais Seguras com Wolfi chainguard.dev

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

Introdução a Software Supply Chain Security e CVEs

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

● 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?

Slide 6

Slide 6 text

Comparando CVEs em imagens populares

Slide 7

Slide 7 text

How many are too many?

Slide 8

Slide 8 text

CVEs Compared: Alpine vs Chainguard Images

Slide 9

Slide 9 text

Comparing Images: PHP (Alpine vs Chainguard)

Slide 10

Slide 10 text

Demo: CVE Scanners

Slide 11

Slide 11 text

Wolfi, a Linux distro criada para contêineres

Slide 12

Slide 12 text

● 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?

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

● 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?

Slide 17

Slide 17 text

Dicas gerais para tornar suas imagens mais seguras

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

Questions?

Slide 20

Slide 20 text

Materiais de Referência (em inglês) ● Chainguard Academy ● Wolfi ● Chainguard Images Directory ● Migrating to Chainguard Images ● Debugging Distroless Images

Slide 21

Slide 21 text

chainguard.dev | edu.chainguard.dev @chainguard_dev chainguard-dev