Skip to main content

Até quem não é desenvolvedor pode corrigir vulnerabilidades no código no The Big Fix

Escrito por
Headshot of Gerald Crescione

Gerald Crescione

blog hero the big fix

23 de fevereiro de 2022

0 minutos de leitura

Veja como uma tarefa rotineira de gerenciamento de projetos me levou a abrir um pull request em um repositório open source no GitHub.

Como novo integrante da equipe de Marketing da Snyk, participei recentemente dos preparativos para The Big Fix, um evento que reúne desenvolvedores, profissionais de DevOps e especialistas em segurança de todos os níveis para ajudar a tornar a internet mais segura, corrigindo vulnerabilidades enquanto se divertem e ganham brindes.

Todo mundo está convidado. Por que eu não corrigiria uma vulnerabilidade?

Conversando com a equipe, percebi que todo o processo é tão simples que até alguém sem conhecimentos técnicos como eu poderia participar da iniciativa e contribuir ativamente para esse esforço global de tornar a internet mais segura. Então, resolvi tentar.

Etapa 1: começando a usar a Snyk

Fazer a inscrição no The Big Fix foi simples. Bastou usar minha conta da Snyk, que é totalmente gratuita e pode ser criada em poucos minutos. Como trabalho exclusivamente com marketing, não posso dizer que usava muito a plataforma. Criei minha conta apenas para conhecer o produto e entender razoavelmente como ele funciona.

O próximo passo foi conectar a Snyk à minha conta do GitHub e conceder à plataforma as permissões padrão para analisar meus projetos e sugerir correções para vulnerabilidades sempre que possível.

Configurações da integração do Snyk com o GitHub mostrando a configuração da conta para abrir pull requests do Snyk usando um token de acesso pessoal

Etapa 2: escolhendo o projeto certo

Com a conta configurada e conectada ao GitHub, pude importar um projeto e analisá-lo em busca de vulnerabilidades. Agora precisava escolher o projeto certo para contribuir. Não tenho projetos próprios — só alguns trechos de código bem insignificantes. Então, teria que contribuir com outro projeto. De preferência, ele seria open source e relacionado ao ecossistema cloud native, que é a minha área.

De fato, em experiências anteriores, participei de startups e projetos muito focados em Infrastructure as Code (IaC). Tive a oportunidade de trabalhar em algumas publicações de blog nas quais listávamos todas as ferramentas open source interessantes que giram em torno do HashiCorp Terraform e o tornam ainda melhor para gerenciar recursos na nuvem. Minha lista de ferramentas era:

  • Terraformer (também chamado de “Terraform reverso”): uma ferramenta open source incrível, criada pela equipe de SRE do Waze, que analisa infraestruturas de nuvem existentes, criadas manualmente, e as transforma em código Terraform, permitindo reimportá-las à sua base de código IaC.

  • TFlint: um linter que analisa estaticamente seu código Terraform, identifica tipos de instância inválidos e detecta erros de digitação e incompatibilidades na hora.

  • Terratest: uma biblioteca Go que realiza testes de integração dos seus arquivos Terraform.

Escolhi o Terratest porque gosto muito do fato de a equipe por trás da ferramenta se preocupar em testar nossas infraestruturas — algo que, sejamos sinceros, ainda não é uma prática recomendada tão comum.

Se você não conhece a ferramenta, aqui vai uma breve apresentação: o Terratest foi criado pelos nossos amigos da Gruntwork. É uma poderosa biblioteca Go na qual você inclui seu código Terraform e o manipula programaticamente para fazer o que quiser e, assim, realizar todos os testes de integração necessários.

Etapa 3: escolhendo a correção certa

Primeiro, precisei analisar o Terratest para ver se encontrava alguma vulnerabilidade no repositório. Para isso, fiz um fork simples do repositório público e depois o importei para a Snyk para analisá-lo.

Painel do Snyk Projects exibindo repositórios do GitHub importados, com a quantidade de problemas por nível de gravidade e filtros por status do projeto e integrações.

Vamos ser sinceros: não sou desenvolvedor. Tenho conhecimentos extremamente básicos e, quando mexo com código, não consigo ser muito útil. Ainda assim, queria muito participar do The Big Fix e contribuir, mesmo que modestamente, com esse ótimo projeto, o Terratest.

Ao analisar o projeto, tive a sorte de encontrar uma correção bem simples — atualizar uma imagem Docker — que estava ao meu alcance.

Painel do Snyk Projects exibindo uma lista de projetos com busca, contagens de gravidade dos problemas, filtros e categorias de integração.

A Snyk facilita muito para qualquer pessoa, independentemente do nível de conhecimento, encontrar e corrigir um problema. Basta clicar no botão Abrir um PR com a correção para acessar seu repositório e receber uma sugestão de correção adequada para a vulnerabilidade.

Visão geral do Dockerfile no Snyk com recomendações para atualizar a imagem base, contagem de vulnerabilidades, níveis de gravidade e um botão “Abrir uma solicitação de pull para corrigir”.

Gostei muito de poder explorar melhor a plataforma e acessar a documentação para entender melhor do que se tratava essa vulnerabilidade e quais riscos ela poderia trazer. Basicamente, a correção consistia em atualizar uma versão antiga de uma imagem.

Página do Snyk User Docs que explica a detecção de imagens base e os métodos de identificação de imagens de contêiner vulneráveis.

Preparar, apontar, corrigir!

Estava tudo pronto: a vulnerabilidade tinha sido encontrada, a correção estava preparada e só faltava clicar no botão Abrir um PR com a correção e acessar o GitHub.

