Skip to main content

Informationen zur Lieferkettensicherheit

GitHub hilft Ihnen dabei, Ihre Lieferkette zu sichern – vom Verständnis der Abhängigkeiten in Ihrer Umgebung über das Erkennen von Schwachstellen in diesen Abhängigkeiten bis hin zu deren Behebung.

Informationen zur Lieferkettensicherheit auf GitHub

Beim Entwickeln eines Softwareprojekts nutzen Sie wahrscheinlich andere Software, um Ihre Anwendung zu erstellen und auszuführen, z. B. Open-Source-Bibliotheken, Frameworks oder andere Tools. Diese Ressourcen werden zusammen als „Abhängigkeiten“ bezeichnet, da das ordnungsgemäße Funktionieren Ihres Projekts von ihnen abhängt. Ihr Projekt könnte sich Hunderte dieser Abhängigkeiten aufweisen, die Ihre sogenannte „Lieferkette“ bilden.

Ihre Lieferkette kann ein Sicherheitsproblem darstellen. Wenn bei einer Ihrer Abhängigkeiten ein bekanntes Sicherheitsrisiko oder ein Fehler besteht, können böswillige Akteure diese Schwachstelle ausnutzen, um z. B. bösartigen Code („Schadsoftware“) einzuschleusen, vertrauliche Daten zu stehlen oder eine sonstige Unterbrechung ihres Projekts zu verursachen. Diese Art der Bedrohung wird als „Lieferkettenangriff“ bezeichnet. Anfällige Abhängigkeiten in Ihrer Lieferkette kompromittieren die Sicherheit Ihres eigenen Projekts, und gefährden auch Ihre Benutzer.

Eine der wichtigsten Maßnahmen, die Sie zum Schutz Ihrer Lieferkette ergreifen können, ist das Patchen von anfälligen Abhängigkeiten und Ersetzen von Schadsoftware.

Du fügst Abhängigkeiten direkt deiner Lieferkette hinzu, wenn du sie in einer Manifest- oder Sperrdatei angibst. Abhängigkeiten können aber auch transitiv eingeschlossen werden. Dies bedeutet, dass, auch wenn du eine bestimmte Abhängigkeit nicht angibst, eine deiner Abhängigkeiten diese jedoch verwendet, du ebenfalls von dieser Abhängigkeit abhängig bist.

GitHub bietet eine Reihe von Funktionen, die Ihnen helfen, die Abhängigkeiten in Ihrer Umgebung zu verstehen, Schwachstellen in diesen Abhängigkeiten zu erkennen und diese zu beheben.

Die Lieferkettenfeatures auf GitHub sind: * Abhängigkeitsdiagramm * Abhängigkeitsüberprüfung * Dependabot alerts * Dependabot updates * Dependabot security updates * Dependabot version updates * Unveränderliche Versionen * Artefaktnachweise

Das Abhängigkeitsdiagramm ist von zentraler Bedeutung für die Lieferkettensicherheit. Es zeigt alle Upstreamabhängigkeiten eines Repositorys oder Pakets sowie alle öffentlichen Downstreamelemente, die von diesem Repository bzw. Paket abhängig sind. Das Abhängigkeitsdiagramm deines Repositorys verfolgt und zeigt seine Abhängigkeiten und einige ihrer Eigenschaften an, z. B. Sicherheitsrisikoinformationen.

Die folgenden Lieferkettenfunktionen für GitHub basieren auf den Informationen, die vom Abhängigkeitsgraph bereitgestellt werden.

  • Die Abhängigkeitsüberprüfung verwendet das Abhängigkeitsdiagramm, um Änderungen bei Abhängigkeiten zu erkennen und Ihnen dabei zu helfen, beim Überprüfen von Pull Requests die Auswirkungen dieser Änderungen auf die Sicherheit zu verstehen.
  • Dependabot gleicht die vom Abhängigkeitsdiagramm bereitgestellten Abhängigkeitsdaten mit der in GitHub Advisory Database veröffentlichten Liste bekannter Sicherheitsrisiken ab, überprüft deine Abhängigkeiten und generiert Dependabot alerts, wenn ein potenzielles Sicherheitsrisiko erkannt wurde.
  • Dependabot security updates verwenden das Abhängigkeitsdiagramm und Dependabot alerts, um Sie beim Aktualisieren von Abhängigkeiten mit bekannten Sicherheitsrisiken in Ihrem Repository zu unterstützen.

