NuGet 警告 NU1901、NU1902、NU1903、NU1904
警告 NU1902:包“NuGet.Protocol”5.11.2 具有已知中等严重性漏洞 https://github.com/advisories/GHSA-g3q9-xf95-8hp5
此警告代码会根据已知的漏洞严重性级别进行更改:
警告代码 | Severity |
---|---|
NU1901 | low |
NU1902 | 中等 |
NU1903 | high |
NU1904 | 严重 |
问题
为项目还原的包存在已知漏洞。
有关详细信息,请参阅有关包审计的文档。
解决方案
当项目使用具有已知漏洞的包时,请参阅博客文章,其中详细介绍了建议的操作以及可提供帮助的工具。
升级到较新版本的包可能会解决该警告。
如果项目未直接引用包(其为可传递包),则可使用 dotnet nuget why
了解导致哪个包将自身包含在项目之中。
可检查漏洞公告提供的 URL,以查看包的已修复版本,或是检查已配置的包源以查看包的可用版本。
Visual Studio 的包管理器 UI 可以显示哪些包版本受到影响,哪些版本没有已知的漏洞。
如果这些警告因你使用的是 TreatWarningsAsErrors
而导致还原失败,则可以添加 <WarningsNotAsErrors>NU1901;NU1902;NU1903;NU1904</WarningsNotAsErrors>
以便这些代码始终为警告。
如果不希望收到比你熟悉的严重性级别更低的漏洞的相关通知,则可编辑项目文件并添加 MSBuild 属性 NuGetAuditLevel
,并将值设为 low
、moderate
、high
或 critical
。
例如,<NuGetAuditLevel>high</NuGetAuditLevel>
。
若要禁止显示特定公告,请添加 MSBuild NuGetAuditSuppress 项。
例如,<NuGetAuditSuppress Include="https://github.com/advisories/GHSA-g3q9-xf95-8hp5" />
。
NuGetAuditSuppress
可用于使用 PackageReference
的项目,从 VS 17.11 和 .NET 8.0.400 SDK 开始;对于使用 packages.config
的项目,从 VS 17.12 开始可用。
如果不希望 NuGet 在还原期间检查具有已知漏洞的包,请在项目文件或 Directory.Build.props
文件的 <PropertyGroup>
中添加 <NuGetAudit>false</NuGetAudit>
。
如果要在开发人员计算机上运行 NuGet Audit,但需要在 CI 管道上禁用它,则可以利用 MSBuild 导入环境变量,然后在管道定义中创建 NuGetAudit 环境变量,将其设置为 false
。
在 NuGet 6.12(Visual Studio/MSBuild 17.12 和 .NET 9.0.100 SDK)中,NuGet 更改了默认值 NuGetAuditMode
, all
这意味着报告具有已知漏洞的可传递包。
可以将该值显式设置为 direct
恢复为 .NET 8 的默认值。 或者, 可以将该属性 SdkAnalysisLevel
设置为 8.0.400
暂时禁用 SDK 较新版本中引入的所有新警告和错误。 具体来说,在这种情况下,默认值 NuGetAuditMode
将更改回 direct
。