Partager via


Avertissements NuGet NU1901, NU1902, NU1903 et NU1904

avertissement NU1902 : le package « NuGet.Protocol » 5.11.2 présente une vulnérabilité de gravité modérée connue, https://github.com/advisories/GHSA-g3q9-xf95-8hp5

Le code d’avertissement change en fonction du niveau de gravité de vulnérabilité connu :

Code d’avertissement Niveau de gravité
NU1901  Faible
NU1902 moderate
NU1903 high
NU1904 critical

Problème

Un package restauré pour votre projet présente une vulnérabilité connue.

Pour plus d’informations, consultez la documentation sur l’audit des packages.

Solution

Nous avons un billet de blog avec plus de discussion sur nos actions recommandées lorsque votre projet utilise un package avec une vulnérabilité connue et des outils qui peuvent vous aider.

La mise à niveau vers une version plus récente du package est susceptible de résoudre l’avertissement. Si votre projet ne référence pas directement le package (il s’agit d’un package transitif), dotnet nuget why peut être utilisé pour comprendre quel package a provoqué son inclusion dans votre projet. Vous pouvez vérifier l’URL fournie par l’avertissement sur la vulnérabilité pour voir quelles versions du package ont été corrigées ou cocher vos sources de package configurées pour voir quelles versions du package sont disponibles. L’interface utilisateur du gestionnaire de package de Visual Studio peut montrer quelles versions de package sont affectées et qui n’ont pas de vulnérabilités connues.

Si ces avertissements provoquent l’échec de la restauration, car vous utilisez TreatWarningsAsErrors, vous pouvez ajouter <WarningsNotAsErrors>NU1901;NU1902;NU1903;NU1904</WarningsNotAsErrors> pour autoriser ces codes à rester en tant qu’avertissements.

Si vous ne souhaitez pas être averti des vulnérabilités moins graves qu’un niveau dans lequel vous êtes à l’aise, vous pouvez modifier le fichier projet et ajouter une propriété MSBuild NuGetAuditLevel, avec la valeur définie sur low, moderate, high ou critical. Par exemple : <NuGetAuditLevel>high</NuGetAuditLevel>.

Si vous souhaitez supprimer un avis spécifique, ajoutez un article NuGetAuditSuppress MSBuild. Par exemple, <NuGetAuditSuppress Include="https://github.com/advisories/GHSA-g3q9-xf95-8hp5" />. NuGetAuditSuppress est disponible à partir du SDK VS 17.11 et .NET 8.0.400 pour les projets utilisant PackageReference, et à partir de VS 17.12 pour les projets utilisant packages.config.

Si vous ne souhaitez pas que NuGet vérifie les packages présentant des vulnérabilités connues lors de la restauration, ajoutez <NuGetAudit>false</NuGetAudit> dans <PropertyGroup> dans votre fichier projet ou un fichier Directory.Build.props. Si vous souhaitez exécuter NuGet Audit sur les machines des développeurs, mais le désactiver sur les pipelines de CI, vous pouvez tirer parti de l'importation des variables d'environnement par MSBuild, et créer une variable d'environnement NuGetAudit définie sur false dans la définition de votre pipeline.

Dans NuGet 6.12 (Kit de développement logiciel (SDK) Visual Studio/MSBuild 17.12 et .NET 9.0.100), NuGet a modifié la valeur par défaut par NuGetAuditMode alldéfaut, ce qui signifie signaler les packages transitifs avec des vulnérabilités connues. La valeur peut être explicitement définie pour direct revenir à la valeur par défaut de .NET 8. Vous pouvez également définir la propriété SdkAnalysisLevel pour 8.0.400 désactiver temporairement tous les nouveaux avertissements et erreurs introduits dans les versions plus récentes du Kit de développement logiciel (SDK). Plus précisément dans ce cas, la valeur par défaut est NuGetAuditMode remplacée par direct.