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 和 GHSA)以及 Go 软件包维护人员的直接报告。然后,Go 安全团队会审查这些信息并将其添加到数据库中。

我们鼓励软件包维护人员贡献有关其项目中公共漏洞的信息,并更新有关其 Go 软件包中漏洞的现有信息。我们的目标是使报告过程尽可能简单,因此请向我们发送您的建议以改进任何方面。

您可以在浏览器中通过 pkg.go.dev/vuln 查看 Go 漏洞数据库。有关数据库的更多信息,请参阅 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 发布!
博客索引