Partager via


'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.

  • 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 un PackageReference 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> sur direct votre fichier projet.

    <PropertyGroup>
      <NuGetAuditMode>direct</NuGetAuditMode>
    </PropertyGroup>
    

Voir aussi