"dotnet restore" überwacht transitive Pakete
Der dotnet restore
Befehl, mit dem die Abhängigkeiten und Tools eines Projekts wiederhergestellt werden, erzeugt jetzt standardmäßig Sicherheitsrisikowarnungen für transitive Pakete.
Vorheriges Verhalten
In .NET 8 wurde NuGetAudit eingeführt, um Warnungen für Pakete mit bekannten Sicherheitsrisiken auszustrahlen. Standardmäßig wurden nur direkte Paketverweise überwacht, es war jedoch möglich, die NuGetAuditMode
Eigenschaft so zu ändern, dass sie alle Pakete enthält.
Neues Verhalten
Ab .NET 9 wird standardmäßig all
festgelegt, NuGetAuditMode
wenn sie nicht explizit festgelegt wurde. Diese Einstellung bedeutet, dass transitive Pakete (Abhängigkeiten von Paketen, auf die Ihr Projekt direkt verweist) mit bekannten Sicherheitsrisiken jetzt Warnungen gemeldet werden.
Wenn Ihr Projekt Fehler als Warnungen behandelt, kann dieses Verhalten zu Wiederherstellungsfehlern führen.
Eingeführt in Version
.NET 9 Preview 6
Typ des Breaking Changes
Diese Änderung ist eine Verhaltensänderung.
Grund für die Änderung
Pakete mit bekannten Sicherheitsrisiken können dazu führen, dass Ihre App ausnutzbar ist, auch wenn Ihr Projekt nicht direkt auf das anfällige Paket verweist oder verwendet. Neue Features in .NET 9 erleichtern auch die Untersuchung des Paketdiagramms und das Unterdrücken von Empfehlungen, die nicht für die Verwendung des anfälligen Pakets von Ihrer App relevant sind.
Empfohlene Maßnahme
Um die Wahrscheinlichkeit dieser Änderung aufgrund von Warnungen explizit zu verringern, können Sie die Verwendung
<TreatWarningsAsErrors>
und Verwendung<WarningsNotAsErrors>NU1901;NU1902;NU1903;NU1904</WarningsNotAsErrors>
berücksichtigen, um sicherzustellen, dass bekannte Sicherheitsrisiken in Ihrer Umgebung weiterhin zulässig sind.Verwenden Sie Tools, um
dotnet nuget why
das Paket der obersten Ebene zu finden, das dazu führte, dass das transitive Paket mit der bekannten Sicherheitsanfälligkeit eingeschlossen wurde, und versuchen Sie, es zu aktualisieren, um festzustellen, ob die transitive Sicherheitsanfälligkeit wegfällt. Falls nicht, höher stufen Sie das transitive Paket auf ein Paket auf oberster Ebene, indem SiePackageReference
ein Paket hinzufügen und auf eine neuere Version aktualisieren.Wenn Sie eine bestimmte Empfehlung unterdrücken möchten, können Sie Ihrer Projektdatei Ein Element hinzufügen
<NuGetAuditSuppress Include="url" />
, wobeiurl
die URL in der Warnmeldung von NuGet angegeben ist.<ItemGroup> <NuGetAuditSuppress Include="url" /> </ItemGroup>
Wenn Sie nur vor direkten Paketverweisen mit bekannten Sicherheitsrisiken gewarnt werden möchten, können Sie sie in Der Projektdatei festlegen
<NuGetAuditMode>
direct
.<PropertyGroup> <NuGetAuditMode>direct</NuGetAuditMode> </PropertyGroup>