Freigeben über


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

  • 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 Sie PackageReference 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" /> , wobei url 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>
    

Siehe auch