govulncheck para vulnerabilidades de dependencias
govulncheck escanea módulos Go contra la base de datos de vulnerabilidades de Go e informa si los problemas de seguridad conocidos afectan a los paquetes y símbolos que su código utiliza realmente.
Busca en todas las páginas de la documentación
govulncheck escanea módulos Go contra la base de datos de vulnerabilidades de Go e informa si los problemas de seguridad conocidos afectan a los paquetes y símbolos que su código utiliza realmente.
Las alertas de dependencias de bots genéricos pueden inundar a los equipos con CVEs en módulos a los que nunca llama a APIs vulnerables.
govulncheck reduce la señal analizando las versiones de los módulos, las rutas de importación y la alcanzabilidad estática cuando es posible.
Ejecútelo localmente antes del lanzamiento y en CI en cada push para que las actualizaciones y los incrementos transitivos se detecten a tiempo.
Tarjeta de receta de referencia rápida - lista para copiar y pegar.
go install golang.org/x/vuln/cmd/govulncheck@latest
# Escanear todos los paquetes del módulo
govulncheck ./...
# JSON para automatización
govulncheck -json ./... > vuln-report.json
# Mostrar solo símbolos vulnerables llamados desde su código
govulncheck -show verbose ./...Cuándo usar esto:
go get -u ./... o PRs de Dependabot que tocan 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 ./...Forma de salida de ejemplo (los IDs y las versiones varían con el tiempo):
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
Ruta de actualización:
go get golang.org/x/text@v0.14.0
go mod tidy
govulncheck ./...Lo que esto demuestra:
go.mod / go.sum.| Bandera / modo | Propósito |
|---|---|
./... | Escaneo estándar de todos los paquetes bajo el módulo |
-json | Salida legible por máquina para paneles de CI |
-mode=binary | Escanear un binario compilado (auditorías de cadena de suministro) |
-show=traces | Enfatizar las rutas de llamada al código vulnerable |
# extracto - estilo GitHub Actions
- run: go install golang.org/x/vuln/cmd/govulncheck@latest
- run: govulncheck ./...Fije la versión de govulncheck en la documentación de CI cuando la reproducibilidad sea importante.
Haga que el trabajo falle ante cualquier hallazgo hasta que se triaje; use la carga de -json para la emisión de tickets de seguridad.
go.go get en la versión parcheada.# Los módulos privados necesitan la misma configuración GOPRIVATE que go build
export GOPRIVATE=example.com/*
govulncheck ./...govulncheck respeta la configuración del proxy de módulos y las sumas de verificación de su entorno.
go.sum obsoleto - Las sumas incompletas rompen la carga del módulo. Solución: go mod tidy antes del escaneo.go.mod. Solución: Regenerar vendor después de las actualizaciones o escanear con -mod=readonly consistente con CI.-mode=binary ayuda a los equipos de operaciones, pero los rastros son más delgados. Solución: Mantenga los escaneos vinculados a fuentes en la CI del desarrollador; use el modo binario para los artefactos de lanzamiento.| Alternativa | Usar cuando | No usar cuando |
|---|---|---|
| GitHub Dependabot | Alertas amplias del ecosistema en repositorios | Necesita rastros específicos de Go |
Escáneres genéricos estilo npm audit | Monorepos políglotas | Señal principal para módulos Go (prefiera govulncheck) |
| Listas de correo manuales de CVE | No se permite ninguna herramienta | Desarrollo normal de servicios Go |
Integración vulncheck de gopls | Vista rápida del editor | Puerta de control de CI autorizada (use CLI en la canalización) |
Descarga datos de vulnerabilidad y analiza los paquetes verificados localmente.
No carga su código fuente a un tercero como parte del flujo de trabajo predeterminado de la CLI.
Documente el riesgo, mitigue con configuración (desactive la función) o bifurque/reemplace la dependencia.
Vuelva a escanear cuando la base de datos se actualice.
Sí, si el símbolo vulnerable es alcanzable.
Actualice la dependencia directa que extrae el módulo transitivo, o actualice el transitivo explícitamente.
Continuamente a medida que los mantenedores y el equipo de seguridad de Go publican entradas.
La CI en cada push capta automáticamente las nuevas entradas.
govulncheck requiere una cadena de herramientas Go reciente para compilar su análisis.
Su módulo aún puede apuntar a directivas go más antiguas; actualice la cadena de herramientas utilizada en CI.
govulncheck analiza el grafo de módulos que usted presenta.
Mantenga el vendor sincronizado con go.mod o escanee sin copias de vendor obsoletas.
govulncheck coincide con CVEs conocidas en dependencias.
gosec marca patrones peligrosos en su código escrito a mano.
No existe una bandera de ignorar duradera por CVE destinada a un silencio a largo plazo.
Prefiera actualizar; involucre a seguridad para excepciones.
Sí, con GOPRIVATE y credenciales configuradas como go build.
Fijar documenta la versión del escáner para auditorías.
@latest está bien para equipos pequeños si los registros de CI imprimen la versión instalada en cada ejecución.
Versiones de pila: Esta página fue escrita para Go 1.26.x (predeterminado de GC Green Tea, modernizadores de go fix - verifique el parche en la compilación), chi (última - verifique en la compilación), gin (última - verifique en la compilación), echo (última - verifique en la compilación), google.golang.org/grpc (última - verifique en la compilación), sigs.k8s.io/controller-runtime (última - verifique en la compilación), kubebuilder (última - verifique en la compilación), tinygo (última - verifique los objetivos de la placa en la compilación), wazero (última - verifique en la compilación) y golangci-lint (última - verifique el conjunto de linters en la compilación).
Revisado por Chris St. John·Última actualización: 16 jul 2026