Aniversário
Alura 12 anos

20% OFF

Falta pouco!

00

DIAS

00

HORAS

00

MIN

00

SEG

Alura > Cursos de DevOps > Cursos de Containers > Conteúdos de Containers > Primeiras aulas do curso Docker Scout e Trivy: analisando e protegendo imagens e containers

Docker Scout e Trivy: analisando e protegendo imagens e containers

Buscando falhas com Docker Scout - Apresentação

Introdução ao Curso

Olá, meu nome é Leonardo Sartorello, sou instrutor na Alura, e dou as boas-vindas a mais um curso.

Audiodescrição: Leonardo é um homem branco, com barba e cabelos castanhos, e olhos azuis. Atrás dele, há uma parede com dois quadros pendurados, iluminada pelas cores vermelha e azul.

Objetivo do Curso

Este curso é destinado a quem já possui conhecimento em Docker e deseja se aprofundar na área de segurança, especialmente nas áreas de contêineres e imagens do Docker. Nele, aprenderemos a verificar imagens em busca de falhas de segurança, o que são CVEs (Common Vulnerabilities and Exposures, ou Vulnerabilidades e Exposições Comuns) e como elas são classificadas.

Ferramentas e Práticas de Segurança

Nesta aula, vamos explorar duas ferramentas: o Docker Scout e o Trivi, que realizarão análises de segurança para nós. Também identificaremos erros nas configurações do nosso Dockerfile, com o objetivo de torná-los mais eficientes e robustos.

Dicas e Recursos Adicionais

Por fim, compartilharemos algumas dicas de segurança relacionadas ao Docker. Abordaremos tudo isso de maneira prática, utilizando uma aplicação em Go, para que possamos praticar e identificar todas as possíveis falhas de segurança que esse container pode apresentar.

Aproveitem os recursos da plataforma, que além dos vídeos, incluem atividades, o fórum e a comunidade no Discord. Vamos estudar?

Buscando falhas com Docker Scout - Instalando o Docker Scout

Importância da Segurança em Aplicações e Ambientes Docker

Quando falamos de segurança, geralmente pensamos na segurança de nossa aplicação. No entanto, também é importante considerar a segurança do ambiente onde essa aplicação está sendo executada. No caso de containers Docker, devemos pensar na segurança do Docker e dos containers. Vamos analisar como podemos identificar e corrigir falhas de segurança em nossas imagens Docker. Para isso, utilizaremos uma ferramenta desenvolvida pelo próprio pessoal do Docker, o Docker Scout. Essa ferramenta examina nossas imagens e verifica quais são as falhas de segurança conhecidas dentro delas.

Instalação do Docker Scout

Vamos ver como instalar o Docker Scout. Para isso, abriremos o navegador e buscaremos por "Docker Scout install". Após passar pelos anúncios, encontramos a documentação do Docker: "Install Docker Docs". Clicamos no link da documentação do Docker, que nos fornece o passo a passo para a instalação do Docker Scout.

Se estivermos utilizando o Docker Engine, no caso do Linux, ele não vem pré-instalado, então precisamos realizar a instalação. Se estivermos usando o Docker Desktop, que é comum no Windows e no Mac, não é necessário fazer essa instalação.

Caso seja necessário, como é feita a instalação? Existem opções de script de instalação ou instalação manual, tanto para Linux, Mac e Windows. No meu caso, estou em uma máquina Linux usando o Docker Engine, portanto, preciso realizar a instalação. Vou copiar o script de instalação e executá-lo automaticamente. Lembrando que já estou com o Docker instalado. Se ainda não tiver o Docker instalado, é necessário voltar ao preparo do ambiente e realizar a instalação do Docker.

Para instalar o Docker Scout, utilizamos o seguinte comando no terminal:

curl -fsSL https://raw.githubusercontent.com/docker/scout-cli/main/install.sh -o install-scout.sh
sh install-scout.sh

Execução do Docker Scout e Análise de Imagens

Vou abrir o terminal dentro do Visual Studio Code para podermos ver os arquivos de nossa aplicação e colar o script de instalação. Após dar Enter, deixaremos o script executar, realizando todas as instalações necessárias. Quando terminar, podemos começar a explorar nossa imagem.

