用于dotnet restore
还原项目的依赖项的命令现在默认在项目面向 .NET 10 或更高版本时为可传递包生成安全漏洞警告。
以前的行为
NuGetAudit 是在 .NET 8 中引入的,用于发出具有已知安全漏洞的包的警告。
默认情况下,只审核了直接包引用,但是,可以更改 NuGetAuditMode
属性以包括所有包。
在 .NET 9 预览版 6 中,NuGetAuditMode 的默认值已更改为 all
所有项目,此更改在 .NET 9.0.101 SDK 中还原回 direct
。
新行为
当项目面向 .NET 10 或更高版本时,如果尚未显式设置,NuGetAuditMode
默认情况下为 all
。
此设置意味着具有已知漏洞的 可传递包 (项目直接引用的包的依赖项)现在会导致报告警告。
如果项目将警告视为错误,则此行为可能会导致还原失败。
如果项目面向 .NET 9 或更低版本,则保留direct
默认值NuGetAuditMode
。
引入的版本
.NET 10 预览版 3
破坏性变更的类型
此更改是 行为更改。
更改原因
具有已知漏洞的包可能会导致你的应用被利用,即使你的项目没有直接引用或直接使用易受攻击的包。
建议的措施
若要防止将审核警告视为错误,即使使用
<TreatWarningsAsErrors>
,也可以使用<WarningsNotAsErrors>NU1901;NU1902;NU1903;NU1904;$(WarningsNotAsErrors)</WarningsNotAsErrors>
。尝试使用像
dotnet nuget why
这样的工具查找导致包含已知漏洞的可传递包的顶级包,并尝试升级它以查看可传递漏洞是否消失。 如果没有,请通过为可传递包添加PackageReference
将其升级为顶级包,并将其升级到较新版本。如果要抑制特定的建议,可以将
<NuGetAuditSuppress Include="url" />
项目添加到项目文件中,其中url
是NuGet警告消息中报告的URL。<ItemGroup> <NuGetAuditSuppress Include="url" /> </ItemGroup>
如果您只想收到有关具有已知漏洞的直接包引用的警告,可以在项目文件中将
<NuGetAuditMode>
设置为direct
。<PropertyGroup> <NuGetAuditMode>direct</NuGetAuditMode> </PropertyGroup>