Freigeben über


Überwachen von Paketabhängigkeiten für Sicherheitsrisiken

Informationen zu Sicherheitsprüfungen

Eine Sicherheitsüberwachung für Paketmanager wie NuGet ist ein Prozess, der die Analyse der Sicherheit der Pakete umfasst, die in einem Softwareprojekt enthalten sind. Dazu gehören das Identifizieren von Sicherheitsrisiken, die Bewertung von Risiken und das Erstellen von Empfehlungen zur Verbesserung der Sicherheit. Die Prüfung kann eine Überprüfung der Pakete selbst sowie alle Abhängigkeiten und deren damit verbundenen Risiken umfassen. Ziel der Überwachung ist es, Sicherheitsrisiken zu identifizieren und zu mindern, die von Angreifern ausgenutzt werden können, z. B. Codeeinfügung oder websiteübergreifende Skriptingangriffe.

Projekttyp NuGet .NET SDK Visual Studio
PackageReference 6.8 .NET 8 SDK (8.0.100) Visual Studio 2022 17.8
packages.config 6.10 N/V Visual Studio 2022 17.10

Ausführen einer Sicherheitsüberwachung mit restore

Der Befehl restore wird automatisch ausgeführt, wenn Sie einen allgemeinen Paketvorgang ausführen, z. B. das erstmalige Laden eines Projekts, das Hinzufügen eines neuen Pakets, das Aktualisieren einer Paketversion oder das Entfernen eines Pakets aus Ihrem Projekt in Ihrer bevorzugten IDE. Eine Beschreibung Ihrer Abhängigkeiten wird anhand eines Berichts bekannter Sicherheitsrisiken in der GitHub Advisory-Datenbank überprüft.

Wichtig