Para isso, vamos executar o Docker Scout seguido do quickview. Em seguida, especificamos o nome da imagem. Qual imagem estamos utilizando? Qual projeto vamos utilizar? Vamos disponibilizar esse projeto para vocês. Haverá uma atividade extra com um link para o GitHub do nosso projeto inicial. Lá, teremos todo o projeto com o dockerfile que montará essa imagem para nós.

Primeiro, vamos verificar se o Docker Scout está instalado corretamente executando o comando:

docker scout

Já montamos a imagem e a subimos no Docker Hub. O nome atual é o nosso nome de usuário, Leonardo Sartorello, seguido de /segurança_docker_2.1. Portanto, temos o nome de usuário, o nome da imagem e a versão da imagem, a tag. Vamos rodar o quickview e verificar o que o Docker Scout identifica para nós. Para isso, utilizamos o comando:

docker scout quickview leonardosartorello/seguranca_docker:1

Ao pressionar Enter, o processo pode demorar um pouco, pois ele analisará a imagem e trará um banco de dados com todas as vulnerabilidades conhecidas, realizando toda a análise para nós.

Relatório de Vulnerabilidades e Próximos Passos

Após a análise, recebemos um relatório rápido sobre a segurança da nossa aplicação. O que temos? Nossa imagem, que é o target, possui cinco vulnerabilidades críticas, 41 vulnerabilidades altas, 31 medianas e 9 leves. Vamos entender melhor o que são essas vulnerabilidades e o que precisamos fazer para corrigi-las. Vamos examinar mais detalhadamente quais são essas vulnerabilidades.

Para isso, executaremos o Docker Scout novamente, mas, em vez de Quick View, utilizaremos CVES. Essa sigla refere-se a Common Vulnerability and Exposures (Vulnerabilidades e Exposições Comuns). É o método que utilizamos para identificar problemas. Ele nos trará todas as vulnerabilidades listadas, uma a uma, para que possamos entender o que são e o que podemos fazer. Vamos filtrar essa lista e compreender melhor o que elas representam. Vamos lá?

Para listar todas as vulnerabilidades, utilizamos o comando:

docker scout cves leonardosartorello/seguranca_docker:1

Com isso, podemos analisar detalhadamente cada vulnerabilidade e planejar as correções necessárias para garantir a segurança de nossa aplicação Docker.

Buscando falhas com Docker Scout - Filtrando as vulnerabilidades

Execução do Docker Scout e Análise de Vulnerabilidades

Neste momento, já executamos nosso código do docker-scout-cvs, que nos trouxe uma lista com 86 vulnerabilidades diferentes dentro dessa aplicação, dentro desse container. Vamos analisar melhor essa lista, entender como ela funciona e o que são essas CVEs (Common Vulnerabilities and Exposures).

Para começar, utilizamos o seguinte comando para listar as vulnerabilidades:

docker scout cves leonardosartorello/seguranca_docker:1

Exemplo de Vulnerabilidade: GNU-PG2

No terminal, vamos examinar, por exemplo, a vulnerabilidade GNU-PG2. A ordem das vulnerabilidades pode variar, e novas vulnerabilidades podem surgir, pois são descobertas constantemente. A primeira informação que recebemos é a categoria da vulnerabilidade, que neste caso é considerada baixa (low). O GNU-PG2 é a aplicação que possui a vulnerabilidade, e faz parte do Ubuntu por padrão.

Mais abaixo, encontramos o número único da CVE, que permite sua identificação. Também há um link que podemos abrir para entender melhor como a CVE funciona. Além disso, há a Affected Range, que indica as versões afetadas, e a Fixed Version, que mostra a versão corrigida. Neste caso, aparentemente, ainda não foi corrigido. O CVSS Score é 3.3, em uma escala de 0 a 10, onde 0 indica ausência de vulnerabilidade e 10 indica uma vulnerabilidade extremamente crítica.

Detalhamento da CVE e Métricas de Severidade

Vamos abrir o link da CVE para entender melhor o funcionamento dessas vulnerabilidades. No link, encontramos um sumário sobre como a CVE funciona, como é acionada e o que causa. Ao descer um pouco, vemos quem é o Advisor, o responsável pelo pacote, e quem pode classificar essa CVE. No nosso caso, é o Ubuntu, com um Score de 3.3, como vimos anteriormente.