Dependabot version updates verwenden nicht das Abhängigkeitsdiagramm, sondern die semantische Versionierung von Abhängigkeiten. Dependabot version updates hilft dir dabei, deine Abhängigkeiten auf dem jeweils aktuellen Stand zu halten, auch wenn keine Sicherheitsrisiken vorliegen.

Leitfäden mit bewährten Methoden zur Sicherheit der gesamten Lieferkette, einschließlich des Schutzes von persönlichen Konten, Code und Prozessen, finden Sie unter Sichern einer End-to-End-Lieferkette.

Funktionsübersicht

Was ist das Abhängigkeitsdiagramm?

Zum Generieren des Abhängigkeitsdiagramms überprüft GitHub die expliziten, im Manifest und in Sperrdateien deklarierten Abhängigkeiten eines Repositorys. Wenn das Abhängigkeitsdiagramm aktiviert ist, parst es automatisch alle bekannten Paketmanifestdateien im Repository und verwendet diese, um ein Diagramm mit den Namen und Versionen bekannter Abhängigkeiten zu erstellen.

  • Das Abhängigkeitsdiagramm enthält Informationen zu deinen direkten und transitiven Abhängigkeiten.
  • Das Abhängigkeitsdiagramm wird automatisch aktualisiert, wenn du einen Commit an GitHub pushst, der eine unterstützte Manifest- oder Sperrdatei für den Standardbranch ändert oder hinzufügt, und wenn jemand eine Änderung an das Repository einer deiner Abhängigkeiten pusht.
  • Das Abhängigkeitsdiagramm kann auch Informationen enthalten, die du angibst, während dein Projekt mithilfe von GitHub Actions erstellt wird. Einige Paketökosysteme binden die meisten transitiven Abhängigkeiten zur Buildzeit ein, sodass das Übermitteln von Abhängigkeitsinformationen, während der Build stattfindet, eine umfassendere Ansicht der Lieferkette ermöglicht.
  • Du kannst das Abhängigkeitsdiagramm anzeigen, indem du die Hauptseite des Repositorys in GitHub öffnest und zur Registerkarte Insights navigierst.
  • Wenn du mindestens Lesezugriff auf das Repository hast, kannst du das Abhängigkeitsdiagramm für das Repository als SPDX-kompatible Softwarestückliste (Bill of Materials, SBOM) über die GitHub-Benutzeroberfläche oder die GitHub-REST-API exportieren. Weitere Informationen finden Sie unter Exportieren einer Software-Stückliste (Software Bill of Materials, SBOM) für dein Repository.

Du kannst die Abhängigkeitsübermittlungs-API verwenden, um Abhängigkeiten aus dem Paketmanager oder der Infrastruktur deiner Wahl zu senden, auch wenn das Ökosystem nicht vom dependency graph für die Manifest- oder Lock-Datei-Analyse unterstützt wird. Abhängigkeiten, die mithilfe der Abhängigkeitsübermittlungs-API an ein Projekt übermittelt wurden, zeigen an, welcher Detektor für ihre Übermittlung verwendet wurde und wann sie übermittelt wurden. Weitere Informationen zur Abhängigkeitsübermittlungs-API findest du unter Verwenden der Abhängigkeitsübermittlungs-API.

Weitere Informationen zum Abhängigkeitsdiagramm findest du unter Informationen zum Abhängigkeitsdiagramm.