Um Pakete zu überprüfen, muss eine Paketquelle, die eine Sicherheitsrisikodatenbank bereitstellt, verwendet werden. Die V3-URL von NuGet.org ist ein solches Beispiel (https://api.nuget.org/v3/index.json), beachten Sie jedoch, dass der V2-Endpunkt von NuGet.org nicht funktioniert.

  1. Navigieren Sie in der Befehlszeile zu Ihrem Projekt- oder Lösungsverzeichnis.
  2. Führen Sie restore mit Ihrem bevorzugten Tool aus (z. B. dotnet, MSBuild, NuGet.exe, VisualStudio usw.).
  3. Überprüfen Sie den Warnungen, und beheben Sie die bekannten Sicherheitsrisiken.

Sicherheitsrisiken, die mit Updates gefunden wurden

Wenn Sicherheitsrisiken gefunden werden und Updates für das Paket verfügbar sind, können Sie eine der folgenden Aktionen ausführen:

  • Bearbeiten Sie den Speicherort von .csproj oder einen anderen Paketversionsspeicherort (Directory.Packages.props) mit einer neueren Version, die einen Sicherheitspatch enthält.
  • Verwenden Sie in Visual Studio den NuGet-Paket-Manager zum Installieren des Pakets.
  • Führen Sie den Befehl dotnet add package mit der jeweiligen Paket-ID aus, um auf die neueste Version zu aktualisieren.

Sicherheitsrisiken ohne Updates gefunden

In dem Fall, dass eine bekannte Sicherheitsanfälligkeit in einem Paket ohne Sicherheitskorrektur vorhanden ist, können Sie die folgenden Schritte ausführen.

  • Überprüfen Sie alle im Beratungsbericht beschriebenen mildernden Faktoren.
  • Verwenden Sie ein vorgeschlagenes Paket, wenn das Paket als veraltet gekennzeichnet oder abgebrochen wurde.
  • Wenn das Paket open Source ist, sollten Sie einen Fix beitragen.
  • Öffnen Sie ein Problem in der Problemverfolgung des Pakets.

Überprüfen auf Milderungsfaktoren

Überprüfen Sie den Sicherheitsratgeber für alle mildernden Faktoren, mit denen Sie das Paket weiterhin mit der Sicherheitsanfälligkeit verwenden können. Die Sicherheitsanfälligkeit kann nur vorhanden sein, wenn der Code in einem bestimmten Framework, Betriebssystem oder einer speziellen Funktion aufgerufen wird.

Verwenden eines vorgeschlagenen Pakets

Wenn für das verwendete Paket eine Sicherheitsempfehlung gemeldet wird und das Paket als veraltet gekennzeichnet oder nicht mehr unterstützt wird, erwägen Sie die Verwendung eines vorgeschlagenen alternativen Pakets, das der Paketautor deklariert hat, oder ein Paket, das aus ähnlichen Funktionen besteht, die Standard tained sind.

Beitragen eines Fixes

Wenn für die Sicherheitsempfehlung kein Fix vorhanden ist, können Sie Änderungen vorschlagen, die die Sicherheitsanfälligkeit in einer Pullanforderung im Open Source-Repository des Pakets beheben oder den Autor über den Abschnitt Contact owners auf der NuGet.org Paketdetailseite kontaktieren.

Öffnen eines Issues

Wenn Sie die Sicherheitsanfälligkeit nicht beheben oder das Paket nicht aktualisieren oder ersetzen können, öffnen Sie ein Problem in der Problemverfolgung oder bevorzugten Kontaktmethode des Pakets. Auf NuGet.org können Sie zur Seite mit den Paketdetails navigieren und Report package klicken, auf die Sie zum Kontakt mit dem Autor führen.

Es wurden keine Sicherheitsrisiken gefunden

Wenn keine Sicherheitsrisiken gefunden werden, bedeutet dies, dass Pakete mit bekannten Sicherheitsrisiken im Paketdiagramm zum aktuellen Zeitpunkt, zu dem Sie überprüft haben, nicht gefunden wurden. Da die Beratungsdatenbank jederzeit aktualisiert werden kann, empfehlen wir, ihre dotnet restore-Ausgabe regelmäßig zu überprüfen und dasselbe in Ihrem kontinuierlichen Integrationsprozess sicherzustellen.

Konfigurieren der NuGet-Überwachung

Die Überwachung kann über MSBuild-Eigenschaften in einer .csproj- oder MSBuild-Datei konfiguriert werden, die als Teil Ihres Projekts ausgewertet wird. Es wird empfohlen, dass die Überwachung auf Repository-Ebene konfiguriert ist.

MSBuild-Eigenschaft Standard Mögliche Werte Hinweise
NuGetAuditMode direkt direct und all Wenn Sie sowohl Top-Level- als auch transitive Abhängigkeiten prüfen möchten, können Sie den Wert auf all setzen. NuGetAuditMode ist für packages.config-Projekte nicht verfügbar.
NuGetAuditLevel niedrig low, moderate, high und critical Wenn Sie moderate, high und critical Hinweise sehen möchten, setzen Sie den Wert auf moderate.
NuGetAudit true true und false Wenn Sie keine Berichte über Sicherheitsüberwachungen erhalten möchten, können Sie diese Erfahrung ganz ausschalten, indem Sie den Wert auf false setzen.

Ausschließen von Empfehlungen

Zurzeit gibt es keine Unterstützung für das Ausschließen einzelner Berater. Sie können mit <NoWarn>NU1901-NU1904 Warnungen unterdrücken oder die Funktionalität <NuGetAuditLevel> verwenden, um sicherzustellen, dass Ihre Überwachungsberichte für Ihren Workflow nützlich sind.

Warncodes

Warncode Grund
NU1900 Fehler bei der Kommunikation mit der Paketquelle beim Abrufen von Sicherheitsrisikeninformationen.
NU1901 Paket mit geringem Schweregrad erkannt
NU1902 Paket mit mittlerem Schweregrad erkannt
NU1903 Paket mit hohem Schweregrad erkannt
NU1904 Paket mit kritischem Schweregrad erkannt

Sie können Ihren Build so anpassen, dass diese Warnungen als Fehler behandelt werden, um Warnungen als Fehler zu behandeln oder Warnungen nicht als Fehler zu behandeln. Wenn Sie z. B. bereits <TreatWarningsAsErrors> verwenden, um alle Warnungen (C#, NuGet, MSBuild usw.) als Fehler zu behandeln, können Sie <WarningsNotAsErrors>NU1901;NU1902;NU1903;NU1904</WarningsNotAsErrors> verwenden, um zu verhindern, dass Sicherheitsrisiken, die in Zukunft entdeckt werden, Ihren Build unterbrechen. Alternativ können Sie, wenn Sie niedrige und moderate Sicherheitsrisiken als Warnungen beibehalten möchten, aber hohe und kritische Sicherheitsrisiken als Fehler behandeln, und nicht TreatWarningsAsErrors verwenden, können Sie <WarningsAsErrors>NU1903;NU1904</WarningsAsErrors> verwenden.

Hinweis

MSBuild-Eigenschaften für den Nachrichtenschweregrad, z. B. NoWarn und TreatWarningsAsErrors werden für packages.config-Projekte nicht unterstützt.

Zusammenfassung

Sicherheitsauditfunktionen sind für die Aufrechterhaltung der Sicherheit und Integrität von Softwareprojekten von entscheidender Bedeutung. Diese Funktionen bieten Ihnen einen zusätzlichen Schutz vor Sicherheitslücken und gewährleisten, dass Sie Open-Source-Pakete vertrauensvoll nutzen können.