cme*_*ren 12 nuget nuget-package transitive-dependency .net-core
我已使用 扫描了易受攻击的 NuGet 包dotnet list package --vulnerable --include-transitive。我得到以下信息:
Project `MyProject` has the following vulnerable packages
[net6.0]:
Transitive Package Resolved Severity Advisory URL
> System.Net.Http 4.3.0 High https://github.com/advisories/GHSA-7jgj-8wvc-jh57
Run Code Online (Sandbox Code Playgroud)
如您所见,我正在使用 .NET 6。在检查我的 时packages.lock.json,我发现它System.Net.Http 4.3.0依赖于 .NET 6 NETStandard.Library 1.6.1。当阅读咨询 URL上发布的信息时,它说只有某些 .NET Core 1.x 和 2.x 运行时容易受到攻击。同样,我使用的是 .NET 6,因此我预计此漏洞不适用于我。
我很困惑如何处理这个问题。
如果该漏洞与我无关,我非常希望不要收到有关该漏洞的通知。恕我直言dotnet list package,应该考虑到目标框架,自动处理这个问题,但这是另一个问题。无论如何,这是作为 CI 构建的一部分完成的,因此误报很烦人。我不想因为与我无关的内容而收到警告或构建错误的垃圾邮件。
我可以安装最新版本System.Net.Http作为直接依赖项,但可能有数百个传递包,这是一个无法扩展的解决方案:我不想让数百个包保持最新,而且到目前为止因为我知道如果我的其他依赖项发生变化而导致它们过时,没有简单的方法可以自动删除这些“直接安装的传递依赖项”。我特别希望避免这一切,因为我似乎没有受到影响。
我的首选解决方案可能是去找依赖于易受攻击的软件包的软件包的作者并告诉他们进行更新,但首先,由于与上述相同的原因,这不会真正扩展(并且会延迟我获取补丁,特别是如果传递依赖项是从我身上删除的几个步骤,和/或如果其中一个步骤未主动维护),其次,此包仅由 引用NETStandard.Library,这不是您正常的 NuGet 包。
我应该如何处理这个问题(特别是这个例子,以及一般问题),以维护安全最佳实践(特别是修复漏洞)并且不会增加噩梦般的维护负担?
Ald*_*cor -3
在您的示例中,有一个引用 System.Net.Http 4.3.0 版本的包。
这会导致您的应用解析 4.3.0。这意味着您的项目确实安装了该版本。查看您的 bin 文件夹进行确认。换句话说:它与您相关。
为了避免使用这个版本,您需要做的就是按照咨询网址的建议安装 4.3.4。这意味着修复方法是在 .csproj 上添加所需的版本,例如。
<PackageReference Include="System.Net.Http" Version="4.3.4" />
Run Code Online (Sandbox Code Playgroud)
这将导致您的项目解析包含修复程序的版本,并且您无需联系中间包的作者。
| 归档时间: |
|
| 查看次数: |
1875 次 |
| 最近记录: |