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:
Warnungscode | Severity |
---|---|
NU1901 | low |
NU1902 | moderat |
NU1903 | high |
NU1904 | Kritisch |
Problem
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.
Lösung
Wir haben einen Blogbeitrag verfasst, in dem wir unsere empfohlenen Maßnahmen für den Fall erläutern, dass Ihr Projekt ein Paket mit einer bekannten Sicherheitslücke verwendet, sowie Tools, die dabei 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.
In NuGet 6.12 (Visual Studio/MSBuild 17.12 und .NET 9.0.100 SDK) hat NuGet den Standardwert geändert NuGetAuditMode
all
, was bedeutet, dass Berichte zu transitiven Paketen mit bekannten Sicherheitsrisiken angezeigt werden.
Der Wert kann explizit so festgelegt werden, dass direct
er auf den Standardwert von .NET 8 zurückgesetzt wird. Alternativ kann die Eigenschaft SdkAnalysisLevel
so festgelegt 8.0.400
werden, dass alle neuen Warnungen und Fehler, die in neueren Versionen des SDK eingeführt wurden, vorübergehend deaktiviert werden. Insbesondere in diesem Fall wird der Standardwert NuGetAuditMode
von zurück in direct
.