Was ist die Abhängigkeitsüberprüfung?

Die Abhängigkeitsüberprüfung hilft Reviewer*innen und Mitwirkenden dabei, Änderungen bei Abhängigkeiten und deren Auswirkungen auf die Sicherheit in allen Pull Requests zu verstehen.

  • Die Abhängigkeitsüberprüfung teilt Ihnen mit, welche Abhängigkeiten in einem Pull Request hinzugefügt, entfernt oder aktualisiert wurden. Du kannst das Veröffentlichungsdatum, die Beliebtheit von Abhängigkeiten und Informationen zu Sicherheitsrisiken verwenden, um zu entscheiden, ob du die Änderung annehmen möchtest.
  • Du kannst die Abhängigkeitsüberprüfung für einen Pull Request einsehen, indem du auf der Registerkarte Geänderte Dateien das Rich-Diff anzeigst.

Weitere Informationen zur Abhängigkeitsüberprüfung findest du unter Informationen zur Abhängigkeitsüberprüfung.

Was ist Dependabot?

Dependabot hält deine Abhängigkeiten auf dem neuesten Stand, indem du über Sicherheitsrisiken in deinen Abhängigkeiten informiert wirst und automatisch Pull Requests geöffnet werden, um deine Abhängigkeiten zu aktualisieren. Pull Requests von Dependabot sind automatisch auf die nächste verfügbare sichere Version ausgerichtet, wenn eine Dependabot-Warnung ausgelöst wird, oder auf die neueste Version, wenn ein Release veröffentlicht wird.

Der Begriff „Dependabot“ beschreibt die folgenden Features:

  • Dependabot alerts: Hierbei handelt es sich um eine Benachrichtigung, die auf der Registerkarte Sicherheit für das Repository sowie im Abhängigkeitsdiagramm des Repositorys angezeigt wird. Die Warnung enthält einen Link zur betroffenen Datei im Projekt sowie Informationen zu einer Version, bei der das Problem behoben wurde.
  • Dependabot updates:
    • Dependabot security updates: Hierbei handelt es sich um Updates, die ausgelöst werden, damit Ihre Abhängigkeiten auf eine sichere Version upgegradet werden, sobald eine Warnung ausgelöst wird.
    • Dependabot version updates: Hierbei handelt es sich um geplante Updates, mit denen Ihre Abhängigkeiten auf dem neuesten Stand (aktuelle Version) gehalten werden.

Pull Requests, die von Dependabot geöffnet werden, können Workflows zum Ausführen von Aktionen auslösen. Weitere Informationen findest du unter Automatisieren von Dependabot mit GitHub Actions.

Standardmäßig:

  • Wenn GitHub Actions für das Repository aktiviert sind, werden GitHub für Dependabot updates für GitHub Actions ausgeführt.

  • Wenn GitHub Actions im Repository nicht aktiviert ist, generiert GitHub Dependabot alerts mithilfe der integrierten Dependabot-Anwendung.

Weitere Informationen finden Sie unter Informationen zu Dependabot über GitHub Actions-Runner.

Dependabot security updates kann anfällige Abhängigkeiten in GitHub Actions beheben. Wenn Sicherheitsupdates aktiviert sind, löst Dependabot automatisch einen Pull Request aus, um anfällige GitHub Actions in Workflows auf die gepatchte Mindestversion zu aktualisieren. Weitere Informationen findest du unter Informationen zu Dependabot-Sicherheitsupdates.

Was sind Dependabot-Warnungen?

