Skip to main content

Território desconhecido: descobrindo vulnerabilidades em Helm Charts públicos

Escrito por

18 de novembro de 2019

0 minutos de leitura

Assim como em nosso relatório sobre segurança de imagens Docker, queríamos analisar o cenário de vulnerabilidades no repositório público de Helm Charts.

Helm é um gerenciador de pacotes popular para Kubernetes. Além de ser usado por desenvolvedores para empacotar suas próprias aplicações, o repositório oficial de Charts contém centenas de Charts que você pode usar para instalar softwares de terceiros, como Jenkins, PostgreSQL e muitos outros. Isso economiza tempo e também permite aproveitar a experiência de quem empacota esses softwares e os torna fáceis de configurar.

Vamos dar uma olhada rápida em um exemplo de Helm Chart, neste caso, do Linkerd.

$ tree
.
├── Chart.yaml
├── README.md
├── templates
│   ├── NOTES.txt
│   ├── _helpers.tpl
│   ├── config.yaml
│   ├── daemonset.yaml
│   ├── ingress.yaml
│   └── service.yaml
└── values.yaml

1 diretório, 9 arquivos.

No arquivo values.yaml, encontramos detalhes de algumas imagens de contêiner que podem conter vulnerabilidades:

image: buoyantio/linkerd:1.1.2
image: buoyantio/kubectl:v1.6.2

Vulnerabilidades em imagens de Helm Charts

Como acontece com qualquer repositório de conteúdo de terceiros, vulnerabilidades em Helm Charts populares podem representar um risco para muitos usuários. Ajudar desenvolvedores a usar conteúdo de terceiros com segurança é o que fazemos na Snyk. Já oferecemos ferramentas para ajudar a proteger dependências de código aberto em gerenciadores de pacotes populares (por exemplo, para Java, .NET, Python, Node.js, Ruby e outros), além de ferramentas para detectar vulnerabilidades em imagens de contêiner. Ao analisar os desafios de proteger conteúdo de terceiros no Kubernetes, uma das perguntas que fizemos foi: “Como sei quais vulnerabilidades existem nas imagens deste Helm Chart?” No momento, esse processo é bastante manual:

  1. Identificar quais imagens o Chart usa, o que provavelmente envolve revisar os templates renderizados e identificar as versões específicas das imagens

  2. Analisar essas imagens individualmente, o que provavelmente envolve executar vários comandos e agregar os resultados manualmente

O processo fica ainda mais complicado porque os Helm Charts podem receber configurações que afetam as imagens usadas.

Apresentamos o relatório de segurança de Helm Charts

Em nosso novo relatório, analisamos o cenário de vulnerabilidades no repositório público de Helm Charts. Não queremos apontar o Helm como inseguro, assim como não diríamos que qualquer repositório popular de conteúdo de terceiros é inseguro. Nosso objetivo é iniciar uma conversa sobre maneiras melhores de proteger Helm Charts, para que ainda mais pessoas possam aproveitar a facilidade de uso do Helm. Descobrimos que:

  • 68% dos Helm Charts estáveis contêm uma imagem com uma vulnerabilidade de alta gravidade

  • 64% dos Helm Charts estáveis poderiam reduzir o número de vulnerabilidades com a atualização para as imagens publicadas mais recentemente

  • 6 imagens (de um total de 416) representam metade das ocorrências de vulnerabilidades

Também compartilhamos este trabalho com a comunidade Helm. Matt Butcher, um dos mantenedores da Helm Org, afirmou: 

“Para que o ecossistema cloud native alcance todo o seu potencial, precisamos melhorar a segurança coletivamente. Isso significa aplicar um conjunto de padrões, técnicas e ferramentas voltados especificamente para tecnologias cloud native. O Projeto Helm está profundamente comprometido com a segurança do nosso software principal, dos nossos charts e das práticas da comunidade. E damos as boas-vindas a uma nova geração de ferramentas que nos ajude a identificar e corrigir vulnerabilidades de forma proativa.”

Conheça o plugin do Helm da Snyk

Como parte da pesquisa acima, criamos um plugin que torna a verificação de vulnerabilidades nos seus próprios Helm Charts tão simples quanto qualquer outra tarefa no Helm.

Você pode instalar o plugin do Helm da Snyk usando os comandos integrados do Helm.

helm plugin install https://github.com/snyk-labs/helm-snyk

Para usar o plugin, você precisa de uma conta da Snyk, que pode ser criada gratuitamente em https://snyk.io/signup/. Depois de criar a conta, você pode testar seus charts assim:

helm snyk test <path-to-chart>

Veja, por exemplo, como testar o Chart do Redis no repositório público de Charts:

$ helm snyk test stable/redis

Image: docker.io/bitnami/redis:5.0.5-debian-9-r181

Testing docker.io/bitnami/redis:5.0.5-debian-9-r181...

✗ Low severity vulnerability found in tar
Description: CVE-2005-2541
Info: https://snyk.io/vuln/SNYK-LINUX-TAR-105079
Introduced through: meta-common-packages@meta
From: meta-common-packages@meta > tar@1.29b-1.1

✗ Low severity vulnerability found in systemd/libsystemd0
Description: CVE-2019-9619
Info: https://snyk.io/vuln/SNYK-LINUX-SYSTEMD-442642
Introduced through: systemd/libsystemd0@232-25+deb9u12, util-linux/bsdutils@1:2.29.2-1+deb9u1, procps@2:3.3.12-3+deb9u1, sysvinit/sysvinit-utils@2.88dsf-59.9, systemd/libudev1@232-25+deb9u12, util-linux/mount@2.29.2-1+deb9u1
From: systemd/libsystemd0@232-25+deb9u12
From: util-linux/bsdutils@1:2.29.2-1+deb9u1 > systemd/libsystemd0@232-25+deb9u12
From: procps@2:3.3.12-3+deb9u1 > procps/libprocps6@2:3.3.12-3+deb9u1 > systemd/libsystemd0@232-25+deb9u12

and 4 more...

Os Helm Charts costumam ter propriedades que podem ser definidas durante a instalação, e algumas delas podem afetar as imagens usadas pelo chart. O plugin do Helm da Snyk usa a mesma interface dos demais comandos do Helm para permitir que você defina propriedades individualmente e teste diferentes variações, por exemplo:

helm snyk test stable/mysql --set imageTag=latest

Conclusão

Com o relatório de segurança de Helm Charts, ajudamos a comunidade Helm a encontrar vulnerabilidades e facilitamos a correção delas. O plugin do Helm da Snyk permite testar seus Helm Charts com rapidez e facilidade, seja para investigar um Chart de terceiros ou para executar verificações regularmente nos pipelines de CI/CD. Fique de olho nas próximas ferramentas da Snyk para ajudar desenvolvedores a usar conteúdo de terceiros com mais segurança.

Publicado em: