Back

Scannen Sie Ihr Repository nach Secrets mit TruffleHog

Scannen Sie Ihr Repository nach Secrets mit TruffleHog

Haben Sie versehentlich einen API-Schlüssel in Ihr Repository committed? Sie sind nicht allein. Tausende von Zugangsdaten gelangen täglich über Git an die Öffentlichkeit – oft verbleiben sie in der Commit-Historie, lange nachdem Entwickler glauben, sie gelöscht zu haben. TruffleHog Secret Scanning bietet eine unkomplizierte Möglichkeit, exponierte API-Schlüssel in Repositories zu erkennen, bevor sie zu Sicherheitsvorfällen werden.

Dieser Artikel behandelt die Funktionsweise von TruffleHog, wie Sie Git-Repositories lokal und in CI nach Secrets scannen und wie Sie die Ergebnisse interpretieren, um Gegenmaßnahmen effektiv zu priorisieren.

Wichtigste Erkenntnisse

  • TruffleHog scannt die gesamte Git-Historie, nicht nur aktuelle Dateien, und macht Secrets sichtbar, die in alten Commits vergraben sind
  • Verifizierte Funde weisen auf aktive, ausnutzbare Zugangsdaten hin, die sofortiges Rotieren erfordern
  • Die Integration von TruffleHog in CI-Pipelines verhindert Credential-Leaks, bevor diese in die Produktion gelangen
  • Wenn Secrets gefunden werden: zuerst rotieren, dann mit Tools wie BFG Repo-Cleaner oder git-filter-repo aus der Historie entfernen

Warum Secrets in Git landen

Entwickler arbeiten schnell. Ein Datenbankpasswort wird beim Debugging fest codiert. Ein AWS-Schlüssel landet in einer Konfigurationsdatei. Diese Fehler passieren ständig, und Gits unveränderliche Historie bedeutet, dass selbst „gelöschte” Secrets in älteren Commits bestehen bleiben.

Das Risiko ist real: Automatisierte Bots scannen öffentliche Repositories kontinuierlich, und exponierte Zugangsdaten können innerhalb von Minuten nach dem Push ausgenutzt werden. Selbst private Repositories sind nicht sicher – ein einziger kompromittierter Entwickler-Account oder eine falsch konfigurierte Zugriffskontrolle kann alles offenlegen.

Wie TruffleHog Secrets erkennt

TruffleHog ist kein einfaches Grep-Tool. Es verwendet detektorbasiertes Scannen mit Hunderten eingebauter Muster für spezifische Credential-Typen: AWS-Schlüssel, GitHub-Tokens, Stripe-API-Schlüssel, Datenbank-Verbindungsstrings und mehr.

Der Erkennungsansatz kombiniert:

  • Pattern Matching: Regex-Detektoren, die auf bekannte Secret-Formate abgestimmt sind
  • Kontextuelle Analyse: Untersuchung des umgebenden Codes zur Rauschreduzierung
  • Optionale Verifizierung: Testen von Zugangsdaten gegen tatsächliche APIs, um zu bestätigen, dass sie aktiv sind

Dieser mehrschichtige Ansatz bedeutet weniger False Positives als reine Entropie-Scanner. Wenn TruffleHog etwas markiert, lohnt sich die Untersuchung in der Regel.

Scannen eines lokalen Repositories

Um Git-Repositories lokal nach Secrets zu scannen, richten Sie TruffleHog auf Ihr Repository:

trufflehog git file://.

Dies scannt die gesamte Git-Historie – nicht nur den aktuellen Working Tree. Secrets, die in alten Commits vergraben sind, werden zusammen mit aktuellen sichtbar gemacht.

Für schnelleres Feedback während der Entwicklung können Sie den Scan-Umfang auf aktuelle Commits oder bestimmte Branches beschränken. Dies macht es praktikabel, den Scan vor dem Pushen von Änderungen auszuführen.

Verifizierte vs. unverifizierte Ergebnisse verstehen

TruffleHog unterscheidet zwischen zwei Fundtypen:

  • Verifiziert: Die Zugangsdaten wurden gegen ihre API getestet und als aktiv bestätigt
  • Unverifiziert: Das Muster entspricht einem bekannten Secret-Format, aber eine Verifizierung war nicht möglich oder wurde nicht versucht

Verifizierte Funde erfordern sofortiges Handeln – dies sind aktive Zugangsdaten, die sofort ausgenutzt werden könnten. Unverifizierte Funde rechtfertigen ebenfalls eine Überprüfung, können aber bei der Triage eines großen Ergebnissatzes niedriger priorisiert werden.

Um die Ausgabe auf nur verifizierte Ergebnisse zu filtern:

trufflehog git file://. --only-verified

Integration der TruffleHog GitHub Action in CI