Dependabot alerts hebt Repositories hervor, die von einer neu entdeckten Sicherheitslücke betroffen sind, basierend auf dem Abhängigkeitsdiagramm und der GitHub Advisory Database, die Hinweise auf bekannte Sicherheitsrisiken enthält.

  • Dependabot führt eine Überprüfung zur Erkennung von unsicheren Abhängigkeiten durch und sendet Dependabot alerts, wenn:
    • Ein neues Sicherheitsrisiko wird GitHub Advisory Database hinzugefügt.
    • Das Abhängigkeitsdiagramm für das Repository sich ändert
  • Dependabot alerts werden auf der Registerkarte Sicherheit für das Repository sowie im Abhängigkeitsdiagramm des Repositorys angezeigt. Die Warnung enthält einen Link zur betroffenen Datei im Projekt sowie Informationen zu einer Version, bei der das Problem behoben wurde.

Weitere Informationen finden Sie unter Informationen zu Dependabot-Warnungen.

Was sind Dependabot-Updates?

Es gibt zwei Arten von Dependabot updates: Dependabot-Sicherheitsupdates und -Versionsupdates. Dependabot generiert zwar in beiden Fällen automatische Pull Requests zum Aktualisieren deiner Abhängigkeiten, es gibt jedoch einige Unterschiede.

Dependabot security updates:

  • Werden durch eine Dependabot-Warnung ausgelöst
  • Aktualisieren Abhängigkeiten auf die niedrigste Version, in der ein bekanntes Sicherheitsrisiko beseitigt wurde
  • Werden für die Ökosysteme unterstützt, die das Abhängigkeitsdiagramm unterstützt
  • Erfordert keine Konfigurationsdatei. Du kannst jedoch eine verwenden, um das Standardverhalten außer Kraft zu setzen.

Dependabot version updates:

  • Erfordert eine Konfigurationsdatei
  • Werden basierend auf einem von Ihnen konfigurierten Zeitplan ausgeführt
  • Aktualisieren Abhängigkeiten auf die aktuellste Version für die Konfiguration
  • Werden für eine andere Gruppe von Ökosystemen unterstützt

Weitere Informationen zu Dependabot updates finden Sie unter Informationen zu Dependabot-Sicherheitsupdates und Informationen zu Updates von Dependabot-Versionen.

Was sind unveränderliche Versionen?

Repositorys können unveränderliche Versionen aktivieren, um zu verhindern, dass die Objekte und das zugehörige Git-Tag einer Version nach der Veröffentlichung geändert werden. Dadurch wird das Risiko von Supply Chain-Angriffen reduziert, indem Angreifer daran gehindert werden, Sicherheitsrisiken in die von Ihnen verbrauchten Versionen einzufügen. Dies bedeutet auch, dass Projekte, die auf bestimmten Versionen basieren, weniger wahrscheinlich fehlschlagen.

Durch das Erstellen einer unveränderlichen Version wird automatisch ein Nachweis für die Version generiert. Sie können diesen Nachweis verwenden, um sicherzustellen, dass die Freigabe und ihre Artefakte den veröffentlichten Informationen entsprechen.

Was sind Artefaktnachweise?

Softwareanbieter können Nachweise für Software, die mit GitHub Actions erstellt wurde, generieren. Bescheinigungen sind kryptografisch signierte Behauptungen, die die Herkunft des Builds (der Quellcode und die Workflow-Ausführung, die verwendet wurden, um ihn zu erstellen) oder die zugehörige Software-Stückliste (SBOM) festlegen.

Sie können die Sicherheit der Lieferkette erhöhen, indem Sie Nachweise für Ihre Abhängigkeiten überprüfen. Obwohl Nachweise keine Sicherheit garantieren, erhalten Sie Informationen darüber, wo und wie Software erstellt wurde, damit Sie sicher sein können, dass Ihre Abhängigkeiten nicht manipuliert wurden. Sie können Bereitstellungen mit einem Tool wie dem Kubernetes-Zulassungscontroller absichern, um zu verhindern, dass nicht getestete Builds bereitgestellt werden.

