'dotnet restore' audite les packages transitifs
La dotnet restore
commande, qui restaure les dépendances et les outils d’un projet, génère désormais des avertissements de vulnérabilité de sécurité pour les packages transitifs par défaut.
Comportement précédent
Dans .NET 8, NuGetAudit a été introduit pour émettre des avertissements pour les packages avec des vulnérabilités de sécurité connues. Par défaut, seules les références directes de package ont été auditées. Toutefois, il était possible de modifier la NuGetAuditMode
propriété pour inclure tous les packages.
Nouveau comportement
À compter de .NET 9, NuGetAuditMode
la all
valeur par défaut est si elle n’a pas été définie explicitement. Ce paramètre signifie que les packages transitifs (dépendances des packages que votre projet référence directement) avec des vulnérabilités connues provoquent désormais des avertissements.
Si votre projet traite les erreurs comme des avertissements, ce comportement peut entraîner des échecs de restauration.
Version introduite
.NET 9 Preview 6
Type de changement cassant
Ce changement est un changement de comportement.
Raison du changement
Les packages avec des vulnérabilités connues peuvent entraîner l’exploitable de votre application, même si votre projet ne référence pas directement ou n’utilise pas le package vulnérable. De nouvelles fonctionnalités de .NET 9 facilitent également l’examen du graphe de package et la suppression des avis qui ne sont pas pertinents pour la façon dont votre application utilise le package vulnérable.
Action recommandée
Pour réduire explicitement la probabilité de cette modification cassant votre build en raison d’avertissements, vous pouvez envisager votre utilisation et
<TreatWarningsAsErrors>
votre utilisation<WarningsNotAsErrors>NU1901;NU1902;NU1903;NU1904</WarningsNotAsErrors>
pour vous assurer que les vulnérabilités de sécurité connues sont toujours autorisées dans votre environnement.Utilisez des outils tels que
dotnet nuget why
pour rechercher le package de niveau supérieur qui a provoqué l’inclusion du package transitif avec la vulnérabilité connue et essayez de le mettre à niveau pour voir si la vulnérabilité transitive disparaît. Si ce n’est pas le cas, promouvez le package transitif vers un package de niveau supérieur en ajoutant unPackageReference
package pour celui-ci et mettez-le à niveau vers une version plus récente.Si vous souhaitez supprimer un avis spécifique, vous pouvez ajouter
<NuGetAuditSuppress Include="url" />
un élément à votre fichier projet, oùurl
est l’URL signalée dans le message d’avertissement de NuGet.<ItemGroup> <NuGetAuditSuppress Include="url" /> </ItemGroup>
Si vous souhaitez uniquement être averti des références de package directes avec des vulnérabilités connues, vous pouvez définir
<NuGetAuditMode>
surdirect
votre fichier projet.<PropertyGroup> <NuGetAuditMode>direct</NuGetAuditMode> </PropertyGroup>