Manuelle Scans erkennen Probleme, aber Automatisierung verhindert sie. Die TruffleHog GitHub Action integriert sich direkt in Ihre CI-Pipeline, um jeden Pull Request und Push zu scannen.

Eine grundlegende Workflow-Konfiguration scannt eingehende Änderungen und lässt den Build fehlschlagen, wenn Secrets erkannt werden. Dies schafft ein Gate, das Credential-Leaks stoppt, bevor sie Ihren Main-Branch – oder schlimmer noch, die Produktion – erreichen.

Die Action unterstützt das Scannen nur des Diffs (schneller für PR-Checks) oder der vollständigen Repository-Historie (nützlich für periodische Audits). Die meisten Teams führen leichtgewichtige Diff-Scans bei jedem PR durch und planen wöchentlich umfassende Historie-Scans.

Über Git hinaus: Weitere Scan-Ziele

Während sich dieser Artikel auf Git-Workflows konzentriert, unterstützt TruffleHog zusätzliche Ziele: Dateisysteme, S3-Buckets und Docker-Images. Für die meisten Entwickler decken die Git- und Dateisystem-Scanner typische Anwendungsfälle ab. Die erweiterten Funktionen werden relevant, wenn Ihre Infrastruktur wächst.

Was zu tun ist, wenn Secrets gefunden werden

Ein Secret zu finden ist nur der erste Schritt. Die Reaktion ist wichtiger:

  1. Rotieren Sie die Zugangsdaten sofort – gehen Sie davon aus, dass sie kompromittiert sind
  2. Entfernen Sie sie aus der Git-Historie mit Tools wie BFG Repo-Cleaner oder git-filter-repo
  3. Prüfen Sie Access-Logs für den betroffenen Service, um unbefugte Nutzung zu überprüfen
  4. Aktualisieren Sie Ihren Workflow, um zukünftige Credential-Leaks in der Versionskontrolle zu verhindern

Die Datei einfach zu löschen und erneut zu committen hilft nicht. Das Secret verbleibt in der Historie, bis Sie diese neu schreiben.

Fazit

TruffleHog funktioniert am besten als präventive Kontrolle, nicht nur als Audit-Tool. Führen Sie es früh in CI aus, idealerweise bei jedem Pull Request. Je früher Sie ein geleaktes Credential erkennen, desto kleiner ist der Schadensradius.

Kombinieren Sie automatisiertes Scannen mit guter Hygiene: Verwenden Sie Umgebungsvariablen für Secrets, fügen Sie sensible Muster zu .gitignore hinzu und erwägen Sie Pre-Commit-Hooks für lokale Durchsetzung.

Secret Scanning eliminiert nicht jedes Risiko, reduziert aber dramatisch das Zeitfenster zwischen einem Fehler und seiner Entdeckung. Das ist oft der Unterschied zwischen einem Beinahe-Vorfall und einem Incident.

FAQs

TruffleHog scannt standardmäßig die gesamte Git-Historie, nicht nur den aktuellen Working Tree. Das bedeutet, dass Secrets, die in alten Commits vergraben sind, sichtbar gemacht werden, selbst wenn sie in späteren Commits gelöscht wurden. Gits unveränderliche Historie bewahrt alles, daher ist umfassendes Scannen essenziell, um alle exponierten Zugangsdaten zu finden.

Verifizierte Funde bedeuten, dass TruffleHog die Zugangsdaten gegen ihre tatsächliche API getestet und bestätigt hat, dass sie noch aktiv sind. Unverifizierte Funde entsprechen bekannten Secret-Mustern, wurden aber nicht validiert. Priorisieren Sie verifizierte Funde für sofortiges Handeln, da sie aktive, ausnutzbare Zugangsdaten darstellen.

Die Datei zu löschen und zu committen entfernt das Secret nicht aus der Historie. Verwenden Sie Tools wie BFG Repo-Cleaner oder git-filter-repo, um die Git-Historie neu zu schreiben und die Zugangsdaten aus allen Commits zu entfernen. Nach dem Neuschreiben führen Sie einen Force-Push zum Remote durch und lassen alle Mitarbeiter das Repository neu klonen.

Ja, TruffleHog kann als Pre-Commit-Hook für lokale Durchsetzung ausgeführt werden. Dies erkennt Secrets, bevor sie jemals Ihr Remote-Repository erreichen. Kombinieren Sie Pre-Commit-Hooks mit CI-Integration für Defense in Depth und stellen Sie sicher, dass Secrets sowohl lokal als auch in Ihrer Pipeline blockiert werden.

Understand every bug

Uncover frustrations, understand bugs and fix slowdowns like never before with OpenReplay — the open-source session replay tool for developers. Self-host it in minutes, and have complete control over your customer data. Check our GitHub repo and join the thousands of developers in our community.

OpenReplay