"dotnet restore" audita los paquetes transitivos

El dotnet restore comando , que restaura las dependencias de un proyecto, ahora genera advertencias de vulnerabilidad de seguridad para paquetes transitivos de forma predeterminada cuando el proyecto tiene como destino .NET 10 o una versión posterior.

Comportamiento anterior

NuGetAudit se introdujo en .NET 8 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.

En una versión preliminar de .NET 9, el valor predeterminado de NuGetAuditMode se cambió a all para todos los proyectos y este cambio se reviertó a direct en el SDK de .NET 9.0.101.

Nuevo comportamiento

Cuando los proyectos tienen como destino .NET 10 o superior, el valor predeterminado de NuGetAuditMode 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 las advertencias como errores, este comportamiento puede provocar errores de restauración.

Si el proyecto tiene como destino .NET 9 o inferior, el valor predeterminado NuGetAuditMode de sigue siendo direct.

Versión introducida

.NET 10 Preview 3

Tipo de cambio disruptivo

Este cambio es un cambio de comportamiento .

Motivo del cambio

Los paquetes con vulnerabilidades conocidas podrían hacer que la aplicación se pueda aprovechar, incluso si el proyecto no hace referencia directamente o usa directamente el paquete vulnerable.

  • Para evitar que las advertencias de auditoría se traten como errores, incluso cuando se usa <TreatWarningsAsErrors>, puede usar <WarningsNotAsErrors>NU1901;NU1902;NU1903;NU1904;$(WarningsNotAsErrors)</WarningsNotAsErrors>.

  • 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 un PackageReference 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, donde url es la dirección URL notificada en el mensaje de advertencia de NuGet.

    <ItemGroup>
        <NuGetAuditSuppress Include="url" />
    </ItemGroup>
    
  • Si solo desea ser advertido de referencias directas a paquetes con vulnerabilidades conocidas, puede establecer <NuGetAuditMode> en direct en el archivo de proyecto.

    <PropertyGroup>
      <NuGetAuditMode>direct</NuGetAuditMode>
    </PropertyGroup>
    

Consulte también