Git-Experte findet versteckte Geheimnisse in gelöschten Commits und verdient 25.000 USD durch Bug-Bounties.
Gastbeitrag: Wie ich alle „Fehlerticks“ auf GitHub nach verlorenen Geheimnissen durchsucht habe Zusammenfassung: Das GitHub-Archiv protokolliert jeden öffentlichen Commit, auch die, die Entwickler zu löschen versuchen. Durch eine Force-Push können Fehler wie versehentlich veröffentlichte Zugangsdaten durch das Überschreiben der Git-Historie verdeckt werden. GitHub hält jedoch diese nicht mehr verlinkten Commits, soweit wir es beurteilen können, für immer. Im Archiv erscheinen sie als „Zero-Commit“-PushEvents. Ich habe seit 2020 jede Force-Push-Ereignis überprüft und Geheimnisse im Wert von 25.000 US-Dollar an Bug-Bounties gefunden. Zusammen mit Truffle Security veröffentlichen wir ein neues Open-Source-Tool, um solche verborgenen Commits in eigenen GitHub-Organisationen zu scannen (probieren Sie es hier aus). Mein Name ist Sharon Brizinov, und ich fokussiere mich normalerweise auf die Forschung zu Schwachstellen und Ausnutzungen in OT/IoT-Geräten. Gelegentlich beschäftige ich mich jedoch auch mit Bug-Bounty-Jagden. Mein kürzlich veröffentlichter Blog-Beitrag über das Aufspüren von Geheimnissen in nicht mehr verlinkten Blobs innerhalb von GitHub-Repositories hat lebhafte Diskussionen ausgelöst. Nach Gesprächen mit Dylan, dem CEO von Truffle Security, kam ich auf die Idee, 100% aller gelöschten Commits im großen Maßstab zu identifizieren. Diese Forschung konzentriert sich auf Geheimnisse, die in gelöschten GitHub-Commits versteckt sind. Wenn Sie versehentlich ein Geheimnis in Ihr Repository commiten und pushen, wäre der nächste Schritt normalerweise, den HEAD auf den vorherigen Commit zurückzusetzen und die Änderungen mit einem Force-Push zu übertragen. Dies entfernt den aktuellen Commit und macht ihn nicht mehr referenzierbar – im Prinzip löscht man ihn. Wie Neodyme und TruffleHog jedoch entdeckten, vergisst GitHub nie einen Commit. Kennt man den vollständigen Commit-Hash, kann man den angeblich gelöschten Inhalt immer noch aufrufen. Es reicht sogar, die ersten vier Hex-Ziffern zu kennen (16^4 = 65.536). Um alle Commits zu identifizieren, ohne die Hashes erraten zu müssen, nutzt man die GitHub Event API. Diese API ermöglicht es, Informationen über Ereignisse innerhalb von GitHub abzurufen. Ereignisse repräsentieren verschiedene Aktivitäten, wie z.B. Commits, Pull-Requests, Forks und mehr. Ein PushEvent mit null Commits deutet auf einen Force-Push hin, der den Branch zurücksetzt, ohne neue Commits hinzuzufügen. Ich nenne dies ein „Oops Commit“ oder ein „Push-Event Zero-Commit“. Das GH Archive-Projekt, entwickelt von Ilya Grigorik, archiviert systematisch den GitHub-Ereignisstream. Die gesamte Archivdatenbank ist als Google Big Query-Datensatz verfügbar. Mit Hilfe des GH Archive-Datensatzes können wir PushEvent-Daten mit null Commits scannen, die entsprechenden Commits abrufen und diese mit TruffleHog auf Geheimnisse untersuchen. Für diese Forschung habe ich eine angepasste Version unseres Open-Source-Tools verwendet, um alle „Oops Commits“ auf GitHub seit 2020 zu scannen. Das Ergebnis war erstaunlich: Tausende aktive Geheimnisse wurden gefunden. Um die interessantesten Geheimnisse zu identifizieren, folgte ich einer dreistufigen Strategie: Manuelle Suche, ein intuitives Triagen-Tool und KI. Während der manuellen Suche filterte ich Commits von Autoren mit generischen E-Mail-Adressen heraus und konzentrierte mich auf Commits von Autoren mit Unternehmens-E-Mails. Die am häufigsten gefundenen Geheimnisse waren MongoDB-Zugangsdaten, GitHub PAT-Tokens und AWS-Anmeldeinformationen. Letztere erzeugten die höchsten Belohnungen! Um den Prozess zu skalieren, baute ich eine Plattform zur manuellen Überprüfung der Geheimnisse, die durch Vercel v0 entwickelt wurde. Diese Plattform erhielt eine .zip-Datei mit JSON-Dateien, die vom Scanner erstellt wurden, und präsentierte sie in einer einfach zu benutzenden Tabelle. Ich fügte auch Grafiken und Tortendiagramme hinzu, um schnell Erkenntnisse zu gewinnen. Zum Beispiel war klar, dass .env-Dateien besondere Schutzbedarf haben. Mit Hilfe eines Freundes, Moti Harmats, begann ich an einem KI-basierten Agenten zu arbeiten, der automatisch grundlegende Informationen über die verknüpften Konten extrahiert und potenziell wertvolle Geheimnisse identifiziert. Dieser Agent sollte in der Lage sein, zu bestimmen, welche Geheimnisse für Bug-Bounties oder im Sinne des Schutzes von Daten relevant sind. Fallbeispiel: Verhindern eines massiven Supply-Chain-Angriffs Eines der gefundenen Geheimnisse war ein GitHub Personal Access Token (PAT) eines Entwicklers, der versehentlich seine versteckten Konfigurationsdateien (dot files) commitete. Die Analyse des Tokens ergab, dass er Admin-Zugriff auf alle Istio-Repositories hatte. Istio ist ein Open-Source-Service-Mesh, das eine transparente und sprachunabhängige Möglichkeit bietet, Anwendungsnetwork-Funktionen flexibel und einfach zu automatisieren. Es verwaltet die Kommunikation zwischen Microservices in verteilten Anwendungen und bietet Funktionen wie Traffic-Management, Sicherheit und Beobachtbarkeit, ohne dass Änderungen am Anwendungscode erforderlich sind. Das Hauptprojekt von Istio hat 36.000 Sterne und 8.000 Forks. Istio wird von großen Unternehmen wie Google, IBM und Red Hat genutzt. Mit Admin-Zugriff auf alle Istio-Repositories konnte ich Umgebungsvariablen lesen, Pipelines ändern, Code pushen, neue Releases erstellen oder sogar das gesamte Projekt löschen. Der potenzielle Schaden durch einen Massen-Supply-Chain-Angriff war beängstigend. Zum Glück hat das Istio-Team eine gut gepflegte Berichtsseite und zog die GitHub-PATs sofort nach der Meldung des Problems. Vielen Dank! Fazit Dies war ein sehr spannendes Projekt. Ich kombinierte bekannte Entdeckungen und schuf eine zuverlässige Automatisierung, die Tausende aktive Geheimnisse fand, manche davon waren sogar jahrelang versteckt. Ich hatte die Gelegenheit, ein intuitives Geheimnisjagd-Tool zu entwickeln, das es mir ermöglichte, in einem riesigen Datensatz die wichtigsten Informationen zu finden und etwa 25.000 US-Dollar an Bug-Bounties zu verdienen. Die allgemeine Annahme, dass der Löschen eines Commits sicher ist, muss revidiert werden. Sobald ein Geheimnis commited wurde, sollte es als kompromittiert betrachtet und sofort widerrufen werden. Dies gilt für Git-Blobs, Git-Commits und alles andere, das online veröffentlicht wird. Branchenexperten bewerten dieses Projekt als sehr wichtig, da es zeigt, wie leicht es ist, sensible Informationen in gelöschten Commits zu finden. Truffle Security ist ein führender Anbieter von Sicherheitslösungen für Softwareentwicklung. Ihre Tools und Forschungen helfen Unternehmen, ihre Sicherheitslücken zu schließen und potenzielle Angriffe zu verhindern.