Parallele Forschung zu GitHub-Schwachstellen

Alle Beiträge

Letzten Monat bin ich darauf gestoßen Dieser Artikel von Dark Reading. Es kam mir sehr bekannt vor. Es dauerte nicht lange, bis mir klar wurde, dass die im Artikel besprochene GitHub-Cross-Workflow-Artefakt-Poisoning-Schwachstelle eine bemerkenswerte Ähnlichkeit mit dem GitHub-Cross-Workflow aufwies Cache-Vergiftung Sicherheitslücke, über die wir im März 2022 berichtet haben. 

GitHub-Workflows – Eine Schlüsselkomponente der GitHub CI/CD-Pipelines

GitHub-Workflows werden verwendet, um die spezifischen Aktionen zu definieren, die als Teil der CI/CD-Pipeline ausgeführt werden sollen. Dabei handelt es sich um automatisierte Prozesse, die durch bestimmte Ereignisse in einem GitHub-Repository ausgelöst werden können. Solche Ereignisse sind beispielsweise, wenn Code in das Repository gepusht wird, wenn ein Pull-Request geöffnet oder geschlossen wird oder wenn ein neues Release veröffentlicht wird. 

 

Workflows werden mithilfe einer YAML-Datei erstellt, die die Aktionen angibt, die ausgeführt werden sollen, wenn der Workflow ausgelöst wird. Solche Aktionen können vom Entwickler geschrieben oder vollständig vom GitHub-Marktplatz übernommen werden, wo mehr als 10,000 vorgefertigte Aktionen heruntergeladen und verwendet werden können.

 

Workflows bestehen aus einem oder mehreren Jobs, die als eine Reihe von Schritten definiert sind. Bei den Schritten kann es sich um unterschiedliche Aktionen handeln, beispielsweise um das Ausführen von Tests, das Bereitstellen von Code oder das Veröffentlichen eines Pakets.

GitHub-Workflows sind ein leistungsstarkes Tool, das Entwicklern dabei helfen kann, ihre Workflows zu automatisieren und zu optimieren, Zeit und Aufwand zu sparen und die Zuverlässigkeit ihres Softwareentwicklungsprozesses zu verbessern. Sie sind jedoch nicht ohne eingebaute Mängel. 

 

Bei der Verwendung von GitHub-Workflows können mehrere potenzielle Sicherheitsprobleme auftreten. Hier sind einige häufige:

 

  1. Unautorisierter Zugriff: Arbeitsabläufe, die nicht ordnungsgemäß konfiguriert oder gesichert sind, könnten möglicherweise von nicht autorisierten Benutzern aufgerufen und ausgelöst werden. Dies könnte es ihnen ermöglichen, beliebigen Code auszuführen oder andere nicht autorisierte Aktionen durchzuführen.
  2. Geheimnisse werden durchgesickert: Workflows erfordern häufig die Verwendung von Geheimnissen wie API-Schlüsseln oder Passwörtern, um auf externe Ressourcen zuzugreifen oder bestimmte Aktionen auszuführen. Wenn diese Geheimnisse nicht ordnungsgemäß geschützt werden, könnten sie möglicherweise an die Öffentlichkeit gelangen, was zu Sicherheitsverletzungen führen könnte.
  3. Unsichere Abhängigkeits: Workflows, die auf externen Bibliotheken oder Abhängigkeiten basieren, könnten potenziell anfällig für Angriffe sein, wenn diese Abhängigkeiten nicht sicher sind. Es ist wichtig, Abhängigkeiten regelmäßig zu überprüfen und zu aktualisieren, um sicherzustellen, dass sie sicher sind.
  4. Mangelnde Eingabevalidierung und -bereinigung: Workflows, die Eingaben nicht ordnungsgemäß validieren, könnten möglicherweise dazu ausgenutzt werden, beliebigen Code auszuführen oder andere nicht autorisierte Aktionen durchzuführen.

 

Werfen wir einen genaueren Blick auf die beiden Workflow-übergreifenden Schwachstellen, die in den oben genannten Artikeln besprochen wurden.

Cross-Workflow-Artefaktvergiftung

