https://a.storyblok.com/f/270183/1368x665/f7d37747ed/25feb_dev-blog_secret-token-git-history.png

So entfernen Sie ein geheimes Token aus Ihrem Git-Verlauf

Zuletzt aktualisiert am February 11, 2025

Lesedauer: 3 Minuten

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:

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

  2. BFG herunterladen und kopieren Sie es in den entsprechenden Ordner.

  3. Klonen Sie das Repository mit einem Mirror:

    git clone --mirror https://github.com/your-name/your-repo.git

    Ich schlage vor, den Vorgang zweimal in zwei verschiedenen Ordnern durchzuführen, damit Sie ein Backup Ihres "alten" Repositorys haben, falls etwas schief geht.

  4. Erstellen Sie eine Datei tokens.txt mit der Ersetzungssyntax:

    old_token1==>PLACE_HOLDER1
    old_token2==>PLACE_HOLDER2
    ...

    Dadurch wird BFG angewiesen, alle Instanzen der alten Token durch ihre Platzhalter zu ersetzen.

    Ein Beispiel hierfür wäre:

    ab23234-89723c-aa7b7c==>${NPM_TOKEN}
    
  5. Fü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-protection
  6. Bereinigen Sie das Repository:

    cd your-repo.git
    git reflog expire --expire=now --all && git gc --prune=now --aggressive
  7. Prü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_TOKEN

    Wenn dies 0 Ergebnisse liefert, bedeutet dies, dass es funktioniert hat.

  8. Forcieren Sie die Änderungen:

    cd your-repo.git
    git push --mirror

  9. Sagen Sie Ihren Teammitgliedern, sie sollen die Änderungen abrufen und übernehmen:

    git fetch
    git reset --hard origin/main 

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:

https://a.storyblok.com/f/270183/400x400/7bf76cb05c/yonatankra.png
Yonatan KraVonage Software Architekt

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.