
Scannen. Schwärzen. Sauber committen.
Finde das Geheimnis. Behebe es. Committe sauber.
Geheimnis-Scanner schlagen Alarm, helfen aber kaum beim Löschen. Sie übergeben eine Liste geleakter Zugangsdaten und überlassen dir die Bereinigung. Credactor schließt den Kreislauf: Es findet ein hartcodiertes Geheimnis und schreibt es direkt um, sodass ein Leck in einem einzigen Befehl von Erkennung zur Behebung gelangt.
Zugangsdaten aus dem Quellcode fernzuhalten, ist eine grundlegende Sicherheitspraxis, keine optionale. Credactor macht es günstig, diese Grundregel einzuhalten – auf deinem Rechner vor einem Commit oder in CI vor einem Merge. Nutze es allein oder zusammen mit den Scannern, denen du bereits vertraust.
# Credactor findet das hier:
db_password = "h8Tq2vKp9mRz4Wd"
# Standardmäßig wird das Geheimnis durch einen Sentinel ersetzt, der zur Laufzeit lautstark fehlschlägt:
db_password = "REDACTED_BY_CREDACTOR"
# Mit --replace-with env wird ein Verweis geschrieben, der aus der Umgebung liest:
db_password = os.environ["DB_PASSWORD"]
Das Schwärzen überschreibt Dateien in deinem Arbeitsverzeichnis. Falls ein Geheimnis bereits committed wurde, rotiere den Schlüssel und bereinige die Historie (z. B. mit
git filter-repo). Das Überschreiben einer Datei ersetzt nicht das Widerrufen eines geleakten Zugangsdaten.
REDACTED_BY_CREDACTOR-Sentinel, der standardmäßig zur Laufzeit fehlschlägt, oder ein sprachspezifischer Umgebungsvariablen-Verweis (Python, JavaScript/TypeScript, Go, Java/Kotlin, Ruby, PHP und Shell) wie os.environ["KEY"]. Der Ersatz ist gültiger Code. Falls die Datei den passenden Import (z. B. import os) noch nicht enthält, wird er hinzugefügt..bak-Backups, Schutz vor Symlink-Grenzen und Dateiberechtigungen sowie vollständige Maskierung von Geheimnissen in jeder Ausgabe. Falls ein sicheres Backup nicht geschrieben werden kann, überspringt Credactor die Datei, anstatt blind zu überschreiben, und ein Absturz während des Schreibvorgangs hinterlässt das Original intakt.--ci-Tor mit präzisen Exit-Codes, ein Pre-Commit-Hook (Beta) und die Aufnahme von Gitleaks- oder TruffleHog-Berichten (BETA, weitere folgen). Erkenne mit Gitleaks oder TruffleHog, behebe mit Credactor.pip install credactor
Erfordert Python 3.11+. Keine weiteren Abhängigkeiten. Läuft auf Linux, macOS und Windows (CI-getestet auf Linux und Windows).
Aus dem Quellcode:
git clone https://github.com/rxb06/credactor.git
cd credactor
pip install -e .
credactor funktioniert dann von jedem Verzeichnis aus.
Führe zuerst
--dry-runaus und überprüfe die Funde, bevor du schwärzt. Fehlalarme sind möglich, und unter--fix-allwird ein Fehlalarm überschrieben. Unterdrücke bekannte sichere Werte mit# credactor:ignoreoder einem Eintrag in.credactorignore.
credactor --dry-run . # scannen, nichts ändern
credactor . # scannen, dann interaktiv schwärzen (j/n pro Fund)
credactor --fix-all . # alles nach einer Bestätigung schwärzen
credactor --fix-all --yes . # nicht-interaktiv schwärzen (CI / Skripte)
credactor --ci . # schreibgeschütztes Tor: Exit 1 bei Funden
credactor --replace-with env . # Schwärzung durch Umgebungsvariablen-Verweise statt Sentinel
Die Hook-Integration ist in der Beta-Phase. Führe vorher manuell
credactor --dry-run .aus, bevor du dich allein darauf verlässt.
# .pre-commit-config.yaml
repos:
- repo: https://github.com/rxb06/credactor
rev: v2.5.0 # auf den neuesten Release-Tag festlegen
hooks:
- id: credactor
Credactor erkennt die Credential-Typen, die am häufigsten durchsickern, und weist jedem einen Schweregrad zu, damit du auf einen Blick priorisieren kannst.
Deterministische Provider-Tokens (die obigen Präfixe) werden unabhängig von der Entropie markiert. Heuristische Detektoren (JWTs, Verbindungsstrings, Hex, Base64) müssen eine Entropie-Schwelle überschreiten. Eigenständige Hex- oder Base64-Werte werden nur markiert, wenn sie in Anführungszeichen stehen. Ein nicht in Anführungszeichen stehender hochentropischer Wert wird nur bei einer nach Credential benannten Variable erfasst, sodass Git-SHAs und Prüfsummen verschont bleiben. Die vollständigen Erkennungs- und Schweregradregeln findest du im Handbuch.
Credactors eigener Regelsatz ist enger als der eines dedizierten Scanners, und einige Provider-Formate (z. B. SendGrid, Twilio und Slack-Webhooks) werden nicht erkannt. Seine Stärke liegt in der Behebung: Kombiniere ihn mit Gitleaks oder TruffleHog für die breiteste Erkennung oder verwende ihn eigenständig.
Credactor kann eigenständig arbeiten und wird in Kombination noch stärker. Führst du bereits Gitleaks oder TruffleHog aus? Übergib deren Bericht an Credactor, und es schwärzt die kombinierte Menge, dedupliziert gegenüber den eigenen Funden (bei Überschneidungen gewinnt der höhere Schweregrad). Ein einziger Behebungslauf deckt deinen Scan und den des anderen ab:
gitleaks dir . -f json -r gitleaks.json
credactor --from-gitleaks gitleaks.json --fix-all --yes .
--from-gitleaks / --from-trufflehog (oder eine [ingest]-Tabelle in .credactor.toml) erfordern ein Zielverzeichnis. Siehe die CI-Integrationsanleitung.
--replacement; --scan-history zum Scannen des Git-Commit-Verlaufs--secure-delete (Überschreiben und Entfernen der .bak-Datei; erhöht die Hürde gegen gelegentliche Wiederherstellung, keine forensische Garantie) oder --secure-backup-dir zum Speichern von Backups außerhalb des Repositorys# credactor:ignore und .credactorignore-Positivlisten (Globs, datei:zeile, Werte-Literale).credactor.toml.txt); --scan-json zum Einbeziehen von JSON; --fail-on-error, um bei einer nicht lesbaren Datei zu scheitern
.py.js.ts.jsx.tsx.sh.bash.env.cfg.ini.toml.yaml.yml.rb.go.java
Zusätzlich .env.* / .env-*-Varianten (.env.local, .env.production) sowie SSH-/Private-Key-Dateien (id_rsa, id_dsa, id_ecdsa, id_ed25519), alle nach Dateiname statt Erweiterung erkannt. JSON ist standardmäßig ausgeschlossen, da API-Antworten eine hohe Fehlalarmrate erzeugen; füge --scan-json hinzu, um es einzubeziehen. Eine direkt auf der Kommandozeile angegebene Datei wird auch dann gescannt, wenn ihre Erweiterung nicht in dieser Liste ist.
| Code | Bedeutung |
|---|---|
0 | Keine Funde oder alle behoben |
Ein Sicherheitstool sollte sicher zu installieren sein, nicht nur sicher auszuführen. Credactors Build- und Release-Pipeline ist durchgängig gehärtet; vollständige Details im Sicherheitsdokument.
pip install credactor) zieht keine Drittanbieter-Pakete nach sich (nur das optionale [encoding]-Extra), sodass zum Installationszeitpunkt nichts überprüft werden muss.--require-hashes, inklusive Build-Backend (python -m build --no-isolation gegen ein gepinntes setuptools), sodass eine manipulierte Abhängigkeit den Build scheitern lässt.scripts/audit_wheel.py das Wheel und den Sdist Byte für Byte mit dem committed Quellcode (sha256 gegen git HEAD); jede hinzugefügte, fehlende oder veränderte Datei lässt das Tor zuschlagen, sodass kein Build-Schritt unbemerkt Code injizieren kann.contents: read standardmäßig, id-token: write nur für den Publish-Job.Apache 2.0. Siehe LICENSE.
| Kategorie | Beispiele | Schweregrad |
|---|
| Cloud-Provider-Schlüssel | AWS (AKIA…), GCP (AIza…), Stripe (sk_live_…), Slack (xoxb-…) | Kritisch |
| Plattform-Tokens | GitHub (ghp_, github_pat_), GitLab (glpat-), npm (npm_), PyPI (pypi-) | Kritisch |
| Private Schlüssel | PEM-Blöcke (-----BEGIN … PRIVATE KEY-----) | Kritisch |
| JWTs | eyJ…-Drei-Segment-Tokens | Hoch |
| Verbindungsstrings | URLs mit Inline-Zugangsdaten (schema://benutzer:passwort@host) | Hoch |
| Credential-Variablen | password = "…", api_key = "…", secret_key = "…" | Hoch/Mittel/Niedrig |
| XML-Attribute | <add key="Password" value="…" /> | Hoch/Mittel/Niedrig |
| Hochentropie-Zeichenketten | zitierte Hexadezimalzahlen (32–64 Zeichen) / Base64 (60+ Zeichen) | Mittel/Niedrig |
.php.cs.kt.tf.hcl.conf.config.properties.xml.pem.key.crt.txt1 | Unbehobene Funde |
2 | Fehler (z. B. ungültiger Pfad, gefährliches --replacement, --ci --fix-all oder --fail-on-error mit einer nicht lesbaren Datei) |
| Dokument | Beschreibung |
|---|
| Einrichtungsanleitung | Installation, Konfiguration, CI/CD-Integration |
| Handbuch | Vollständige Referenz: jedes Flag, jeder Modus und jede Kombination, Verhalten bei Ersetzung und Backup, Erkennung und Schweregrad, Exit-Codes und Einschränkungen (verhaltenstestverifiziert) |
| Beispiele | Häufige Workflows mit Ausgabe |
| CI-Integration | Pre-Commit-Hooks, CI-Pipelines |
| Sicherheit | Bedrohungsmodell, Härtungsmaßnahmen, bekannte Einschränkungen |
| Changelog | Versionsverlauf |
| Mitwirken | Entwicklungseinrichtung, Codestil, PR-Prozess |
| Haftungsausschluss | Einschränkungen, sichere Verwendung, Garantie |