Página para abrir um PR de correção e atualizar a imagem base de um Dockerfile de ruby:2.6.2-stretch para ruby:2.6.8-stretch

No meu repositório, foi muito fácil analisar a correção e decidir se queria integrá-la ou não — e, obviamente, eu quis. (Lembre-se: tem brinde para ganhar.)

Pull request do GitHub da Snyk propondo uma atualização de segurança para a imagem base Docker do Ruby, com uma tabela de vulnerabilidades listadas.

Integrar o PR foi muito simples e me deixou com uma enorme sensação de propósito e realização.

Interface de pull request do GitHub mostrando que todas as verificações foram aprovadas, não há conflitos de mesclagem e o botão verde “Mesclar pull request”.

Espere! Acabei de corrigir uma vulnerabilidade em um repositório privado que nem uso.

Fazer um fork de um repositório público só para analisá-lo e corrigir uma vulnerabilidade não adianta. E, por mais tentadora que seja a possibilidade de ganhar uma camiseta de edição limitada, eu queria mesmo contribuir de verdade, ainda que fosse um pouquinho.

Tudo bem! Bastava copiar a correção e abrir um PR no repositório original do Terratest no GitHub.

Página de comparação de alterações do GitHub mostrando uma atualização no Dockerfile de ruby:2.6.2-stretch para ruby:2.6.8-stretch e uma opção para criar um pull request

E... voilà. Corrigir uma vulnerabilidade é divertido. Contribuir com projetos open source é ainda melhor.

Corrigir uma vulnerabilidade sempre merece reconhecimento e comemoração.

Já falei da comunidade em torno do The Big Fix?

Uma das coisas mais legais desse projeto é que ele faz parte de uma comunidade. É no servidor do Discord da comunidade DevSecCon que a mágica acontece. Depois de entrar no servidor, você pode acessar o canal the-big-fix, conversar com outros desenvolvedores sobre o que corrigiu e discutir tudo sobre segurança da informação e DevSecOps.

Mensagem da comunidade agradecendo a Hacker Kyle pela orientação, com uma captura de tela de uma solicitação de pull request no GitHub para atualizar a imagem do Docker do Terratest.

Corrigir vulnerabilidades de segurança em aplicações enquanto se diverte — como isso funciona?

A ideia do The Big Fix é ajudar a encontrar e corrigir vulnerabilidades de um jeito divertido, recompensando os participantes com brindes. É muito simples: basta:

  1. Inscrever-se no The Big Fix.

  2. Entrar na conta da Snyk (ou criar uma gratuitamente, caso ainda não tenha uma).

  3. Importar e analisar um projeto.

  4. Encontrar uma vulnerabilidade (sim, provavelmente haverá vulnerabilidades nos seus projetos, por mais que você se esforce para evitá-las).

  5. Corrigi-la com um PR pela plataforma da Snyk.

  6. (Etapa opcional) Relaxar e imaginar como você vai ficar estiloso com sua camiseta de edição limitada do Big Fix.

  7. Importar e analisar outros projetos para corrigir ainda mais vulnerabilidades.

Se você quer participar dessa iniciativa, há vários recursos para ajudar a começar, caso precise. Uma busca simples por #TheBigFix no Twitter provavelmente é o melhor ponto de partida. Outra opção interessante é assistir ao vídeo abaixo sobre como começar a corrigir vulnerabilidades no IDE VS Code.

The Big Fix 2022 - Getting started with VS Code IDE security fixes

E agora?

Vale lembrar que o The Big Fix é um evento de um mês. Começou em 18 de janeiro e termina em 25 de fevereiro com um “Big Fix-a-Thon”: uma transmissão ao vivo de 24 horas sobre DevSecOps e segurança para desenvolvedores. A boa notícia é que você não precisa esperar até 25 de fevereiro para encontrar uma vulnerabilidade e corrigi-la. Enquanto escrevo este post, 35.302 projetos já foram analisados, 454.116 vulnerabilidades foram encontradas e 82.109 foram corrigidas. É incrível!

Participe do Big Fix-a-Thon interativo em 25 de fevereiro: uma transmissão ao vivo de 24 horas sobre DevSecOps e segurança para desenvolvedores, com atrações divertidas e palestrantes incríveis para ajudar você na sua jornada de correção.

Faça parte do The Big Fix

Junte-se a milhares de desenvolvedores que já estão protegendo suas aplicações com a Snyk.

Leia mais

blog feature snyk container custom base recommendations
Blog

Conheça o Evo Agentic AppSec: segurança que acompanha o ritmo do desenvolvimento com IA

O desenvolvimento impulsionado por IA está avançando mais rápido do que os fluxos de trabalho de segurança tradicionais. O AppSec agentivo da Snyk usa agentes de segurança para encontrar, corrigir e verificar vulnerabilidades continuamente, enquanto as pessoas definem os critérios.

blog feature ai violet
Blog

VulnBump: agentes de IA conseguem corrigir dependências vulneráveis sem quebrar o build?

O VulnBump testa agentes de IA em 307 atualizações reais de dependências. Uma correção só é considerada válida se eliminar a vulnerabilidade e mantiver o build e os testes funcionando.

Blog

Modelos de ponta encontraram as vulnerabilidades. Só o atacante encontrou as cadeias.

A análise estática encontrou as falhas, mas só os testes de ataque em aplicações ativas provaram como elas poderiam ser encadeadas para causar invasões. Uma comparação entre Evo COS, Claude Security e Claude Code Security.