Freigeben über


NuGet-Warnungen NU1901, NU1902, NU1903, NU1904

Warnung NU1902: Paket „NuGet.Protocol“ 5.11.2 hat eine bekannte mittelschwere Sicherheitslücke, https://github.com/advisories/GHSA-g3q9-xf95-8hp5

Der Warnungscode ändert sich abhängig vom bekannten Schweregrad der Verwundbarkeit:

Warncode Severity
NU1901 low
NU1902 moderate
NU1903 high
NU1904 critical

Issue

Ein Paket, das für Ihr Projekt wiederhergestellt wurde, weist eine bekannte Verwundbarkeit auf.

Weitere Informationen finden Sie in der Dokumentation über die Überwachung von Paketen.

Solution

Wir haben Dokumentation zum Upgrade anfälliger Pakete , die ausführlichere Informationen zu unseren empfohlenen Aktionen erhalten, wenn Ihr Projekt ein Paket mit einer bekannten Sicherheitsanfälligkeit verwendet, und Tools, die ihnen helfen können.

Das Upgrade auf eine neuere Version des Pakets wird wahrscheinlich die Warnung beheben. Wenn Ihr Projekt nicht direkt auf das Paket verweist (es handelt sich um ein transitives Paket), kann dotnet nuget why verwendet werden, um zu verstehen, welches Paket dazu führte, dass es in Ihr Projekt aufgenommen wurde. Sie können die von der Verwundbarkeitsempfehlung bereitgestellte URL überprüfen, um zu sehen, welche Versionen des Pakets behoben wurden, oder überprüfen Sie die konfigurierten Paketquellen, um zu sehen, welche Versionen des Pakets verfügbar sind. Die Benutzeroberfläche des Paketmanagers von Visual Studio kann anzeigen, welche Paketversionen betroffen sind und welche keine bekannten Sicherheitslücken aufweisen.

Wenn diese Warnungen dazu führen, dass die Wiederherstellung fehlschlägt, weil Sie TreatWarningsAsErrors verwenden, können Sie <WarningsNotAsErrors>NU1901;NU1902;NU1903;NU1904</WarningsNotAsErrors> hinzufügen, damit diese Codes als Warnungen erhalten bleiben.

Wenn Sie nicht über Verwundbarkeiten benachrichtigt werden möchten, die weniger schwerwiegend sind als eine Ebene, mit der Sie vertraut sind, können Sie die Projektdatei bearbeiten und eine MSBuild-Eigenschaft NuGetAuditLevel hinzufügen, wobei der Wert auf low, moderate, high oder critical gesetzt ist. Beispiel: <NuGetAuditLevel>high</NuGetAuditLevel>.

Wenn Sie eine bestimmte Empfehlung unterdrücken möchten, fügen Sie einen MSBuild NuGetAuditSuppress-Artikel hinzu. Beispiel: <NuGetAuditSuppress Include="https://github.com/advisories/GHSA-g3q9-xf95-8hp5" />. NuGetAuditSuppress ist im VS 17.11- und .NET 8.0.400 SDK für Projekte verfügbar, die Projekte, die PackageReference verwenden, und von VS 17.12 für Projekte, die verwendet werden packages.config.

Wenn Sie nicht möchten, dass NuGet während der Wiederherstellung nach Paketen mit bekannten Sicherheitslücken sucht, fügen Sie ein <NuGetAudit>false</NuGetAudit> in <PropertyGroup> Ihre Projektdatei oder eine Directory.Build.props-Datei ein. Wenn Sie NuGet Audit auf Entwicklermaschinen ausführen möchten, es aber in CI-Pipelines deaktivieren möchten, können Sie die Vorteile von MSBuild nutzen, das Umgebungsvariablen importiert, und eine NuGetAudit-Umgebungsvariable erstellen, die in Ihrer Pipeline-Definition auf false gesetzt ist.

Für Projekte, die auf .NET 10 Framework abzielen, ist NuGetAuditModedie Standardeinstellung für all . Dies bedeutet, dass NuGet transitive Pakete mit bekannten Sicherheitsrisiken für alle Frameworks im Projekt meldet. Der Wert kann explizit so festgelegt werden, dass direct er auf die Standardeinstellung von .NET 9 zurückgesetzt wird.