Sicherheit
Sicherheitsprüfungsfunktion
Repomix verwendet Secretlint zur Erkennung sensibler Informationen in Ihren Dateien:
- API-Schlüssel
- Zugangstoken
- Anmeldedaten
- Private Schlüssel
- Umgebungsvariablen
Konfiguration
Sicherheitsprüfungen sind standardmäßig aktiviert.
Deaktivierung über CLI:
repomix --no-security-checkOder in repomix.config.json:
{
"security": {
"enableSecurityCheck": false
}
}Sicherheitsmaßnahmen
- Binärdateiverarbeitung: Binärdateiinhalte werden von der Ausgabe ausgeschlossen, aber ihre Pfade werden in der Verzeichnisstruktur für eine vollständige Repository-Übersicht aufgelistet
- Git-bewusst: Berücksichtigt
.gitignore-Muster - Automatische Erkennung: Sucht nach häufigen Sicherheitsproblemen:
- AWS-Anmeldedaten
- Datenbankverbindungszeichenfolgen
- Authentifizierungstoken
- Private Schlüssel
Vertrauen in die Konfiguration von Remote-Repositories
Wenn Sie ein Remote-Repository mit --remote packen, behandelt Repomix die Konfiguration dieses Repositorys als nicht vertrauenswürdigen Code.
Warum eine Konfigurationsdatei Code ist
Eine repomix.config.* ist nicht nur Daten:
repomix.config.ts/.js/.mjswird beim Laden ausgeführt.input.processorsführt externe Befehle für passende Dateien aus.output.instructionFilePathund Include-Muster mit../lesen Dateien außerhalb des Repositorys.
Eine ungeprüfte Konfiguration aus einem unbekannten Repository zu laden, ist daher vergleichbar mit dem Ausführen von dessen Makefile oder einem npm install für ein Paket mit Lifecycle-Skripten.
Standard: Remote-Konfigurationen werden nie geladen
Repomix ignoriert die Konfiguration eines geklonten Repositorys, sofern Sie nicht explizit danach fragen. Ihre globale Konfiguration und CLI-Optionen gelten weiterhin. Solange Sie das unten genannte Flag nicht übergeben, kann Sie nichts in diesem Abschnitt betreffen.
Aktivieren
# Per CLI-Flag
repomix --remote user/repo --remote-trust-config
# Per Umgebungsvariable
REPOMIX_REMOTE_TRUST_CONFIG=true repomix --remote user/repoDies gewährt der Remote-Konfiguration das gleiche Vertrauen wie einer selbst geschriebenen Konfiguration. Verwenden Sie diese Option nur für Repositories, denen Sie vertrauen und die Sie überprüft haben.
Bestätigungsaufforderung
In einem interaktiven Terminal zeigt Repomix die Konfiguration an, die gleich ausgeführt wird, und fragt vor dem Laden nach Bestätigung:
| Auswahl | Wirkung |
|---|---|
| Ja, nur dieses Mal | Vertraut nur diesem Durchlauf. |
| Ja, und nicht mehr für dieses Repository fragen | Speichert die Entscheidung (siehe unten). |
| Nein (Standardauswahl) | Bricht ab, ohne die Konfiguration zu laden. |
Die angezeigte Konfiguration wurde vom Autor des Repositorys geschrieben, daher stellt Repomix sicher, dass die Anzeige nicht manipuliert werden kann:
- Steuer- und ANSI-Sequenzen werden maskiert, sodass eine Konfiguration das Terminal nicht neu zeichnen oder die Warnung aus dem Sichtbereich scrollen kann.
- Bidirektionale und unsichtbare Zeichen werden maskiert, sodass der gelesene Text dem ausgeführten Text entspricht (Trojan Source).
- Die Ausgabe ist begrenzt – sowohl nach Zeilenanzahl als auch nach Byte-Größe –, sodass eine aufgeblähte Konfiguration die Warnung nicht aus dem Bildschirm drängen kann.
- Jeder Konfigurationszeile wird ein Präfix vorangestellt, sodass eine Konfiguration Repomix' eigene Trennzeichen oder Meldungen nicht fälschen kann.
- Symlinks werden abgelehnt. Git bewahrt Symlinks, sodass ein Repository eine
repomix.config.jsonausliefern kann, die auf einen Ort außerhalb des Klons zeigt. Repomix verlangt, dass die Konfiguration eine reguläre Datei innerhalb des geklonten Verzeichnisbaums ist – andernfalls wären die überprüften Bytes nicht die Bytes, die ausgeführt werden.
Eine Entscheidung merken
Die Wahl von "nicht mehr fragen" speichert einen Marker in Ihrem temporären Verzeichnis ($TMPDIR/repomix/trusted-remotes/), der nur für Ihr Benutzerkonto lesbar und beschreibbar ist.
Der Marker ist inhaltsgebunden: Er speichert einen Hash der genehmigten Konfiguration. Liefert das Repository später eine andere Konfiguration aus, stimmt der Hash nicht mehr überein und Sie werden erneut gefragt – nach demselben Prinzip wie direnv allow.
Umfang der Bindung
Der Hash deckt nur die Einstiegs-Konfigurationsdatei ab. Eine .ts- / .js-Konfiguration kann andere Dateien per import einbinden, und input.processors kann externe Skripte aufrufen; beides wird nicht gehasht. Ein bereits vertrautes Repository kann diese ändern, während die Einstiegsdatei identisch bleibt. Deshalb werden ausführbare Konfigurationen in der Aufforderung entsprechend gekennzeichnet – betrachten Sie "nicht mehr fragen" als Vertrauen in das Repository, nicht nur in die gelesene Datei.
Marker liegen im temporären Verzeichnis, sodass Entscheidungen verfallen, sobald Ihr Betriebssystem es leert. Das ist beabsichtigt: Ein Verfall in Richtung "erneut fragen" ist die sichere Richtung.
Wann die Aufforderung übersprungen wird
| Situation | Verhalten |
|---|---|
--force wird übergeben | Vertraut, ohne zu fragen. Das Flag bedeutet, dass Sie die Konsequenzen akzeptieren; ein Hinweis wird auf stderr ausgegeben. |
| Nicht-interaktive Shell (CI, Pipes) | Vertraut, ohne zu fragen, bestehende Automatisierung bleibt erhalten. Ein Hinweis wird auf stderr ausgegeben. |
| Repository bereits vertraut | Wird ohne Nachfrage geladen, solange die Konfiguration unverändert ist. |
Ein absoluter --config-Pfad wird verwendet | Die eigene Konfiguration des geklonten Repositorys wird nie geladen, daher gibt es nichts zu bestätigen. |
| Der Klon enthält keine Konfigurationsdatei | Nichts zu vertrauen. |
Unter --stdout, oder wenn stdout umgeleitet wird, kann die Aufforderung nicht angezeigt werden. Repomix meldet stattdessen einen Fehler mit Hinweisen, statt die Konfiguration stillschweigend zu vertrauen.
Empfehlungen
- Lassen Sie
--remote-trust-configdeaktiviert, sofern Sie nicht die eigene Konfiguration des Repositorys benötigen. - Lesen Sie die in der Aufforderung angezeigte Konfiguration, bevor Sie antworten, besonders
input.processorsund alle../-Pfade. - Bevorzugen Sie "Ja, nur dieses Mal" für Repositories, die Sie nicht selbst kontrollieren.
- Denken Sie in CI daran, dass die Aufforderung Sie nicht schützen kann – fixieren Sie die gepackte Revision und prüfen Sie sie vorher.
Wenn die Sicherheitsprüfung Probleme findet
Beispielausgabe:
🔍 Sicherheitsprüfung:
──────────────────
2 verdächtige Datei(en) erkannt und ausgeschlossen:
1. config/credentials.json
- AWS-Zugriffsschlüssel gefunden
2. .env.local
- Datenbank-Passwort gefundenBest Practices
- Überprüfen Sie die Ausgabe immer vor dem Teilen
- Verwenden Sie
.repomixignorefür sensible Pfade - Lassen Sie Sicherheitsprüfungen aktiviert
- Entfernen Sie sensible Dateien aus dem Repository
Melden von Sicherheitsproblemen
Haben Sie eine Sicherheitslücke gefunden? Bitte:
- Öffnen Sie kein öffentliches Issue
- E-Mail: koukun0120@gmail.com
- Oder nutzen Sie GitHub Security Advisories
Verwandte Ressourcen
- GitHub-Repository-Verarbeitung - Repositories packen, die Sie nicht selbst geklont haben
- Konfiguration - Sicherheitsprüfungen über
security.enableSecurityCheckkonfigurieren - Befehlszeilenoptionen -
--no-security-check-Flag verwenden - Datenschutzrichtlinie - Erfahren Sie mehr über Repomix' Datenverarbeitung