【发布时间】:2021-11-18 06:21:37
【问题描述】:
我一直在研究一组项目,处理更新依赖项,有一件事我没有明确的答案,这就是为什么生成的 sum 文件列出了每个依赖项的这么多旧版本的原因。
在我们的项目中,我们通过旧版本的
golang.org/x/crypto
我们通过 replace 指令解决了带有安全修复程序的软件包版本,但这感觉不太正确,可能会将我们锁定在不安全的软件包版本中。
现在我已经完成并更新了依赖于旧版本 golang.org/x/crypto 的包,并使用 replace 指令循环回包并尝试更新,但我仍然看到列出的旧包。
我想知道这对我们的项目意味着什么,以及我如何才能找到为什么首先包含这些内容?
运行一个简单的
go mod why -m golang.org/x/crypto
表明唯一依赖于的项目
golang.org/x/crypto
是我更新的那个。
【问题讨论】:
-
Why does 'go.sum' include information for module versions I am no longer using? 和 go.sum files:“go 命令可能需要从依赖项的多个版本加载 go.mod 文件,以便执行最小版本选择。”
-
尝试运行
go mod tidy命令golang.org/ref/mod#go-mod-tidy -
@JimB 感谢您的链接,我在搜索中错过了该链接。那么关于表明
crypto的X.Y.Z版本有漏洞的漏洞扫描,这是否意味着只要我的项目包含带有漏洞补丁的更高版本,扫描可能会错误地指示漏洞? -
漏洞扫描程序应该检查
go.mod以了解正在使用的确切版本。go.sum只是软件包版本的记录,而不是正在编译的内容。看起来你应该能够在不诉诸replace的情况下更新加密包,但它对理解 go 依赖项的扫描器应该没有影响。 -
这取决于扫描仪,但如果您将
go.mod更新为go1.17可能会有所帮助,这将包括静态验证的所有间接依赖项。
标签: go go-modules