Go 博客

Go 的漏洞管理

Julie Qiu,为 Go 安全团队撰写
2022 年 9 月 6 日

我们很高兴地宣布 Go 新增了对漏洞管理的支持,这是我们帮助 Go 开发者了解可能影响他们的已知漏洞的第一步。

本文将概述当前可用的功能以及该项目的后续步骤。

概览

Go 提供了工具来分析您的代码库并发现已知漏洞。这些工具由 Go 安全团队维护的 Go 漏洞数据库提供支持。Go 的工具通过仅显示您的代码实际调用的函数中的漏洞来减少结果中的噪音。

Architecture diagram of Go's vulnerability management system

Go 漏洞数据库

Go 漏洞数据库 (https://vuln.go.dev) 是有关公共 Go 模块中可导入包的已知漏洞的全面信息来源。

漏洞数据来自现有来源(例如 CVE 和 GHSAs)以及 Go 包维护者的直接报告。然后,这些信息由 Go 安全团队审核并添加到数据库中。

我们鼓励包维护者贡献有关其自身项目中公开漏洞的信息,并更新其 Go 包中有关漏洞的现有信息。我们的目标是使报告过程低门槛,因此请向我们发送您的建议以进行任何改进。

您可以在浏览器中访问 Go 漏洞数据库 pkg.go.dev/vuln。有关数据库的更多信息,请参阅 go.dev/security/vuln/database

使用 govulncheck 进行漏洞检测

新的 govulncheck 命令是一种低噪音、可靠的方式,供 Go 用户了解可能影响其项目已知漏洞。Govulncheck 会分析您的代码库,并根据您代码中的哪些函数实际调用了易受攻击的函数,仅显示真正影响您的漏洞。

您可以使用 go install 安装最新版本的 govulncheck

$ go install golang.org/x/vuln/cmd/govulncheck@latest

然后,在您的项目目录中运行 govulncheck

$ govulncheck ./...

Govulncheck 是一个独立的工具,允许在收集用户反馈的同时进行频繁更新和快速迭代。从长远来看,我们计划将 govulncheck 工具集成到 Go 的主要发行版中。

集成

在开发和部署过程的早期了解漏洞总是更好的。要将漏洞检查集成到您自己的工具和流程中,请使用 govulncheck -json

我们将漏洞检测集成到了现有的 Go 工具和服务中,例如 Go 包发现网站。例如,此页面显示了 golang.org/x/text 每个版本中的已知漏洞。VS Code Go 扩展的漏洞检查功能也即将推出。

后续步骤

我们希望您觉得 Go 对漏洞管理的支持很有用,并帮助我们改进它!

Go 对漏洞管理的支持是一项正在积极开发中的新功能。您应该会遇到一些错误和限制

我们很希望您能做出贡献,并通过以下方式帮助我们进行改进

我们期待与您一起构建一个更好、更安全的 Go 生态系统。

下一篇文章:Go 开发者调查 2022 年第二季度结果
上一篇文章:Go 1.19 发布!
博客索引