govulncheck para Vulnerabilidades de Dependência
govulncheck escaneia módulos Go contra o banco de dados de vulnerabilidades do Go e relata se problemas de segurança conhecidos afetam pacotes e símbolos que seu código realmente usa.
Busque em todas as páginas da documentação
govulncheck escaneia módulos Go contra o banco de dados de vulnerabilidades do Go e relata se problemas de segurança conhecidos afetam pacotes e símbolos que seu código realmente usa.
Alertas de dependência de bots genéricos podem inundar equipes com CVEs em módulos para os quais você nunca chama APIs vulneráveis.
govulncheck refina o sinal analisando versões de módulos, caminhos de importação e alcançabilidade estática, quando possível.
Execute-o localmente antes do lançamento e em CI a cada push para que atualizações e incrementos transitivos sejam capturados precocemente.
Cartão de receita de referência rápida - pronto para copiar e colar.
go install golang.org/x/vuln/cmd/govulncheck@latest
# Escaneia todos os pacotes no módulo
govulncheck ./...
# JSON para automação
govulncheck -json ./... > vuln-report.json
# Mostra apenas símbolos vulneráveis chamados do seu código
govulncheck -show verbose ./...Quando usar isso:
go get -u ./... ou PRs do Dependabot que tocam em go.sum.go test.// example.com/demo/cmd/api/main.go
package main
import (
"log"
"net/http"
"golang.org/x/text/language"
)
func main() {
tag, _ := language.Parse("en")
http.HandleFunc("/lang", func(w http.ResponseWriter, r *http.Request) {
_, _ = w.Write([]byte(tag.String()))
})
log.Fatal(http.ListenAndServe(":8080", nil))
}govulncheck ./...Formato de saída de exemplo (IDs e versões variam ao longo do tempo):
Vulnerability #1: GO-2024-0001
Module: golang.org/x/text
Found in: golang.org/x/text@v0.3.0
Fixed in: golang.org/x/text@v0.14.0
Symbol: language.Parse
Trace: cmd/api/main.go:12:22 -> language.Parse
Caminho de atualização:
go get golang.org/x/text@v0.14.0
go mod tidy
govulncheck ./...O que isso demonstra:
go.mod / go.sum.| Flag / modo | Propósito |
|---|---|
./... | Verificação padrão de todos os pacotes sob o módulo |
-json | Saída legível por máquina para painéis de CI |
-mode=binary | Escaneia um binário compilado (auditorias de cadeia de suprimentos) |
-show=traces | Enfatiza os caminhos de chamada para o código vulnerável |
# trecho - estilo GitHub Actions
- run: go install golang.org/x/vuln/cmd/govulncheck@latest
- run: govulncheck ./...Fixe a versão do govulncheck na documentação de CI quando a reprodutibilidade for importante.
Falhe o job em qualquer descoberta até que seja triada; use o upload -json para tickets de segurança.
go.go get na versão corrigida.# Módulos privados precisam das mesmas configurações GOPRIVATE que go build
export GOPRIVATE=example.com/*
govulncheck ./...govulncheck respeita as configurações de proxy de módulo e checksum do seu ambiente.
go.sum desatualizado - Sumários incompletos quebram o carregamento do módulo. Correção: go mod tidy antes da verificação.vendor - Cópias vendidas podem ficar atrás do go.mod. Correção: Regenerar o vendor após atualizações ou escanear com -mod=readonly consistente com CI.-mode=binary ajuda equipes de operações, mas os rastreamentos são mais finos. Correção: Mantenha as verificações vinculadas à origem em CI de desenvolvedor; use o modo binário para artefatos de lançamento.| Alternativa | Use Quando | Não Use Quando |
|---|---|---|
| GitHub Dependabot | Alertas amplos do ecossistema em vários repositórios | Você precisa de rastreamentos de alcançabilidade específicos para Go |
Scanners genéricos estilo npm audit | Monorepos políglotos | Sinal primário para módulos Go (prefira govulncheck) |
| Listas de e-mail manuais de CVE | Nenhuma ferramenta permitida | Desenvolvimento normal de serviços Go |
Integração vulncheck do gopls | Olhar rápido no editor | Portão de CI autoritativo (use CLI no pipeline) |
Ele baixa dados de vulnerabilidade e analisa pacotes verificados localmente.
Ele não carrega seu código-fonte para terceiros como parte do fluxo de trabalho padrão da CLI.
Documente o risco, mitigue com configuração (desabilite o recurso) ou crie um fork/substitua a dependência.
Re-escaneie quando o banco de dados for atualizado.
Sim, se o símbolo vulnerável for alcançável.
Atualize a dependência direta que puxa o módulo transitivo, ou atualize o transitivo explicitamente.
Continuamente à medida que mantenedores e a equipe de segurança do Go publicam entradas.
A CI a cada push capta novas entradas automaticamente.
govulncheck requer uma toolchain Go recente para construir sua análise.
Seu módulo ainda pode ter como alvo diretivas go mais antigas; atualize a toolchain usada em CI.
govulncheck analisa o grafo de módulos que você apresenta.
Mantenha o vendor sincronizado com go.mod ou escaneie sem cópias de vendor desatualizadas.
govulncheck corresponde a CVEs conhecidas em dependências.
gosec sinaliza padrões perigosos em seu código escrito à mão.
Não há uma flag de ignorar por CVE duradoura destinada ao silêncio a longo prazo.
Prefira atualizar; envolva a revisão de segurança para exceções.
Sim, com GOPRIVATE e credenciais configuradas como go build.
Fixar documenta a versão do scanner para auditorias.
@latest é bom para equipes pequenas se os logs de CI imprimirem a versão instalada a cada execução.
Versões da Stack: Esta página foi escrita para Go 1.26.x (padrão Green Tea GC, go fix modernizers - verifique o patch na compilação), chi (latest - verifique na compilação), gin (latest - verifique na compilação), echo (latest - verifique na compilação), google.golang.org/grpc (latest - verifique na compilação), sigs.k8s.io/controller-runtime (latest - verifique na compilação), kubebuilder (latest - verifique na compilação), tinygo (latest - verifique os alvos de placa na compilação), wazero (latest - verifique na compilação) e golangci-lint (latest - verifique o conjunto de linters na compilação).
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026