【Golang】govulncheck是Go语言的官方漏洞检测工具,专门用于管理Go语言的漏洞情况

2022/09/06 发布了用于检测 Go 语言(以下简称 golang)漏洞的工具「govulncheck」。

「govulncheck」是一个官方工具,可以在本地检查通过go get下载的golang模块中的软件包漏洞。

以前,像Snyk这样的CI工具就已经可以进行类似的检查了。虽然目标有些不同,但此工具是官方的golang工具,由专注于golang的团队维护漏洞信息。最重要的是,它可以在本地轻松地通过运行golangci-lint来进行检查,这一点非常好。

目前仍处于没有实验版本的状态,但将来有望与go test的-cover -fuzz -bench类似的可用性集成在一起。

请参阅 TS; DR 以获取翻译的发布信息。以下是基本用法。

TL; DR (今北産業、基本的な使い方)

简而言之,今北产业的基本用法。

    1. 安装和升级:

工具的安装和升级(需要Go1.18或更高版本)
$ go install golang.org/x/vuln/cmd/govulncheck@latest

推荐使用gup来更新已安装的golang应用程序。

运行漏洞测试:

运行工具
$ govulncheck ./…
govulncheck是一个实验性工具。请在https://go.dev/s/govulncheck-feedback上提供反馈。

正在扫描已知漏洞的依赖…
未发现漏洞。
$ echo $?
0

$ govulncheck -json ./…
{
“Vulns”: null
}

用法:
$ govulncheck -h
用法:
govulncheck [标志] package…
govulncheck [标志] binary

-json
输出JSON
-tags list
逗号分隔的构建标签列表
-test
分析测试文件。仅适用于源代码。
-v 为每个漏洞打印完整的调用堆栈

详细信息,请参阅https://pkg.go.dev/golang.org/x/vuln/cmd/govulncheck。

请注意,显示结果会根据危险程度不同而有所区别,而不是显示所有的弱点。

在评估危险程度时,还要考虑应用程序对易受攻击的包的依赖程度等。例如,即使某个包有漏洞报告,如果应用程序没有使用与该漏洞相关的函数,则不会报告该漏洞。

我觉得不仅仅是说“已经通过 == 没有发现漏洞”,更强调“已经通过 == 没有发现关键致命漏洞”的含义。

虽然如此,与go test单元测试和golangci-lint静态分析和语法检查等一起使用,具有作为”最低限检查”的便利性。我想与CI的其他好伙伴一起使用比单独使用govulncheck更好。

    • リリース情報: “Vulnerability Management for Go” | blog @ go.dev

 

    • リポジトリ: https://github.com/golang/vuln @ GitHub

 

    • GoDoc: https://pkg.go.dev/golang.org/x/vuln @ pkg.go.dev

 

    報告された脆弱性の例: GO-2022-1059

以下是《Go程序漏洞管理》的翻译版本,于2022年9月6日发布。许可证与原文相同,采用CC BY 4.0。
【责任编辑】原文:2022年9月6日,Julie Qiu(Go安全团队)/翻译:2023年1月22日,@KEINOS

针对Go的漏洞管理

我們釋出了一個新的支援工具,用於管理 Go 語言(以下簡稱 Go)的漏洞安全性。這是 Go 開發者瞭解「已知漏洞」所需的第一步協助工具。

在这篇文章中,我们将总结目前可用选项的概述,并解释该项目的下一步。

简介

最近,Go语言的工具中新增了一项用于分析代码中已知漏洞的工具。这些工具依赖于Go安全团队维护的Go漏洞数据库。新工具通过显示代码中实际调用的函数的漏洞来降低输出结果的噪音。

脆弱性数据库是Go语言中的一个选项。

Go脆弱性数据库(Go Vulnerability Database,https://vuln.go.dev)是一个综合信息源,提供关于一般可导入Go模块包中已知脆弱性的全面信息。

脆弱性数据是从现有来源(如CVE和GHSA)以及Go包的维护者直接报告中获取的。这些信息将由Go安全团队进行审查,并添加到数据库中。

我们建议 Go 包的维护者提供他们自己包中公布的新漏洞信息或更新现有的漏洞信息。我们的目标是减少在报告过程中的摩擦,如果在这个过程中有改进的地方,请务必提出建议。

Go的漏洞数据库可以通过pkg.go.dev/vuln从浏览器中使用。有关数据库的详细信息,请参阅go.dev/security/vuln/database。

通过govulncheck检测漏洞。

新的govulncheck命令可以分析源代码,并根据代码中调用脆弱函数的临时性来显示真正有影响的脆弱性。这样一来,您可以获得与可能影响您的Go项目相关的“已知脆弱性”方面的可靠且较少输出噪音的信息。

您可以使用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 的每个版本中已知的漏洞。此外,预计不久后将能够利用 VSCode 的 Go 扩展进行漏洞检查功能。

向下一步

希望这个新功能的支持可以帮助您在漏洞管理方面,并为改进作出贡献。

Go的漏洞管理支持是正在积极开发中的新功能。同时,请注意其中存在一些错误和限制。

我們請大家幫助我們進行以下改進。

    • 自身で管理している Go パッケージの、脆弱性に関する新しい公開情報の報告、または既存の情報の更新を行う。

アンケートに答えて、govulncheck の利用体験を共有する。
不具合報告や機能要望など、意見を寄せる。

期待与大家合作,共同建设更好、更安全的 Go 生态系统。

(中文翻译:Go脆弱性管理 | Go开发者博客)

广告
将在 10 秒后关闭
bannerAds