我正试图使用工具扫描我的Go模块中的漏洞。按照“管理Go安装”页面上的说明,我安装了两个Go版本: 1.17.9和1.18.6:
$ go version
go version go1.17.9 linux/amd64
$ go1.18.6 version
go version go1.18.6 linux/amd64我的模块是用1.18.6构建和运行的。我使用go 1.18.6使用以下命令安装了govulncheck:
$ go1.18.6 install golang.org/x/vuln/cmd/govulncheck@latest
go: downloading golang.org/x/vuln v0.0.0-20220913170424-c9fe2ba7ccad
go: downloading golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4
go: downloading golang.org/x/tools v0.1.13-0.20220803210227-8b9a1fbdf5c3
go: downloading golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e但是当我针对我的模块运行govulncheck ./...时,它报告了针对Go 1.17.9的问题。
$ govulncheck ./...
govulncheck is an experimental tool. Share feedback at https://go.dev/s/govulncheck-feedback.
Scanning for dependencies with known vulnerabilities...
Found 5 known vulnerabilities.
Vulnerability #1: GO-2022-0524
Calling Reader.Read on an archive containing a large number of
concatenated 0-length compressed files can cause a panic due to
stack exhaustion.
Call stacks in your code:
path/omitted/example.go:79:67: example.com/example-project/path/omitted/example.Method calls example.com/vulnerable-dependency/path/omitted/example.Foo.Bar, which eventually calls compress/gzip.Reader.Read
Found in: compress/gzip@go1.17.9
Fixed in: compress/gzip@go1.18.4
More info: https://pkg.go.dev/vuln/GO-2022-0524
(etc)我使用的Go版本(1.18.6)已经修复了示例问题,但是由于govulncheck使用的是1.17.9而不是1.18.6,所以问题并没有得到缓解。
如何使用我想要的Go版本来运行这个工具?
发布于 2022-09-13 23:15:23
我将把我的评论写成一个(稍微详细一点)的回答:
根据医生们,govulncheck将使用在路径上找到的go命令。因此,一种解决方案是只在使用govulncheck时导出不同的路径(只有go指向1.18.6而不是1.17.9)。
您可以很容易地在Makefile中这样做:
vulncheck: export PATH:=$(PATH_TO_GO_1_18_6):$(PATH)
vulncheck:
govulncheck ./...https://stackoverflow.com/questions/73709882
复制相似问题