最近github.comDependabot抱怨我的项目中的一些依赖项容易受到DOS的攻击,有一个“破碎或危险的加密算法”,并且有一个“不受控制的资源消耗”的bug。
具体来说,它警告我有关www.example.com模块的CVE-2022-27664golang.org/x/net,其他模块的CVE-2022-27191和CVE-2022-32149。
我所做的是在所有使用的模块上运行“go get -u”。显然,它没有解决问题。然后我开始用“go graph”寻找模块依赖关系。花了一段时间,下面是我找到的依赖关系序列:
google.golang.org/api@v0.114.0 =>
go.opencensus.io@v0.24.0 =>
google.golang.org/grpc@v1.33.2 =>
github.com/envoyproxy/go-control-plane@v0.9.4 =>
google.golang.org/genproto@v0.0.0-20190819201941-24fa4b261c55 =>
golang.org/x/tools@v0.0.0-20190226205152-f727befe758c =>
google.golang.org/appengine@v1.4.0 =>
golang.org/x/net@v0.0.0-20180724234803-3673e40ba225
这意味着从2023年3月17日起最新和更新的google.golang.org/api
包会导致对2018年的golang.org/x/net
的依赖。
我从其他的google包中看到了很多对旧的net模块的依赖:
cloud.google.com/go/compute@v1.19.0 golang.org/x/net@v0.8.0
github.com/googleapis/gax-go/v2@v2.8.0 golang.org/x/net@v0.7.0
go.opencensus.io@v0.24.0 golang.org/x/net@v0.0.0-20201110031124-69a78807bb2b
golang.org/x/crypto@v0.7.0 golang.org/x/net@v0.8.0
golang.org/x/oauth2@v0.6.0 golang.org/x/net@v0.8.0
google.golang.org/api@v0.114.0 golang.org/x/net@v0.8.0
google.golang.org/appengine@v1.6.7 golang.org/x/net@v0.0.0-20190603091049-60506f45cf65
google.golang.org/genproto@v0.0.0-20230323212658-478b75c54725 golang.org/x/net@v0.8.0
google.golang.org/grpc@v1.54.0 golang.org/x/net@v0.8.0
golang.org/x/crypto@v0.6.0 golang.org/x/net@v0.6.0
google.golang.org/grpc@v1.33.2 golang.org/x/net@v0.0.0-20190311183353-d8887717615a
golang.org/x/tools@v0.1.12 golang.org/x/net@v0.0.0-20220722155237-a158d28d115b
golang.org/x/crypto@v0.0.0-20200622213623-75b288015ac9 golang.org/x/net@v0.0.0-20190404232315-eb5bcb51f2a3
golang.org/x/crypto@v0.0.0-20210921155107-089bfa567519 golang.org/x/net@v0.0.0-20210226172049-e18ecbb05110
golang.org/x/tools@v0.0.0-20191119224855-298f0cb1881e golang.org/x/net@v0.0.0-20190620200207-3b0461eec859
google.golang.org/grpc@v1.25.1 golang.org/x/net@v0.0.0-20190311183353-d8887717615a
golang.org/x/tools@v0.0.0-20190524140312-2c0ae7006135 golang.org/x/net@v0.0.0-20190311183353-d8887717615a
google.golang.org/grpc@v1.27.0 golang.org/x/net@v0.0.0-20190311183353-d8887717615a
golang.org/x/tools@v0.0.0-20190226205152-f727befe758c golang.org/x/net@v0.0.0-20190213061140-3a22650c66bd
google.golang.org/grpc@v1.19.0 golang.org/x/net@v0.0.0-20180826012351-8a410e7b638d
golang.org/x/tools@v0.0.0-20190311212946-11955173bddd golang.org/x/net@v0.0.0-20190311183353-d8887717615a
google.golang.org/grpc@v1.23.0 golang.org/x/net@v0.0.0-20190311183353-d8887717615a
google.golang.org/appengine@v1.4.0 golang.org/x/net@v0.0.0-20180724234803-3673e40ba225
我已经检查了github.com/googleapis/google-api-go-client存储库,发现了这个问题https://github.com/googleapis/google-api-go-client/issues/1048我说同样的问题,但后来用户hashier
说,因为go list -m all
命令显示最新版本,这不是一个问题。
所以,主要问题是:这是一个问题,为什么?
我只是不知道这里应该修复什么,github Dependabot检查或google-api-go-client模块dependecies。
1条答案
按热度按时间k5ifujac1#
是时候回答这个问题了。
当我用
go mod graph
在一个单独的草稿库中逐个检查项目中的所有包时,发现这些易受攻击的依赖项来自另一个库:github.com/go-gorm/postgres
。所以,我错误地确定了脆弱的依赖来自.显然这是由于巨大的依赖关系图:
如果有人正在寻找一种可视化项目依赖关系的方法,那么它就是:
回到最初的问题。它是由
github.com/go-gorm/postgres
使用的旧版本Go引起的。据我所知,修复它的唯一方法是将Go版本升级到1.18。如果版本更低,go mod graph
会显示出大量易受攻击的软件包。