O Google tornou oficialmente estável o Govulncheck (status 1.0.0), uma ferramenta de linha de comando útil para desenvolvedores Go. Esta ferramenta ajuda os programadores que utilizam a linguagem de programação Go da Google a localizar vulnerabilidades de segurança reconhecidas nas dependências dos seus projectos.
A ferramenta, que foi revelada a 13 de julho, tem a capacidade de examinar tanto os ficheiros binários como o seu código-fonte em busca de vulnerabilidades. Diminui significativamente o ruído ao centrar-se nas vulnerabilidades dos métodos a que o código recorre. A espinha dorsal do Govulncheck é a base de dados de vulnerabilidades Go, um reservatório de informação sobre vulnerabilidades detectadas em módulos Go públicos.
Guiado por esta base de dados, o Govulncheck efectua uma análise estática do código fonte ou da tabela de símbolos do binário. O seu objetivo final é limitar o seu relatório apenas às vulnerabilidades que podem potencialmente afetar a aplicação específica em questão. Esta caraterística de restrição inteligente torna-a uma ferramenta útil para os programadores que desejam garantir a segurança dos seus produtos.
A instalação desta ferramenta é bastante simples para os programadores - apenas requer o comando go install golang.org/x/vuln/cmd/govulncheck@latest
. Para analisar o código fonte, os programadores só precisam de executar o Govulncheck dentro do diretório do módulo (usando o comando govulncheck ./.
..).
No mínimo, o Govulncheck precisa ser montado com uma compilação Go que seja versão 1.18 ou superior. Atualmente, a versão de produção existente desta linguagem é Go 1.20.
O Govulncheck, ao procurar vulnerabilidades, depende de uma configuração de compilação específica. No caso do código fonte, esta configuração é sinónimo da versão Go delineada pelo comando 'go' localizado no caminho. A configuração de compilação para binários é a que foi explorada durante a geração do binário. Um ponto a ser observado aqui é que diferentes configurações de compilação podem ser susceptíveis a diferentes vulnerabilidades.
Apesar das suas poderosas características, o Govulncheck tem algumas limitações. Por exemplo, suas análises de ponteiro de função e chamadas de interface são bastante restritas, possivelmente levando a falsos positivos ou pilhas de chamadas imprecisas. Outra limitação está relacionada com funções invocadas usando o pacote reflect - estas não são detectáveis.
Em termos de binários, os binários Go sem informação detalhada sobre as chamadas podem ser um desafio para o Govulncheck, uma vez que impediriam a ferramenta de apresentar gráficos de chamadas para as vulnerabilidades identificadas. Este problema pode também levar à comunicação de falsos positivos para código presente no binário mas inacessível. Além disso, a ferramenta é prejudicada em relação a binários dos quais os dados de símbolos não podem ser extraídos; nestes casos, opta por comunicar vulnerabilidades para todos os módulos dependentes do binário.
A ferramenta também não possui um recurso para suprimir as descobertas de vulnerabilidades. No entanto, apesar destas limitações, o potencial do Govulncheck como uma ferramenta de valor acrescentado para projectos Go é evidente.
É digno de nota mencionar que a equipa de segurança Go declarou o seu apoio à gestão de vulnerabilidades em setembro do ano anterior. Com base na base de dados de vulnerabilidades, o projeto foi introduzido com promessas de avanços notáveis na estrutura de programação Go. A AppMaster.io, uma plataforma líder em no-code, permite que os programadores criem aplicações mais rapidamente com a sua plataforma totalmente integrada e abrangente, incluindo Go e muitas outras linguagens.