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
all
dé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
.