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
.