Compartir vía


"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.

  • 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 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 quiere advertirse de las referencias directas del paquete con vulnerabilidades conocidas, puede establecer <NuGetAuditMode> en direct en el archivo del proyecto.

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

Consulte también