
O trivy é uma ferramenta desenvolvido pela empresa Aqua security e tambem é um dos topicos cobrados no exame da CKS (Certified Kubernetes Security Specialist) para quem pretende tirar. Abaixo alguns links com mais informações do trivy:
Com o trivy você consegue fazer as seguintes verificações:
- Scan de Vulnerabilidades
- Erros de configuração em IaC
- Detectar dados sensíveis
É possível escanear os seguintes targets:
- Imagem de Container
- Repositório de algum sistema de versionamento de código como por exemplo o GitHub
- Sistema de Arquivos
- Clusters Kubernetes
- Contas AWS
O objectivo desse artigo é demonstrar o scan de vulnerabilidades em uma imagem de container e em um repositório do github usando o Trivy.
Instalação
Para usar o trivy você pode instalar diretamente na sua máquina ou usar o trivy como um container do Docker.
Instalação no Linux
No meu caso vou demonstrar a instalação em uma máquina Linux. Para verificar a última versão do trivy consultar esse link. Abaixo os comandos que você deve executar para fazer o download e a instalação:
wget https://github.com/aquasecurity/trivy/releases/download/v0.46.0/trivy_0.46.0_Linux-64bit.deb
sudo dpkg -i trivy_0.46.0_Linux-64bit.deb
Para validar a instalação executar o comando abaixo:
trivy version
Docker
Para utilizar o trivy usando um container basta usar a imagem aquasec/trivy:latest. Por exemplo para verificar qual a versão do Trivy executar o comando abaixo:
docker run aquasec/trivy:latest version
Scan de Imagem de Container
Para executar um scan de vulnerabilidades em alguma imagem de container basta executar o comando abaixo
trivy image nginx
docker run aquasec/trivy:latest image nginx
Onde nginx é o nome da imagem de container
Deverá aparecer uma saída similar abaixo:

Você pode filtar por severidade HIGH e CRITICAL usando o comando abaixo:
trivy image nginx --severity=HIGH --severity=CRITICAL
Agora deverá aparecer somente as vulnerabilidades com a severidade HIGH e CRITICAL conforme imagem abaixo:

Na coluna status podemos verificar que o status esta como affected isso quer dizer que não existe uma solução para essas vulnerabilidades ainda.
Scan de repositório
Agora vamos fazer um scan de vulnerabilidades no seguinte repositório executando o comando abaixo filtrando apenas as vulnerabilidades com severidade HIGH.
trivy repository https://github.com/prometheus/prometheus --severity=HIGH
Abaixo segue a saída do comando:

Nesse caso a coluna status esta com o status fixed isso quer dizer que já existe uma solução para a vulnerabilidade. Na coluna Fixed Version está a versão que a vulnerabilidade foi corrigida.
Integração
O trivy faz integração com diversas alicações e ferramentas que permitem adicionar segurança ao workflow da sua aplicação como por exemplo ferramentas de CI/CD e com IDEs. Para mais informações sobre essas integrações consultar esse link.
Conclusão
O objetivo desse artigo foi demonstrar um pouco da utilização do trivy para efetuar scan de vulnerabilidades.