Skip to main content

Problembehandlung bei der Erkennung von anfälligen Abhängigkeiten

Wenn die Abhängigkeitsinformationen, die vom GitHub Enterprise Cloud gemeldet werden, nicht deinen Erwartungen entsprechen, kannst du einige Punkte in Betracht ziehen und verschiedene Aspekte überprüfen.

Die Ergebnisse der von GitHub Enterprise Cloud 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.

Warum scheinen einige Abhängigkeiten zu fehlen?

GitHub generiert und zeigt Abhängigkeitsdaten anders an als andere Tools. 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 zu identifizieren und Malware. Es handelt sich um eine kostenlose, kuratierte Datenbank mit Sicherheitsempfehlungen für gängige Paketökosysteme auf GitHub. Sie enthält sowohl Daten, die direkt an GitHub von GitHub Security Advisories gemeldet werden, als auch Daten aus offiziellen Feeds und Communityquellen. Diese Daten werden von GitHub überprüft und kuratiert, um sicherzustellen, dass keine falschen oder nicht handlungsrelevanten Informationen an die Entwicklercommunity weitergegeben werden. Weitere Informationen findest du 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 unter Fehler beim Abhängigkeitsdiagramm beheben.

  • Dependabot scannt jeden Push in den Standardbranch, 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 zusammengefasst, anstatt eine Meldung pro Hinweis zu erstellen. Weitere Informationen findest du unter Informationen zu Dependabot-Warnungen.

  • Dependabot security updates werden ausgelöst, wenn Sie in Ihrem Repository eine Meldung über eine anfällige Abhängigkeit empfangen. Sofern möglich, erstellt Dependabot einen Pull Request in deinem Repository, um die anfällige Abhängigkeit auf die niedrigste sichere Version zu aktualisieren, die zur Vermeidung der Sicherheitslücke benötigt wird. Weitere Informationen finden Sie unter Informationen zu Dependabot-Sicherheitsupdates und unter Problembehandlung bei Dependabot-Fehlern.

    Dependabot überprüft die Repositorys nicht nach einem bestimmten Zeitplan, sondern nur bei Änderungen. Eine Überprüfung wird zum Beispiel ausgelöst, wenn eine neue Abhängigkeit hinzugefügt wird (GitHub überprüft dies bei jedem Push) oder wenn ein neuer Hinweis zur Datenbank synchronisiert wird. Weitere Informationen findest du unter Informationen zu Dependabot-Warnungen.

Beziehen sich Dependabot alerts nur auf unsichere Abhängigkeiten in Manifesten und Sperrdateien?

Dependabot alerts informieren dich über Abhängigkeiten, die du aktualisieren solltest, einschließlich transitiver Abhängigkeiten, bei denen die Version aus einem Manifest oder einer Sperrdatei ermittelt werden kann. Dependabot security updates schlägt nur dann eine Änderung vor, wenn Dependabot die Abhängigkeit direkt „korrigieren“ kann, d. h. in diesen Fällen:

  • 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?

Warum erhalte ich für manche Ökosysteme keine Dependabot alerts?

Dependabot alerts werden für mehrere Ökosysteme unterstützt, in denen wir hochwertige, handlungsrelevante Daten bereitstellen können. Kuratierte Hinweise in der GitHub Advisory Database, im Abhängigkeitsdiagramm, Dependabot-Sicherheitsupdates, und Dependabot alerts werden für verschiedene Ökosysteme bereitgestellt, darunter Maven in Java, npm und Yarn in JavaScript, NuGet in .NET, pip in Python, RubyGems in Ruby und Composer in PHP. Im Laufe der Zeit werden wir Unterstützung für weitere Ökosysteme hinzufügen. Eine Übersicht über die von uns unterstützten Paketökosysteme findest du unter Informationen zum Abhängigkeitsdiagramm.

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 zusammengestellt. Weitere Informationen findest du unter Durchsuchen von Sicherheitsempfehlungen in der GitHub Advisory Database.

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

Generiert Dependabot Warnungen für Sicherheitsrisiken, die schon seit vielen Jahren bekannt sind?

Die GitHub Advisory Database wurde im November 2019 eingeführt und zunächst mit Hinweisen zu Sicherheitsrisiken für die unterstützten Ökosysteme (ab 2017) aufgefüllt. Beim Hinzufügen von CVEs in die Datenbank werden vorrangig neuere CVEs und CVEs aufgenommen, die neuere Softwareversionen betreffen.

Es sind einige Informationen über ältere Sicherheitsrisiken verfügbar, vor allem, wenn diese CVEs stark verbreitet sind. Allerdings sind einige alte Sicherheitsrisiken nicht in der GitHub Advisory Database enthalten. Wenn du möchtest, dass ein bestimmtes altes Sicherheitsrisiko in die Datenbank aufgenommen wird, kontaktiere den 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?

Warum verwendet GitHub Advisory Database eine Teilmenge der veröffentlichten Sicherheitsrisikodaten?

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 kuratierte Daten in der GitHub Advisory Database verwendet, ist der Umfang der Warnungen vielleicht geringer, aber die Warnungen, die du erhältst, sind genau und relevant.

Wird für jede unsichere Abhängigkeit eine eigene Warnung generiert?

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

Screenshot der Registerkarte „Dependabot alerts“ mit zwei Warnungen aus demselben Paket mit unterschiedlichen Manifesten.

Die alten Dependabot alerts wurden in einer einzigen aggregierten Meldung mit allen Sicherheitsrisiken für dieselbe Abhängigkeit zusammengefasst. Wenn du auf einen Link zu einer älteren Dependabot-Warnung klickst, wirst du auf die Registerkarte „Dependabot alerts“ umgeleitet, die gefiltert wird, um Sicherheitsrisiken für dieses abhängige Paket und Manifest anzuzeigen.

Screenshot der Registerkarte „Dependabot alerts“ mit gefilterten Warnungen beim Navigieren zu einer alten Dependabot-Warnung.

Die Anzahl von Dependabot alerts in GitHub zeigt eine Gesamtsumme der Warnungen an. Diese gibt die Anzahl von Sicherheitsrisiken an, nicht die Anzahl von Abhängigkeiten.

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

Kann Dependabot bestimmte Abhängigkeiten ignorieren?

Du kannst Dependabot so konfigurieren, dass bestimmte Abhängigkeiten in der Konfigurationsdatei ignoriert werden, 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 Konfigurationsoptionen für die Datei dependabot.yml.

Weiterführende Themen