卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章34090本站已运行391

Golang:如何处理 google.golang.org/api 对 golang.org/x/net 的过时依赖项

golang:如何处理 google.golang.org/api 对 golang.org/x/net 的过时依赖项

问题内容

最近 github.com dependabot 抱怨我的项目中的一些依赖项容易受到 dos 的攻击,具有“损坏或有风险的加密算法”,并且存在“不受控制的资源消耗”的错误。

具体来说,它警告我有关 golang.org/x/net 模块的 cve-2022-27664、其他模块的 cve-2022-27191 和 cve-2022-32149。

我所做的是在所有使用的模块上运行“go get -u”。显然,这并没有解决问题。然后我开始用“go graph”寻找模块依赖关系。花了一段时间,这是我找到的依赖顺序:

google.golang.org/[email protected] =>
[email protected] =>
google.golang.org/[email protected] =>
github.com/envoyproxy/[email protected] =>
google.golang.org/[email protected] =>
golang.org/x/[email protected] =>
google.golang.org/[email protected] =>
golang.org/x/[email protected]

这意味着 2023 年 3 月 17 日起的最现代且更新的 google.golang.org/api 软件包会导致对 2018 年起的 golang.org/x/net 的依赖。

我发现其他谷歌软件包对旧网络模块有很多依赖:

cloud.google.com/go/[email protected] golang.org/x/[email protected]
github.com/googleapis/gax-go/[email protected] golang.org/x/[email protected]
[email protected] golang.org/x/[email protected]
golang.org/x/[email protected] golang.org/x/[email protected]
golang.org/x/[email protected] golang.org/x/[email protected]
google.golang.org/[email protected] golang.org/x/[email protected]
google.golang.org/[email protected] golang.org/x/[email protected]
google.golang.org/[email protected] golang.org/x/[email protected]
google.golang.org/[email protected] golang.org/x/[email protected]
golang.org/x/[email protected] golang.org/x/[email protected]
google.golang.org/[email protected] golang.org/x/[email protected]
golang.org/x/[email protected] golang.org/x/[email protected]
golang.org/x/[email protected] golang.org/x/[email protected]
golang.org/x/[email protected] golang.org/x/[email protected]
golang.org/x/[email protected] golang.org/x/[email protected]
google.golang.org/[email protected] golang.org/x/[email protected]
golang.org/x/[email protected] golang.org/x/[email protected]
google.golang.org/[email protected] golang.org/x/[email protected]
golang.org/x/[email protected] golang.org/x/[email protected]
google.golang.org/[email protected] golang.org/x/[email protected]
golang.org/x/[email protected] golang.org/x/[email protected]
google.golang.org/[email protected] golang.org/x/[email protected]
google.golang.org/[email protected] golang.org/x/[email protected]

我检查了 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 模块依赖项。


正确答案


是时候回答这个问题了。

当我尝试使用 go mod graph 在单独的草稿存储库中一一检查项目中的所有包时,这些易受攻击的依赖项来自另一个存储库:github.com/go-gorm/postgres

所以,我错误地确定了易受攻击的依赖项来自何处。显然这是由于巨大的依赖关系图造成的:

[0] $ go mod graph | wc
    667    1334   56113

如果有人正在寻找一种可视化项目依赖关系的方法,这里是:

go mod graph | modgv | dot -Tsvg -o graph.svg

回到最初的问题。这是由于 github.com/go-gorm/postgres 使用旧版本的 go 造成的。据我了解,修复它的唯一方法是将 go 版本升级到 1.18。如果版本较低,go mod graph会显示很多易受攻击的包。

卓越飞翔博客
上一篇: 如何在 slog 记录器中传递结构并自动使用其字段?
下一篇: 返回列表
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