"dotnet restore" überwacht transitive Pakete

Der dotnet restore Befehl, mit dem die Abhängigkeiten eines Projekts wiederhergestellt werden, erzeugt jetzt Sicherheitsrisikowarnungen für transitive Pakete standardmäßig, wenn das Projekt auf .NET 10 oder eine höhere Version ausgerichtet ist.

Vorheriges Verhalten

NuGetAudit wurde in .NET 8 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.

In einer Vorschauversion von .NET 9 wurde die Standardeinstellung von NuGetAuditMode für alle Projekte auf all geändert, und diese Änderung wurde in der .NET 9.0.101 SDK wieder auf direct zurückgesetzt.

Neues Verhalten

Wenn Projekte .NET 10 oder höher verwenden, wird NuGetAuditMode standardmäßig auf all gesetzt, wenn es nicht explizit festgelegt wurde. Diese Einstellung sorgt dafür, dass transitive Pakete (Abhängigkeiten von Paketen, auf die Ihr Projekt direkt verweist) mit bekannten Sicherheitsrisiken nun Warnungen auslösen. Wenn Ihr Projekt Warnungen als Fehler behandelt, kann dieses Verhalten zu Wiederherstellungsfehlern führen.

Wenn Ihr Projekt auf .NET 9 oder niedriger ausgerichtet ist, bleibt der Standardwert für NuGetAuditModedirect.

Eingeführte Version

.NET 10 Preview 3

Art der einschneidenden Änderung

Diese Änderung ist eine Verhaltensänderung.

Grund für Änderung

Pakete mit bekannten Sicherheitsrisiken können dazu führen, dass Ihre App ausgenutzt werden kann, auch wenn Ihr Projekt nicht direkt auf das anfällige Paket verweist oder direkt verwendet.

  • Um zu verhindern, dass Überwachungswarnungen als Fehler behandelt werden, auch bei Verwendung <TreatWarningsAsErrors>, können Sie verwenden <WarningsNotAsErrors>NU1901;NU1902;NU1903;NU1904;$(WarningsNotAsErrors)</WarningsNotAsErrors>.

  • Verwenden Sie Tools wie dotnet nuget why, um das Paket der obersten Ebene zu finden, das dazu führte, dass das transitive Paket mit der bekannten Schwachstelle eingeschlossen wurde, und versuchen Sie, es zu aktualisieren, um zu prüfen, ob die transitive Schwachstelle verschwindet. Wenn dies nicht der Fall ist, erheben Sie das transitive Paket zu einem Paket der obersten Ebene, indem Sie ihm ein PackageReference hinzufügen, und aktualisieren Sie es auf eine neuere Version.

  • Wenn Sie eine bestimmte Empfehlung unterdrücken möchten, können Sie das Element <NuGetAuditSuppress Include="url" /> zu Ihrer Projektdatei hinzufügen, wobei url die URL ist, die in der Warnmeldung von NuGet genannt wird.

    <ItemGroup>
        <NuGetAuditSuppress Include="url" />
    </ItemGroup>
    
  • Wenn Sie nur vor direkten Paketverweisen mit bekannten Sicherheitsrisiken gewarnt werden möchten, können Sie <NuGetAuditMode> in Ihrer Projektdatei auf direct festlegen.

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

Siehe auch