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:

Leia mais

Article

Versões maliciosas de node-ipc publicadas no npm após suspeita de comprometimento da conta de um mantenedor

Em 14 de maio de 2026, várias versões maliciosas do popular pacote npm node-ipc foram publicadas no registro do npm. As informações públicas disponíveis identificam node...

blog feature toolkit
Blog

Versão maliciosa do pacote elementary-data no PyPI rouba credenciais de nuvem de engenheiros de dados

Atacantes exploraram uma vulnerabilidade de injeção de script no GitHub Actions para publicar uma versão maliciosa da CLI Python elementary-data (v0.23.3), com um backdoor que rouba credenciais e tinha como alvo perfis do dbt, chaves de provedores de nuvem e segredos SSH em ambientes de engenharia de dados.

Blog

Segurança integrada a cada commit: o futuro do Snyk Secrets

Snyk Secrets conecta código e credenciais com detecção em tempo real e alta precisão, mantendo seus dados mais sensíveis protegidos sem desacelerar seus desenvolvedores.