GitHub-Workflow-Artefakte sind die Produkte der in den CI/CD-Pipelines geleisteten Arbeit. Normalerweise erhält jeder Workflow seinen eigenen Bucket zum Speichern solcher Artefakte, aber manchmal müssen Workflows auf Artefakte zugreifen, die von anderen Workflows erstellt wurden. GitHub erlaubt Workflows nicht, direkt auf Speicher/Artefakte aus verschiedenen Workflows zuzugreifen. Um dies zu umgehen, gibt es eine von GitHub genehmigte API, die das Herunterladen von Artefakten basierend auf grundlegender Filterung ermöglicht. Das Problem besteht darin, dass die API nicht zwischen Artefakten unterscheidet, die von geforkten Repositorys hochgeladen wurden, und solchen, die von den Basis-Repositorys hochgeladen wurden. Das bedeutet, dass das Hochladen potenziell vergifteter Artefakte, die von gespaltenen Repositories erstellt wurden, eine echte und gegenwärtige Gefahr darstellt. 

 

Um dieses Problem zu beheben, hat GitHub damit begonnen, beim Herunterladen von Artefakten zusätzliche Informationen sowie Artefaktmetadaten bereitzustellen. Diese Informationen sollen dem Autor dabei helfen, sicherzustellen, dass er das richtige Artefakt herunterlädt. Das grundlegende Problem der Cross-Workflow-Artefakte wird von GitHub derzeit nicht als Problem angesehen. Weitere Informationen zu diesem Problem finden Sie unter Artikel erwähnt.

Cross-Workflow-Cache-Poisoning

GitHub ermöglicht das Zwischenspeichern von Artefakten und Paketen, um die CI/CD-Pipeline zu beschleunigen. Anstatt benötigte Artefakte und Pakete für jeden Workflow, in dem sie möglicherweise benötigt werden, immer wieder herunterzuladen, können sie zwischengespeichert und in verschiedenen Workflows verwendet werden. 

 

Da der Cache von allen Workflows gemeinsam genutzt wird, genügt ein einziger Verstoß in einem Workflow, der den Cache mit der Berechtigung zum Ändern verwendet, und dieser Cache kann für alle folgenden Workflow-Verwendungen verseucht werden. Da der Cache nur dann aktualisiert wird, wenn ein neues Artefakt oder Paket heruntergeladen werden muss, bedeutet dies, dass ein einzelner vergifteter Cache möglicherweise lange Zeit aktiv ist und sich auf unzählige Iterationen von Software-Builds auswirkt, die in dieser Pipeline ausgeführt werden.

 

GitHub betrachtet das Problem eines potenziell vergifteten Caches nicht als Problem. Der Cache ist eine nützliche Funktion und seine Möglichkeit, von Workflows gemeinsam genutzt zu werden, wird derzeit weder als Fehler noch als echtes Sicherheitsproblem angesehen. Weitere Informationen zu diesem Problem finden Sie unter Artikel erwähnt.

Bild einer GitHub-Cache-Vergiftung

Andere weniger bekannte GitHub-Schwachstellen und wie man sich dagegen verteidigt

GitHub ist eines der beliebtesten Source Control Management (SCM)-Systeme der Welt. Daher wird es auch häufig zum Erstellen und Verteilen von Software mithilfe seiner CI/CD-Pipeline, Aktionen und Workflows verwendet.

Man muss bedenken, dass GitHub geschaffen wurde, um die gemeinsame Nutzung von Code und die gemeinsame Entwicklung zu erleichtern. Es wurde ursprünglich für Open-Source-Entwickler entwickelt und später wurden die Funktionen für Unternehmens- und Organisationskonten hinzugefügt. Im Kern war die Sicherheit kein großes Anliegen des Systems. Die Tatsache, dass Sie eine tun müssen besondere Einrichtung Wenn Sie auf GitHub Sicherheitsfunktionen für Ihr Konto aktivieren, bedeutet dies, dass die Vorstellung, dass Sie durch die Verwendung von Git grundsätzlich sicherer sind, nur eine Illusion ist.   

Später in diesem Monat wird Scribe Gastgeber sein Tzachi Zornstain, Head of Software Supply Chain bei Checkmarx, in einem Webinar, um über einige solcher potenziellen Fallstricke in der Software Supply Chain in GitHub zu sprechen.  

Wenn Sie mehr über diese weniger bekannte Klasse von Schwachstellen und darüber erfahren möchten, wie Sie sich dagegen wehren können, hören Sie sich dies auf Abruf an Webinar.

 

banner

Diese Inhalte werden Ihnen von Scribe Security zur Verfügung gestellt, einem führenden Anbieter von End-to-End-Sicherheitslösungen für die Software-Lieferkette, der modernste Sicherheit für Code-Artefakte sowie Code-Entwicklungs- und Bereitstellungsprozesse in der gesamten Software-Lieferkette bietet. Weitere Informationen.