"dotnet restore" audita los paquetes transitivos
El dotnet restore
comando , que restaura las dependencias y herramientas de un proyecto, ahora genera advertencias de vulnerabilidad de seguridad para paquetes transitivos de forma predeterminada.
Comportamiento anterior
En .NET 8, NuGetAudit se introdujo para emitir advertencias para paquetes con vulnerabilidades de seguridad conocidas. De forma predeterminada, solo se auditaron las referencias directas del paquete; sin embargo, era posible cambiar la NuGetAuditMode
propiedad para incluir todos los paquetes.
Comportamiento nuevo
A partir de .NET 9, NuGetAuditMode
el valor predeterminado es all
si no se ha establecido explícitamente. Esta configuración significa que los paquetes transitivos (dependencias de paquetes a los que hace referencia el proyecto directamente) con vulnerabilidades conocidas ahora hacen que se notifiquen advertencias.
Si el proyecto trata los errores como advertencias, este comportamiento puede provocar errores de restauración.
Versión introducida
.NET 9 Versión preliminar 6
Tipo de cambio importante
Este es un cambio de funcionamiento.
Motivo del cambio
Los paquetes con vulnerabilidades conocidas pueden hacer que la aplicación se pueda aprovechar, incluso si el proyecto no hace referencia directamente a ni usa el paquete vulnerable. Las nuevas características de .NET 9 también facilitan la investigación del gráfico de paquetes y la supresión de avisos que no son relevantes para la forma en que la aplicación usa el paquete vulnerable.
Acción recomendada
Para reducir explícitamente la probabilidad de este cambio importante en la compilación debido a advertencias, puede considerar el uso y el uso
<WarningsNotAsErrors>NU1901;NU1902;NU1903;NU1904</WarningsNotAsErrors>
de para asegurarse de<TreatWarningsAsErrors>
que las vulnerabilidades de seguridad conocidas todavía están permitidas en su entorno.Use herramientas como
dotnet nuget why
para encontrar el paquete de nivel superior que provocó que el paquete transitivo con la vulnerabilidad conocida se incluya y intente actualizarlo para ver si la vulnerabilidad transitiva desaparece. Si no es así, promueva el paquete transitivo a un paquete de nivel superior agregando unPackageReference
elemento para él y actualícelo a una versión más reciente.Si desea suprimir un aviso específico, puede agregar
<NuGetAuditSuppress Include="url" />
elemento al archivo de proyecto, dondeurl
es la dirección URL notificada en el mensaje de advertencia de NuGet.<ItemGroup> <NuGetAuditSuppress Include="url" /> </ItemGroup>
Si solo quiere advertirse de las referencias directas del paquete con vulnerabilidades conocidas, puede establecer
<NuGetAuditMode>
endirect
en el archivo del proyecto.<PropertyGroup> <NuGetAuditMode>direct</NuGetAuditMode> </PropertyGroup>