推荐使用govulncheck(查依赖CVE)、gosec(查代码风险)和trivy(扫go.sum/镜像),三者分层覆盖依赖、代码、产物维度;govulncheck需go install并运行./...,gosec支持规则排除与HTML报告,trivy可扫描文件系统与镜像,CI中应设严重级别阻断。
在 Go 项目中检测依赖漏洞,推荐使用官方支持、社区活跃且集成方便的工具——govulncheck(Go 官方出品)和 gosec(静态代码安全扫描),辅以 trivy(通用容器/代码/依赖扫描)。它们覆盖不同维度:govulncheck 查 CVE 漏洞数据库中的已知 Go 模块风险;gosec 检查代码中硬编码密码、不安全函数调用等;trivy 可扫描 go.sum、Docker 镜像甚至整个项目目录。
govulncheck 是 Go 团队维护的权威依赖漏洞扫描器,基于 Go 官方漏洞数据库,无需额外配置即可工作。
GOBIN 或 go install 默认路径已加入 $PATH(如 $HOME/go/bin)
json
gosec 是基于 AST 分析的静态检查工具,能识别常见反模式,比如 http.ListenAndServe 未启用 TLS、crypto/md5 等弱哈希、日志中打印敏感信息等。
Trivy 更适合 CI 流程或发布前全面检查,支持直接解析 go.sum 文件匹配已知漏洞,也能扫描编译后的二进制或容器镜像。
单一工具无法覆盖全部风险。实际项目中建议分层使用:
govulncheck ./... + gosec ./...
trivy 扫描 go.sum 和最终镜像,并设置严重级别阈值阻断发布govulncheck 不检查私有模块(仅公开索引模块),若使用私有仓库需自行同步漏洞数据或结合 SCA 工具govulncheck -update(新版已自动更新)、trivy image --download-db-only