A linguagem de programação Go de código aberto, desenvolvida pelo Google, adicionou suporte para gerenciamento de vulnerabilidades de uma forma projetada para preservar a paciência dos programadores.
A equipe Go criou recentemente um site em vuln .go.dev para hospedar uma seleção de vulnerabilidades conhecidas em pacotes que podem ser importados de módulos Go públicos. Essas vulnerabilidades escolhidas foram selecionadas e revisadas pela equipe de segurança do Go, com base em CVEs, avisos de segurança do GitHub e relatórios de mantenedores.
Presumivelmente, isso resulta em um banco de dados de falhas de alta qualidade porque o questões inconsequentes foram filtradas. Mas há mais do que seletividade.
Na terça-feira, Julie Qiu, membro dessa equipe, descreveu a abordagem do Go, que é notavelmente diferente, digamos, da maneira como a CLI npm do GitHub lida com vulnerabilidades no Ecossistema JavaScript.
Em 2018, antes de sua aquisição pelo GitHub, o npm introduziu um comando audit
para encontrar e identificar pacotes npm com vulnerabilidades conhecidas em aplicativos que dependem do npm para gerenciamento de pacotes.
Mas o uso do npm audit
se mostrou problemático porque inundou os desenvolvedores com alarmes falsos, levando o engenheiro de software do Facebook Dan Abramov no ano passado para declarar, “npm audit
é uma mancha em todo o ecossistema npm.”
Embora o npm tenha visto algumas melhorias desde então , o relatório de vulnerabilidades do npm parece não ter sido resolvido.
-
- O Google agora exige que dois funcionários aprovem cada alteração do Go
Me acorde antes de ir Go: os desenvolvedores dizem que aprenderão a linguagem do Google a seguir C: A linguagem de programação favorita de todos não é uma linguagem de programação
-
- Meta aprova quatro linguagens de programação para trabalhadores e desenvolvedores
Go, por outro lado, implementou uma abordagem mais direcionada com sua comando govulncheck
, que em conjunto com vuln.go.dev serve como “uma maneira confiável e de baixo ruído para que os usuários Go aprendam sobre vulnerabilidades conhecidas que podem afetar seus projetos.”
E há também o pacote relacionado vulncheck
que exporta a funcionalidade do govulncheck como uma API Go, para integração com ferramentas de segurança.
“Govulncheck
analisa sua base de código e apenas apresenta vulnerabilidades que realmente afetam você, com base em quais funções em seu código estão chamando funções vulneráveis transitivamente”, disse Qiu em uma postagem no blog.
A documentação do pacote explica que govulncheck
“usa a análise estática do código-fonte ou a tabela de símbolos de um binário para reduza os relatórios para apenas aqueles que podem afetar o aplicativo.”
Esse pouco sobre baixo ruído e alertar os desenvolvedores apenas para vulnerabilidades relevantes é a chave. Isso significa menos alarmes falsos, embora não os elimine totalmente. A documentação do comando afirma que a abordagem conservadora do código para o ponteiro de função e chamadas de interface “pode resultar em falsos positivos ou pilhas de chamadas imprecisas em alguns casos”, entre outras limitações.
Mesmo assim, isso deve ser uma melhoria significativa na forma como os scanners de vulnerabilidade Go atuais dependem de arquivos go.sum
para verificar os hashes criptográficos dos módulos Go.F