A questão é como esse Score é calculado, como se chega a 3.3 e como se determina que é uma vulnerabilidade baixa (Low). Ao descer mais, encontramos o Severity and Metrics, que são as métricas utilizadas. Por exemplo, o vetor de ataque é local, o que significa que a pessoa já precisa ter um console aberto na máquina para explorar a vulnerabilidade, não podendo fazê-lo pela rede. Isso dificulta a exploração da vulnerabilidade.

A complexidade é baixa, facilitando a exploração, e os privilégios necessários também são baixos, permitindo que qualquer usuário com acesso ao console da máquina explore a vulnerabilidade. Outro aspecto importante é a confidencialidade, integridade e disponibilidade. Isso significa que, ao explorar a vulnerabilidade, não se entrega nenhuma informação sobre outras aplicações ou a própria aplicação presente na máquina.

A integridade significa que não é possível roubar nenhum tipo de dado da nossa aplicação. Portanto, também é None (nenhum). A Availability (disponibilidade) indica que o impacto é baixo. Ou seja, mesmo que a vulnerabilidade seja explorada, a performance pode ser um pouco reduzida, mas não devemos perder a disponibilidade da aplicação ou do servidor em si. Isso faz com que essa vulnerabilidade seja considerada pequena. É importante corrigir, mas não é algo que precisa ser feito de forma urgente.

Análise de Vulnerabilidade Crítica

Vamos agora inverter a situação e analisar uma vulnerabilidade crítica para observar as diferenças. Subindo na lista, encontramos várias vulnerabilidades médias e baixas, até chegarmos às altas e críticas. Vamos selecionar uma crítica com um CSV score de 9.8, quase atingindo o máximo de 10. Ao abrir essa vulnerabilidade, podemos observar as diferenças entre uma crítica e uma baixa.

O CSV score de 9.8 foi atribuído pelo GitLab. O vetor de ataque ocorre através da rede, sendo muito fácil de ser executado, com complexidade baixa. Não é necessário nenhum tipo de privilégio ou interação do usuário. Uma vez executada através da rede, essa vulnerabilidade expõe todas as informações referentes à nossa máquina e aplicação, incluindo todos os dados contidos nela. Além disso, podemos perder acesso à aplicação, pois a disponibilidade é alta, o que significa que provavelmente perderemos acesso à aplicação ou até mesmo ao servidor. Portanto, é uma vulnerabilidade extremamente importante de ser corrigida.

Filtragem e Correção de Vulnerabilidades Críticas e Altas

Vamos analisar como podemos realizar essa correção mais adiante. Agora que sabemos o que é uma vulnerabilidade crítica e uma baixa, e que as altas também requerem bastante cuidado, vamos filtrar a lista para mostrar apenas as críticas e altas, que exigem mais atenção.

Para isso, utilizaremos o código do docker-scout-cvs. Primeiro, limpamos a tela para facilitar a leitura:

clear

Em seguida, executamos o comando docker-scout-cvs, como fizemos anteriormente. Após o cvs e antes do nome da imagem, digitamos -only-severity para filtrar apenas por algumas severidades. Queremos as críticas (critical) e as altas (high). Portanto, digitamos:

docker scout cves leonardosartorello/seguranca_docker:1 --only-severity critical,high

Ao pressionar enter, o scout será executado novamente, e agora ele nos mostrará as 46 vulnerabilidades críticas e altas, com as médias e baixas em zero.

Essas são as vulnerabilidades com as quais devemos nos preocupar mais ao começar a corrigir nossos problemas. Agora que já sabemos tudo isso, vamos explorar como o docker-scout trabalha e qual é a importância de realizar essas ações. Vamos lá?

Sobre o curso Docker Scout e Trivy: analisando e protegendo imagens e containers

O curso Docker Scout e Trivy: analisando e protegendo imagens e containers possui 90 minutos de vídeos, em um total de 42 atividades. Gostou? Conheça nossos outros cursos de Containers em DevOps, ou leia nossos artigos de DevOps.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Escolha a duração
do seu plano

Conheça os Planos para Empresas