Compartir por


Advertencias de NuGet NU1901, NU1902, NU1903, NU1904

advertencia NU1902: el paquete “NuGet.Protocol” 5.11.2 tiene una vulnerabilidad de gravedad moderada conocida: https://github.com/advisories/GHSA-g3q9-xf95-8hp5

El código de advertencia cambia en función del nivel de gravedad de vulnerabilidad conocido:

Código de advertencia Gravedad
NU1901  Bajo
NU1902 Moderada
NU1903 high
NU1904 crítica

Problema

Un paquete restaurado para el proyecto tiene una vulnerabilidad conocida.

Para más información, consulte la documentación sobre paquetes de auditoría.

Solución

Tenemos una entrada de blog con más información sobre nuestras acciones recomendadas cuando el proyecto usa un paquete con una vulnerabilidad conocida y herramientas que pueden ser de ayuda.

Es probable que la actualización a una versión más reciente del paquete resuelva la advertencia. Si el proyecto no hace referencia al paquete directamente (se trata de un paquete transitivo), dotnet nuget why se puede usar para comprender qué paquete provocó que esté incluido en el proyecto. Puede comprobar la dirección URL proporcionada por el aviso de vulnerabilidad para ver qué versiones del paquete se han corregido o comprobar los orígenes del paquete configurados para ver qué versiones del paquete están disponibles. La interfaz de usuario del administrador de paquetes de Visual Studio puede mostrar qué versiones de paquete se ven afectadas y cuáles no tienen vulnerabilidades conocidas.

Si estas advertencias provocan un error en la restauración porque usas TreatWarningsAsErrors, puedes agregar <WarningsNotAsErrors>NU1901;NU1902;NU1903;NU1904</WarningsNotAsErrors> para permitir que estos códigos permanezcan como advertencias.

Si no desea recibir una notificación de vulnerabilidades que sean menos graves que un nivel con el que se sienta cómodo, puede editar el archivo de proyecto y agregar una propiedad de MSBuild NuGetAuditLevel, con el valor establecido en low, moderate, high o critical. Por ejemplo, <NuGetAuditLevel>high</NuGetAuditLevel>.

Si desea suprimir una advertencia específica, agregue un elemento NuGetAuditSuppress de MSBuild. Por ejemplo, <NuGetAuditSuppress Include="https://github.com/advisories/GHSA-g3q9-xf95-8hp5" />. NuGetAuditSuppress está disponible en VS 17.11 y el SDK de .NET 8.0.400 para proyectos que usan PackageReference y en VS 17.12 para proyectos que usan packages.config.

Si no deseas que NuGet compruebe si hay paquetes con vulnerabilidades conocidas durante la restauración, agrega <NuGetAudit>false</NuGetAudit> dentro de un elemento <PropertyGroup> en el archivo de proyecto o un archivo Directory.Build.props. Si desea ejecutar la auditoría de NuGet en máquinas para desarrolladores, pero inhabilitarla en canalizaciones de CI, puede aprovechar las ventajas de las variables de entorno de importación de MSBuild y crear una variable de entorno NuGetAudit establecida como false en la definición de la canalización.

En NuGet 6.12 (Visual Studio/MSBuild 17.12 y el SDK de .NET 9.0.100), NuGet cambió el valor predeterminado de NuGetAuditMode a all, lo que significa informar sobre paquetes transitivos con vulnerabilidades conocidas. El valor se puede establecer explícitamente en direct para revertir al valor predeterminado de .NET 8. Como alternativa, la propiedad SdkAnalysisLevel se puede establecer en 8.0.400 para deshabilitar temporalmente todas las nuevas advertencias y errores introducidos en las versiones más recientes del SDK. En concreto, en este caso, el valor predeterminado de NuGetAuditMode se cambia de nuevo a direct.