缓解运行时库中的漏洞

问题描述 投票:0回答:1

我们每晚在 CI 服务器上运行

dotnet list <Solution>.sln package --vulnerable --include-transitive --source https://api.nuget.org/v3/index.json
,以检查我们是否依赖于任何易受攻击的软件包。

截至上周二,由于 CVE-2024-30105CVE-2024-38095,此操作失败。

两个易受攻击的库(System.Text.Json 和 System.Formats.Asn1)都是运行时库,因此我们不会将它们显式引用为 Nuget 包。事实上,我们甚至根本不使用 System.Formats.Asn1(它的用法似乎是通过 Microsoft.Extensions.Configuration.Xml 传递的)

我的印象是,我们所要做的就是更新 CI 服务器上的运行时,并指示我们的客户在他们的机器上执行相同的操作。

所以我们做了前者,但我们仍然得到

Project `------------------` has the following vulnerable packages
   [net8.0]:
   Transitive Package         Resolved   Severity   Advisory URL
   > System.Formats.Asn1      8.0.0      High       https://github.com/advisories/GHSA-447r-wph3-92pm

dotnet --version
给我
8.0.303
时,为什么它仍然解析为8.0.0,根据8.0.7(sdk 8.0.303)的发行说明

包括对这两个漏洞的修复?

我做错了什么?我(还是:'()不了解 .NET 依赖项是什么??!

旁注,我们do使用global.json,但

rollForward
设置为
latestMinor

也许这只是一个工具问题:GitHub 上可能相关的问题

.net security nuget dependency-management
1个回答
0
投票

我认为您被这里的 8.0.0 与 .net SDK 版本无关这一事实所欺骗。 IE。它不应该是 8.0.303。

这是不易受攻击的 System.Formats.Asn1 包的版本号。

如果您还没有,请看这里:https://www.nuget.org/packages/System.Formats.Asn1/8.0.1

为了缓解这种情况,您可以显式添加包依赖项。我还会添加一条评论,解释它为何存在,以提醒您尽可能将其删除。

<!-- System.Formats.Asn1 is added to mitigate vulnerability. -->
<!-- Remove as soon as Microsoft.EntityFrameworkCore.SqlServer no longer depends on vulnerable version -->
<PackageReference Include="System.Formats.Asn1" Version="8.0.1" />
© www.soinside.com 2019 - 2024. All rights reserved.