
Teilen Sie:
Yonatan war an einigen großartigen Projekten in der Akademie und in der Industrie beteiligt - von C/C++ über Matlab bis hin zu PHP und Javascript. Früher war er CTO bei Webiks und Softwarearchitekt bei WalkMe. Derzeit ist er Softwarearchitekt bei Vonage und egghead-Dozent.
So entfernen Sie ein geheimes Token aus Ihrem Git-Verlauf
Einführung
In diesem Artikel erfahren Sie, wie Sie aus der gesamten Historie Ihres Git-Repositorys mit BFGeinem leistungsstarken Bereinigungstool, entfernen können. Außerdem lernen Sie die Sicherheitsrisiken von Committed Secrets kennen und beherrschen den schrittweisen Prozess zur Bereinigung Ihres Code-Repositorys und zum Schutz der digitalen Ressourcen Ihres Unternehmens. Fangen wir an!
Die unerwartete Sicherheitswarnung
Stellen Sie sich Folgendes vor: Sie sind Entwickler und stecken mitten in einem wichtigen Projekt, als plötzlich ein JIRA-Ticket in Ihrem Posteingang landet. Die Betreffzeile jagt Ihnen einen Schauer über den Rücken: "Kritisches Sicherheitsproblem - Offengelegtes NPM-Token in der Repository-Historie".
Der automatische Sicherheitsscan hat etwas Alarmierendes aufgedeckt - ein Authentifizierungs-Token, das vor Jahren versehentlich in das Repository übertragen wurde, vergraben in Commits von vor 4, 7 und 8 Jahren. Das mag wie eine alte Geschichte erscheinen, aber in der Welt der Cybersicherheit können alte Geheimnisse tickende Zeitbomben sein. Und Ihr CISO kann sehr hartnäckig darauf bestehen, solche Probleme zu lösen (mit Recht...).
Ok, Sie können aufhören, sich das vorzustellen, denn das ist uns bei Vonage passiert. Zum Glück können Sie aus unseren Erfahrungen lernen.
Die versteckten Risiken von freiliegenden Token
Ein ungeschütztes Authentifizierungs-Token ist mehr als nur ein kleines Versehen. Es stellt eine erhebliche Sicherheitsschwachstelle dar, die möglicherweise:
Unbefugten Zugang zu privaten Paketregistern gewähren
Sensible Unternehmensinfrastruktur offenlegen
Bieten einen potenziellen Einstiegspunkt für böswillige Akteure
Risiko geistiges Eigentum des Unternehmens
Potenzielle Verletzung von Compliance-Anforderungen
Der Reputationsschaden einer Sicherheitsverletzung kann die momentane Bequemlichkeit eines eilig begangenen Tokens bei weitem aufwiegen.
Das erste, was Sie in einem solchen Fall tun sollten, ist, den/die betroffenen geheimen Schlüssel zu "drehen". Man löscht sie einfach und erstellt neue. Aber das Risiko endet hier nicht, denn wie jemand in einer JavaScript-Gruppendiskussion sagte, könnten alte, veraltete Schlüssel einen Hinweis auf den Algorithmus des Schlüsselgenerators selbst enthalten. Ich bin kein Cybersicherheitsexperte (nicht einmal annähernd), also verlasse ich mich auf die Aussagen der Experten. Wie werden wir dann den offengelegten Schlüssel im Repo los?
BFG eingeben: Ihr Git History Cleanup BFF
Die Lösung? BFG (Big Fast Git) ist ein leistungsfähiges Tool, mit dem die Historie von Git-Repositorys schnell und effizient bereinigt werden kann. Hier eine schrittweise Anleitung zur Token-Entfernung:
Sagen Sie allen, die an dem Repository arbeiten, dass sie ihre Arbeit für ein paar Minuten zurückhalten sollen, bis Sie Ihre Änderungen veröffentlichen.
BFG herunterladen und kopieren Sie es in den entsprechenden Ordner.
Klonen Sie das Repository mit einem Mirror:
git clone --mirror https://github.com/your-name/your-repo.gitKopierenIch schlage vor, den Vorgang zweimal in zwei verschiedenen Ordnern durchzuführen, damit Sie ein Backup Ihres "alten" Repositorys haben, falls etwas schief geht.
Erstellen Sie eine Datei tokens.txt mit der Ersetzungssyntax:
old_token1==>PLACE_HOLDER1 old_token2==>PLACE_HOLDER2 ...KopierenDadurch wird BFG angewiesen, alle Instanzen der alten Token durch ihre Platzhalter zu ersetzen.
Ein Beispiel hierfür wäre:
ab23234-89723c-aa7b7c==>${NPM_TOKEN}KopierenFühren Sie BFG mit der Ersatzdatei aus (stellen Sie sicher, dass Sie sich im übergeordneten Ordner des Repositorys befinden):
java -jar bfg-1.14.0.jar --replace-text tokens.txt your-repo.git --no-blob-protectionKopierenBereinigen Sie das Repository:
cd your-repo.git git reflog expire --expire=now --all && git gc --prune=now --aggressiveKopierenPrüfen Sie, ob das Token ersetzt wurde, indem Sie den lokalen Mirror klonen und ihn "greppen":
cd .. && git clone your-repo.git && cd your-repo && git grep -n "REPLACE _WITH_YOUR_TOKENKopierenWenn dies 0 Ergebnisse liefert, bedeutet dies, dass es funktioniert hat.
Forcieren Sie die Änderungen:
cd your-repo.git git push --mirrorKopierenSagen Sie Ihren Teammitgliedern, sie sollen die Änderungen abrufen und übernehmen:
git fetch git reset --hard origin/mainKopieren
Das war's. Ihr Repository ist jetzt sauber. Von nun an kann dasselbe Tool, das Sie vor den Token gewarnt hat, während eines PR-Prozesses Alarm schlagen, bevor sich das Token auf den Hauptzweig "ausbreitet". Stellen Sie sicher, dass es das tut 😉
Profi-Tipps für das Token-Management
Übertragen Sie Token niemals direkt an Repositories
Umgebungsvariablen oder sichere Tools zur Verwaltung von Geheimnissen verwenden
Implementierung von Pre-Commit-Hooks, um versehentliche Token-Commits zu verhindern
Regelmäßiges Audit des Repository-Verlaufs
Wechseln Sie die Token regelmäßig, insbesondere wenn Sie eine Exposition vermuten.
Abschließende Überlegungen
In einer Zeit zunehmender Cybersecurity-Bedrohungen ist eine proaktive Repository-Verwaltung nicht nur eine gute Praxis, sondern eine Notwendigkeit. Tools wie BFG bieten Entwicklern leistungsstarke Mechanismen, um Fehler aus der Vergangenheit zu bereinigen und die Integrität ihrer Code-Repositories zu wahren.
Während wir uns auf den Ersatz von Spielsteinen konzentriert haben, ist BFG ein vielseitiges Werkzeug, das in der Lage ist:
Große Dateien aus der Repository-Historie entfernen
Reinigung sensibler Informationen
Verkleinerung des Repositorys
Bereinigung von Übertragungen vor dem Open-Sourcing von Projekten
Wenn Sie sich an die Gründe halten, die für die Verwendung konventionelle Commitsverwenden sollten, kann BFG es Ihnen ermöglichen, Ihre alten Commits mit einem aussagekräftigen Versions- und Changelog-Text aufzupeppen.
Denken Sie daran, dass in der Software-Entwicklung dank Tools wie BFG nicht immer alles, was übertragen wurde, für immer ist.
Lassen Sie uns wissen, welche anderen Git-Probleme Sie auf unserem Vonage Community Slack oder senden Sie uns eine Nachricht auf X, früher bekannt als Twitter.
Teilen Sie:
Yonatan war an einigen großartigen Projekten in der Akademie und in der Industrie beteiligt - von C/C++ über Matlab bis hin zu PHP und Javascript. Früher war er CTO bei Webiks und Softwarearchitekt bei WalkMe. Derzeit ist er Softwarearchitekt bei Vonage und egghead-Dozent.