Analisar vulnerabilidades em uma imagem Docker
Nesta etapa, aprenderemos como analisar vulnerabilidades em uma imagem Docker usando o Trivy. O Trivy é um scanner de segurança abrangente e versátil. Ele pode detectar vulnerabilidades em pacotes de sistema operacional (Alpine, RHEL, CentOS, Debian, Ubuntu, etc.) e dependências de aplicativos (Bundler, Composer, npm, yarn, etc.). Além disso, o Trivy suporta vários alvos de varredura, como imagens de contêiner, sistemas de arquivos e repositórios Git.
Primeiro, vamos baixar uma imagem Docker vulnerável que usaremos para análise. Usaremos a imagem library/ubuntu:18.04, que é conhecida por ter algumas vulnerabilidades.
docker pull library/ubuntu:18.04
Você deve ver uma saída indicando que a imagem está sendo baixada.
18.04: Pulling from library/ubuntu
...
Status: Downloaded newer image for ubuntu:18.04
docker.io/library/ubuntu:18.04
Agora que temos a imagem, precisamos instalar o Trivy. Como o Trivy não está pré-instalado no ambiente LabEx, faremos o download e a instalação. Faremos o download da versão mais recente do repositório oficial do GitHub.
wget https://github.com/aquasecurity/trivy/releases/download/v0.50.1/trivy_0.50.1_Linux-64bit.deb
Este comando baixa o pacote Debian do Trivy. Você deve ver uma saída semelhante a esta:
--2023-10-27 08:00:00-- https://github.com/aquasecurity/trivy/releases/download/v0.50.1/trivy_0.50.1_Linux-64bit.deb
Resolving github.com (github.com)... 140.82.113.4
Connecting to github.com (github.com)|140.82.113.4|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://objects.githubusercontent.com/github-production-release-asset-2e65be/140000000/...?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=... [following]
--2023-10-27 08:00:00-- https://objects.githubusercontent.com/github-production-release-asset-2e65be/140000000/...
Resolving objects.githubusercontent.com (objects.githubusercontent.com)... 185.199.108.133, 185.199.109.133, 185.199.110.133, ...
Connecting to objects.githubusercontent.com (objects.githubusercontent.com)|185.199.108.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 50000000 (48M) [application/octet-stream]
Saving to: ‘trivy_0.50.1_Linux-64bit.deb’
trivy_0.50.1_Linux-64bit.deb 100%[=================================================>] 47.68M --.-MB/s in 0.5s
2023-10-27 08:00:01 (95.3 MB/s) - ‘trivy_0.50.1_Linux-64bit.deb’ saved [50000000/50000000]
Agora, instale o pacote baixado usando dpkg.
sudo dpkg -i trivy_0.50.1_Linux-64bit.deb
Você deve ver uma saída indicando o processo de instalação.
Selecting previously unselected package trivy.
(Reading database ... 100000 files and directories currently installed.)
Preparing to unpack trivy_0.50.1_Linux-64bit.deb ...
Unpacking trivy (0.50.1) ...
Setting up trivy (0.50.1) ...
Com o Trivy instalado, agora podemos escanear a imagem Docker library/ubuntu:18.04 em busca de vulnerabilidades.
trivy image library/ubuntu:18.04
O Trivy começará a escanear a imagem. Isso pode levar alguns instantes, pois ele baixa bancos de dados de vulnerabilidades e analisa as camadas da imagem. Você verá uma saída mostrando o progresso e, em seguida, um relatório detalhado das vulnerabilidades encontradas.
2023-10-27T08:00:05.000+0000 INFO Need to update DB
2023-10-27T08:00:05.000+0000 INFO Downloading DB...
...
2023-10-27T08:00:10.000+0000 INFO Detected OS: ubuntu
2023-10-27T08:00:10.000+0000 INFO Detecting Ubuntu vulnerabilities...
...
library/ubuntu:18.04 (ubuntu 18.04)
===================================
Total: 100 (UNKNOWN: 0, LOW: 50, MEDIUM: 30, HIGH: 15, CRITICAL: 5)
┌───────────────────────────────────────────────────┬─────────────────────────────────┬──────────┬───────────────────┬───────────────────────────────────────────────────────────┐
│ Library/Package │ Vulnerability │ Severity │ Installed Version │ Fixed Version │
├───────────────────────────────────────────────────┼─────────────────────────────────┼──────────┼───────────────────┼───────────────────────────────────────────────────────────┤
│ apt │ CVE-YYYY-XXXX │ HIGH │ 1.6.12 │ 1.6.14 │
│ ... │ ... │ ... │ ... │ ... │
└───────────────────────────────────────────────────┴─────────────────────────────────┴──────────┴───────────────────┴───────────────────────────────────────────────────────────┘
A saída fornece um resumo do total de vulnerabilidades encontradas, categorizadas por gravidade (UNKNOWN, LOW, MEDIUM, HIGH, CRITICAL). Em seguida, lista cada vulnerabilidade com detalhes como o pacote afetado, o ID da vulnerabilidade (por exemplo, CVE-YYYY-XXXX), o nível de gravidade, a versão instalada do pacote e a versão corrigida, se disponível. Este relatório ajuda você a entender a postura de segurança de sua imagem Docker e identificar áreas que precisam de remediação.