Images Vulnerabilities
Para entender precisa saber o que são CVEs.
Um dos exemplos mais comuns de vulnerabilidade é a de buffer overflow. Imagine que temos servidor Apache rodando em uma versão que permite esse exploit. Podemos enviar uma solicitação específica para esse server e em vez de apenas servir o HTML pode executar um script no servidor.
Exploité um termo usado em segurança da informação para descrever uma técnica ou um software projetado para tirar vantagem de uma vulnerabilidade específica em um sistema, aplicativo ou rede. O objetivo principal de um exploit é explorar essa vulnerabilidade para obter acesso não autorizado, executar código malicioso, ou causar algum outro efeito prejudicial.
No caso do Kubernetes os alvos são:
- Aplicações em contêineres acessíveis remotamente
- Aplicações locais dentro dos contêineres.
As vulnerabilidades não são somente das aplicações que estamos interessados em rodar, são uma herança da imagem base usada e tudo que instalamos a partir dela, incluindo as bibliotecas. Por exemplo se estamos rodando um contêiner com nossa aplicação e estamos usando a imagem base do Ubuntu e esta tem alguma vulnerabilidade, então vamos herdá-la.
Como resultado podemos ter vulnerabilidades de:
- Escalonamento de privilégios
- Vazamento de informação
- DDOS
- etcd
Precisamos de uma ferramenta que possa ajudar a escanear todos os binários e suas dependências em todas as camadas do contêiner.
Podemos descobrir vulnerabilidades durante: o processo de build da imagem ou conferindo em tempo de execução os contêineres rodando nos pods. Obviamente é melhor encontrar problemas antes do pod estar rodando no cluster.

Duas ferramentas open source muito utilizadas são o Trivy e o Clair. Faça um estudo principalmente sobre o Trivy que é mais fácil de usar.
Podemos utilizar o admission controller junto com o OPA ou o PSP para restringir repositórios/imagens ou fazer a mudanças nas request. Se uma imagem utiliza uma camada anterior que está restrita não conseguirá ser executada, pois não será permitido o pull dessa camada. Se fizermos uma mudança por exemplo de ubuntu:20.04 para ubuntu:22.04 para corrigir, podemos utilizar o mutation webhook para isso.