Wenn Sie GitHub Actions verwenden, um Nachweise für die eigenen Builds Ihrer Organisation zu generieren, werden die erstellten Artefakte automatisch in die linked artifacts page hochgeladen. Mit dieser Plattform können Sie die Speicher- und Bereitstellungsdatensätze aller verknüpften Artefakte anzeigen, sodass Sie den Quellcode und die Workflowausführung finden können, die zum Erstellen eines Artefakts oder Filtern von Sicherheitswarnungen basierend auf dem Bereitstellungskontext verwendet wird.

Verfügbarkeit von Funktionen

Öffentliche Repositorys: * Abhängigkeitsdiagramm: Standardmäßig aktiviert und kann nicht deaktiviert werden * Abhängigkeitsüberprüfung: Standardmäßig aktiviert und kann nicht deaktiviert werden * Dependabot alerts: Nicht standardmäßig aktiviert. GitHub erkennt unsichere Abhängigkeiten und zeigt Informationen im Abhängigkeitsdiagramm an, generiert aber nicht standardmäßig Dependabot alerts. Repositorybesitzer*innen oder Personen mit Administratorzugriff können Dependabot alerts aktivieren. Zudem kannst du Dependabot-Warnungen für alle Repositorys aktivieren oder deaktivieren, die deinem Benutzerkonto oder deiner Organisation gehören. Weitere Informationen findest du unter Verwalten von Sicherheits- und Analysefeatures oder Verwalten von Sicherheits- und Analyseeinstellungen für deine Organisation. * Artefaktnachweise: Verfügbar in allen öffentlichen Repositories, aber Sie müssen in Ihren Build-Workflows explizit Nachweise generieren. Weitere Informationen findest du unter Verwenden von Artefaktnachweisen zur Ermittlung der Herkunft von Builds.

Private Repositorys: * Abhängigkeitsdiagramm: Nicht standardmäßig nicht aktiviert. Das Feature kann von Repositoryadministratorinnen aktiviert werden. Weitere Informationen finden Sie unter Untersuchen der Abhängigkeiten eines Repositorys. * Abhängigkeitsüberprüfung: verfügbar in privaten Repositorys im Besitz von Organisationen, die GitHub Team oder GitHub Enterprise Cloud verwenden und über eine Lizenz für GitHub Code Security or GitHub Advanced Security verfügen Weitere Informationen findest du unter Informationen zu GitHub Advanced Security und Untersuchen der Abhängigkeiten eines Repositorys. * Dependabot alerts: Nicht standardmäßig aktiviert. Besitzerinnen privater Repositorys oder Personen mit Administratorzugriff können Dependabot alerts aktivieren, indem sie das Abhängigkeitsdiagramm und Dependabot alerts für ihre Repositorys aktivieren. Zudem kannst du Dependabot-Warnungen für alle Repositorys aktivieren oder deaktivieren, die deinem Benutzerkonto oder deiner Organisation gehören. Weitere Informationen findest du unter Verwalten von Sicherheits- und Analysefeatures oder Verwalten von Sicherheits- und Analyseeinstellungen für deine Organisation. * Artefaktnachweise: Nur in privaten Repositorys auf GitHub Enterprise Cloud verfügbar.

Alle Repositorytypen: * Dependabot security updates: Nicht standardmäßig aktiviert. Du kannst Dependabot security updates für jedes Repository aktivieren, das Dependabot alerts und das Abhängigkeitsdiagramm verwendet. Weitere Informationen zum Aktivieren von Sicherheitsupdates finden Sie unter Konfigurieren von Dependabot-Sicherheitsupdates. * Dependabot version updates: Nicht standardmäßig aktiviert. Personen mit Schreibberechtigungen für ein Repository können Dependabot version updates aktivieren. Weitere Informationen zum Aktivieren von Versionsupdates finden Sie unter Konfigurieren von Dependabot-Versionsupdates. * Unveränderliche Versionen:* Standardmäßig nicht aktiviert. Sie können die Unveränderlichkeit der Freigabe für ein Repository oder eine Organisation aktivieren. Weitere Informationen findest du unter Verhindern von Änderungen an deinen Releases.