Skip to main content

Erkennung anfälliger Abhängigkeiten

Wenn die von GitHub Ihnen gemeldeten Abhängigkeitsinformationen nicht ihren Erwartungen entsprechen, gibt es eine Reihe von Punkten, die Sie berücksichtigen müssen, und verschiedene Dinge, die Sie überprüfen können.

Die Ergebnisse der von GitHub gemeldeten Abhängigkeitserkennung unterscheiden sich möglicherweise von den Ergebnissen, die von anderen Tools zurückgegeben werden. Hierfür gibt es gute Gründe, und es ist hilfreich zu verstehen, wie GitHub Abhängigkeiten für dein Projekt bestimmt.

Fehlende oder nicht erkannte Abhängigkeiten

          GitHub Generiert und zeigt Abhängigkeitsdaten anders als andere Tools an. Wenn du also ein anderes Tool zur Identifizierung von Abhängigkeiten verwendet hast, werden dir höchstwahrscheinlich andere Ergebnisse angezeigt. Beachte Folgendes:
  • GitHub Advisory Database ist eine der Datenquellen, die GitHub verwendet, um anfällige Abhängigkeiten und Schadsoftware zu identifizieren. Es ist eine kostenlose, kuratierte Datenbank von Sicherheitsratgebern für gemeinsame Paketökosysteme auf GitHub. Sie umfasst sowohl Daten, die direkt von GitHub an GitHub Security Advisories gemeldet werden, als auch offizielle Feeds und Community-Quellen. Diese Daten werden von GitHub überprüft und kuratiert, um sicherzustellen, dass keine falschen oder nicht verwertbaren Informationen an die Entwicklergemeinschaft weitergegeben werden. Weitere Informationen finden Sie unter Durchsuchen von Sicherheitsempfehlungen in der GitHub Advisory Database.

  • Der Abhängigkeitsgraph analysiert alle bekannten Paketmanifestdateien im Repository eines Benutzers. Für npm wird zum Beispiel die Datei package-lock.json geparst. Es wird ein Graph mit allen Abhängigkeiten des Repositorys und den öffentlichen Abhängigkeiten erstellt. Dies geschieht, wenn du das Abhängigkeitsdiagramm aktivierst und eine Person in den Standardbranch pusht und Änderungen an einem unterstützten Manifestformat vornimmt. Weitere Informationen findest du unter Informationen zum Abhängigkeitsdiagramm und Fehler beim Abhängigkeitsdiagramm beheben.

  •           Dependabot scannt jeden Push in den Standard-Branch, der eine Manifestdatei enthält. Wenn ein neuer Hinweis hinzugefügt wird, werden alle vorhandenen Repositorys überprüft und eine Warnung für jedes betroffene Repository erstellt. 
            Dependabot alerts werden auf Repositoryebene aggregiert, statt eine Benachrichtigung pro Empfehlung zu erstellen. Weitere Informationen finden Sie unter [AUTOTITLE](/code-security/dependabot/dependabot-alerts/about-dependabot-alerts).
    
  • Dependabot security updates wird ausgelöst, wenn Sie eine Benachrichtigung über eine anfällige Abhängigkeit in Ihrem Repository erhalten. Dependabot Erstellt, sofern möglich, eine Pull-Request in Ihrem Repository, um die anfällige Abhängigkeit auf die minimal erforderliche sichere Version zu aktualisieren, die nötig ist, um die Sicherheitsanfälligkeit zu vermeiden. Weitere Informationen findest du unter Informationen zu Dependabot-Sicherheitsupdates und Dependabot-Fehler.

            Dependabot überprüft keine Repositorys nach einem Zeitplan, sondern wenn sich etwas ändert. So wird beispielsweise ein Scan ausgelöst, wenn eine neue Abhängigkeit hinzugefügt wird (GitHub sucht bei jedem Push darauf), oder wenn der Datenbankwird. Weitere Informationen finden Sie unter [AUTOTITLE](/code-security/dependabot/dependabot-alerts/about-dependabot-alerts#detection-of-insecure-dependencies).
    

Bereich der Warnungsabdeckung

          Dependabot alerts informieren Sie über Abhängigkeiten, die zu aktualisieren sind, einschließlich transitiver Abhängigkeiten, bei denen die Version aus einem Manifest oder einem Lockfile bestimmt werden kann. 
          Dependabot security updates schlägt nur eine Änderung vor, wo Dependabot die Abhängigkeit direkt korrigieren kann, das heißt, wenn diese sind:
  • Direkte Abhängigkeiten sind explizit in einem Manifest oder einer Sperrdatei definiert

  • Transitive Abhängigkeiten sind in einer Sperrdate definiert

            **Überprüfung**: Liegt das nicht entschärfte Sicherheitsrisiko für eine Komponente vor, die weder im Manifest noch in der Sperrdatei des Repositorys angegeben ist?
    

Nicht unterstützte Ökosysteme

          Dependabot alerts werden für eine Reihe von Ökosystemen unterstützt, in denen wir qualitativ hochwertige, umsetzbare Daten bereitstellen können. Kuratierte Empfehlungen im GitHub Advisory Database, das Abhängigkeitsdiagramm, Dependabot Sicherheitsupdates, 

und Dependabot alerts werden für mehrere Ökosysteme bereitgestellt, einschließlich Java Mavens, JavaScripts npm und Yarn, .NETs NuGet, Pythons pip, Rubys RubyGems und PHPs Composer. Eine Übersicht über die von uns unterstützten Dependabot alertsPaketökosysteme finden Sie unter Von Abhängigkeitsdiagrammen unterstützte Paket-Ökosysteme.

Hinweise können auch für andere Ökosysteme vorhanden sein. Die Informationen in einem nicht überprüften Sicherheitshinweis werden von den Verantwortlichen für ein bestimmtes Repository bereitgestellt. Diese Daten werden nicht von GitHub. Weitere Informationen finden Sie unter Durchsuchen von Sicherheitsempfehlungen in der GitHub Advisory Database.

          **Überprüfung**: Betrifft das nicht entschärfte Sicherheitsrisiko ein nicht unterstütztes Ökosystem?

Historische Sicherheitsrisiken

Das GitHub Advisory Database wurde im November 2019 gestartet und zunächst rückwirkend mit Empfehlungen für Sicherheitsrisiken in den unterstützten Ökosystemen ab 2017 versehen. Beim Hinzufügen von CVEs in die Datenbank werden vorrangig neuere CVEs und CVEs aufgenommen, die neuere Softwareversionen betreffen.

Einige Informationen zu älteren Sicherheitsrisiken sind verfügbar, insbesondere wenn diese CVEs besonders weit verbreitet sind, aber einige alte Sicherheitsrisiken sind nicht in der GitHub Advisory DatabaseEnthalten. Wenn es eine bestimmte alte Sicherheitsanfälligkeit gibt, die Sie in die Datenbank aufnehmen müssen, wenden Sie sich an uns über das GitHub-Support-Portal.

          **Überprüfung**: Liegt das Veröffentlichungsdatum für das nicht entschärfte Sicherheitsrisiko in der National Vulnerability Database vor dem Jahr 2017?

Umfang der Empfehlungsdatenbank

Einige Tools von Drittanbietern verwenden nicht kuratierte CVE-Daten, d. h. sie wurden nicht durch eine Person geprüft oder gefiltert. Das bedeutet, dass CVEs mit Fehlern in Bezug auf Kennzeichnung oder Schweregrad oder anderen Qualitätsproblemen häufiger Warnungen auslösen, mehr falsch-positive und weniger nützliche Warnungen liefern.

Da Dependabot zusammengestellte Daten im GitHub Advisory DatabaseBereich verwendet werden, ist die Anzahl der Warnungen möglicherweise niedriger, aber die erhaltenen Warnungen sind korrekt und relevant.

Generierung und Aggregation von Warnungen

Wenn eine Abhängigkeit mehrere Sicherheitsrisiken aufweist, wird für jedes Sicherheitsrisiko eine Warnung auf Empfehlungs- und Manifestebene generiert.

Screenshot der Registerkarte Dependabot mit zwei Alarmen aus demselben Paket mit unterschiedlichen Manifesten.

Legacy Dependabot alerts wurden in einer einzigen aggregierten Warnung mit allen Sicherheitsrisiken für dieselbe Abhängigkeit gruppiert. Wenn Sie zu einem Link zu einer älteren Dependabot Warnung navigieren, werden Sie auf die Registerkarte Dependabot umgeleitet, die gefiltert ist, um Sicherheitslücken für dieses abhängige Paket und Manifest anzuzeigen.

Screenshot der Registerkarte Dependabot mit den gefilterten Alarmen aus der Navigation zu einem alten Dependabot Alarm.

Die Dependabot alerts Anzahl in GitHub zeigt eine Summe für die Anzahl der Warnungen, bei denen es sich um die Anzahl der Sicherheitsrisiken und nicht um die Anzahl der Abhängigkeiten handelt.

          **Überprüfung**: Wenn eine Diskrepanz bei den angezeigten Gesamtsummen vorliegt, stelle sicher, dass du nicht die Anzahl von Warnungen mit der Anzahl von Abhängigkeiten vergleichst. Vergewissere dich auch, dass alle Warnmeldungen und nicht nur eine Teilmenge der gefilterten Warnmeldungen angezeigt werden.

Optionen zum Ignorieren von Abhängigkeiten

Sie können konfigurieren Dependabot , um bestimmte Abhängigkeiten in der Konfigurationsdatei zu ignorieren, wodurch Sicherheits- und Versionsupdates für diese Abhängigkeiten verhindert werden. Wenn du nur Sicherheitsupdates verwenden möchtest, musst du das Standardverhalten mit einer Konfigurationsdatei außer Kraft setzen. Weitere Informationen dazu, wie du das Aktivieren von Versionsaktualisierungen verhindern kannst, findest du unter Konfigurieren von Dependabot-Sicherheitsupdates. Informationen zum Ignorieren von Abhängigkeiten findest du unter Ignorieren bestimmter Abhängigkeiten.

Größenbeschränkungen für GitHub Actions Versionen

Wenn Ihr Repository mehrere GitHub Actions (z. B. in einem Monorepo) enthält, wirkt sich das verwendete Tagformat darauf aus, wie Dependabot Versionen von Aktionen erkennt und aktualisiert.

  • **Trennlinie Bindestrich (-) ** (z. B. @my-action-v0.1.0):

    • Dependabot kann mehrere Aktionen unter einem einzelnen Abhängigkeitseintrag gruppieren oder neue Versionen nicht richtig erkennen. Dies ist darauf zurückzuführen, dass Dependabot zur Unterscheidung zwischen Aktionen auf die Analyse von Tags mit Schrägstrichen zurückgreift.
  • **Trennlinie Schrägstrich (/) ** (z. B. @my-action/v0.1.0):

    •           Dependabot erkennt und aktualisiert jede Aktion unabhängig, da der Schrägstrich eine hierarchische Tag-Struktur erzeugt, die mit der Parsing-Logik von Dependabot übereinstimmt.
      
            **Empfehlung:** Verwende für Monorepos mit mehreren Aktionen das `name/version`-Format (Schrägstrich) für Aktionstags. Dadurch wird sichergestellt, dass Dependabot die Taghierarchie ordnungsgemäß analysiert und Aktionen unabhängig voneinander aktualisiert werden können.
      
  • Beispiel:

    # Recommended: namespaced with slash
    uses: my-org/monorepo/my-action@my-action/v0.1.0
    
    # Not recommended: dash
    uses: my-org/monorepo@my-action-v0.1.0
    

Weiterführende Lektüre