Corrija vulnerabilidades de forma proativa para manter a segurança do Java e a integridade dos projetos com a Snyk
Lee Turner
16 de novembro de 2021
0 minutos de leituraComo desenvolvedor, passo bastante tempo na minha conta do GitHub. Crio aplicativos, pequenas ferramentas e provas de conceito quando estou aprendendo algo novo. Gosto de pensar que, por passar muito tempo no GitHub, minha conta está em boas condições. Fico atento a aspectos importantes, como ativar a autenticação de dois fatores (2FA) com YubiKey na minha conta, garantir que não faço commit de segredos nem de arquivos confidenciais e revisar regularmente as práticas recomendadas de segurança do GitHub para projetos de código aberto.
Pausa para conferir! Você ativou a autenticação de dois fatores no seu repositório de código-fonte? Outra maneira de avançar como referência em segurança é seguir as revisões de código seguro.
No entanto, assim como acontece com a saúde e a manutenção de qualquer sistema, isso não depende apenas do que fazemos ativamente, mas também de fatores que talvez não sejam tão evidentes. Isso é especialmente importante nos repositórios em que já não trabalhamos. Mesmo que o código permaneça estático e não seja nosso foco principal, o mundo ao redor continua avançando, e pessoas que nunca conhecemos encontrarão esses repositórios e poderão usar nosso código para aprender ou como base para o código que estão escrevendo hoje.
Por isso, nós, desenvolvedores, temos a responsabilidade de garantir que o código que escrevemos seja o melhor possível, não apenas no momento em que o criamos, mas durante todo o período em que estiver disponível nos nossos repositórios.
Como mencionei, o mundo continua avançando enquanto nosso código permanece por aí. Novas versões das dependências que usamos são lançadas, e problemas de segurança são encontrados em versões antigas dos frameworks e bibliotecas dos quais dependemos. Embora atualizar sempre para as versões mais recentes possa trazer seus próprios desafios, precisamos encontrar uma maneira de acompanhar essas mudanças continuamente, para cuidar dos nossos repositórios e mantê-los atualizados e seguros.
Dica: Se você gosta do GitHub Actions e da segurança integrada para as alterações no código do seu repositório, vale a pena conferir o GitHub Security Code Scanning.
O gerenciamento de vulnerabilidades é uma área própria, com processos, padrões e ferramentas que ajudam as organizações a fortalecer sua postura de segurança. Se você quiser saber mais sobre como fazer isso em projetos Java legados que mantém e melhorar sua estratégia de segurança, recomendamos conhecer o processo de correção de vulnerabilidades.
Como encontrar e corrigir vulnerabilidades em projetos Java legados
É aí que a Snyk entra. A Snyk torna visível e acionável o que, de outra forma, passaria despercebido. Ao permitir que a Snyk monitore seus repositórios — no GitHub, GitLab, Bitbucket ou Azure —, você recebe as informações necessárias para agir e manter seu código seguro. Isso acontece de várias maneiras:
Relata vulnerabilidades encontradas nos frameworks e nas bibliotecas dos quais dependemos
Notifica você sobre novas versões das dependências que usamos
Conectar a Snyk à sua conta pode abrir seus olhos. Comecei com o plano gratuito da Snyk e deixei a ferramenta analisar alguns dos meus repositórios. Logo encontrei vários problemas de gravidade alta e média em alguns dos meus aplicativos mais antigos feitos com Spring Boot. A única causa desses problemas era o uso de uma versão antiga do Spring Boot; eu ainda não tinha tido motivo para atualizá-los.

Felizmente, bastou atualizar a versão do Spring Boot que eu estava usando, testar o aplicativo novamente e enviar a alteração.
É claro que seria ótimo simplesmente manter as dependências dos nossos aplicativos atualizadas. É aí que a Snyk ajuda com o segundo ponto mencionado acima. Ela não apenas nos informa quando uma nova versão de uma dependência está disponível, mas também pode criar um pull request nos nossos repositórios, pronto para revisão e testes:

Só podemos melhorar a saúde e a segurança das nossas contas do GitHub quando temos visibilidade de todos os fatores que as afetam. Quando o que era invisível se torna visível, podemos corrigir o que for necessário e manter as melhorias durante todo o ciclo de vida do nosso código. A Snyk ajuda nisso ao se integrar às ferramentas que usamos diariamente e nos fornecer o conhecimento necessário para decidir como agir. Tudo isso enquanto automatiza o que pode ser automatizado.
Mais recursos sobre segurança do Java
Espero que este post ajude você a manter seus projetos antigos atualizados e seguros. Se você desenvolve em Java e quer avançar na segurança, confira estes recursos:
10 práticas recomendadas para criar um contêiner Java com Docker
Brian Vermeer e Jim Manico, da OWASP, escreveram este excelente material sobre 10 práticas recomendadas de segurança em Java
E, por fim, você segue práticas de codificação segura para desserialização? Se não tiver certeza, recomendamos conferir o artigo de Vermeer: Serialização e desserialização em Java: entenda a vulnerabilidade de desserialização do Java.
Comece a participar de desafios de Capture the Flag
Aprenda a resolver desafios de Capture the Flag assistindo sob demanda ao nosso workshop virtual introdutório.



