Blog Tools / Secret Management

Nicht mehr fragen? Dann bitte ohne Secret.

Eine dauerhafte Freigabe speichert eine Regel. Enthält der exakt freigegebene Befehl ein Secret, kann daraus eine weitere Kopie werden. Deshalb gehören auch lokale Einstellungen in die Prüfung.

Lesemodus

Die Rückfrage endet, die Regel bleibt

Ein Befehl wurde geprüft, die Rückfrage ist beantwortet. Bei einer dauerhaften Freigabe entsteht daraus eine Einstellung für spätere Aufrufe. Für mich gehört deshalb zur Entscheidung auch die Frage, was genau gespeichert wird.

Laut Claude-Code-Dokumentation wird eine dauerhaft bestätigte Bash-Freigabe als allow-Regel in .claude/settings.local.json abgelegt. Die Berechtigungsdokumentation unterstützt Regeln, die einen exakten Befehl abgleichen. Enthält eine solche Regel einen wörtlichen geheimen Wert, enthält die gespeicherte Konfiguration damit auch diesen Wert. Das ist eine Folgerung aus dem dokumentierten Speicher- und Regelverhalten, keine Behauptung über jede Freigabe.

Local beschreibt den Geltungsbereich

Die Herstellerdokumentation unterscheidet persönliche Projekteinstellungen in .claude/settings.local.json von der gemeinsam genutzten .claude/settings.json. Erstere ist für lokale Abweichungen vorgesehen, letztere kann Einstellungen für das Team enthalten.

Ich würde die Bezeichnung „local“ deshalb als Hinweis auf den vorgesehenen Einsatz verstehen. Ob eine Datei tatsächlich geteilt wurde, ist eine eigene Prüfung: Liegt sie in einem Commit, einem Archiv oder einer anderen weitergegebenen Kopie? Der Dateiname beantwortet das nicht.

Git-Ausschluss und frühere Commits trennen

Claude Code ergänzt laut Dokumentation beim ersten eigenen Schreiben der lokalen Datei in einem Git-Repository einen passenden Eintrag in den globalen Git-Ausschlüssen, sofern sie noch nicht ignoriert wird. Wer die Datei selbst anlegt, soll sie gegebenenfalls selbst in .gitignore aufnehmen.

Für die Bearbeitung würde ich zwei Befunde getrennt festhalten: Wird die Datei heute ausgeschlossen, und war sie früher bereits versioniert? Zusätzlich würde ich prüfen, ob gespeicherte Regeln über andere Konfigurationsdateien oder Kopien weitergegeben wurden. Bei Funden reicht es, den betroffenen Zugang und seine Ablageorte zu dokumentieren; das Secret selbst gehört nicht in ein Ticket.

Zuerst den Zugang ungültig machen

GitHub empfiehlt bei offengelegten Zugangsdaten zuerst Widerruf oder Rotation. Die Entfernung aus der Repository-Historie ist eine gesonderte Entscheidung mit Nebenwirkungen und muss mit den Beteiligten koordiniert werden. Andere Klone und Forks können weiterhin Kopien enthalten.

Das würde ich als Reihenfolge für die eigene Bearbeitung übernehmen: betroffenen Zugang eingrenzen, seine Gültigkeit beenden und anschließend die Ablagen bereinigen. Welche weiteren Prüfungen nötig sind, hängt von Berechtigungen, möglicher Offenlegung und verfügbaren Nutzungsprotokollen ab. Ein gefundenes Secret belegt für sich allein noch keinen Missbrauch.

Freigaben ohne Klartext-Geheimnisse gestalten

GitHub empfiehlt, Geheimnisse nicht fest in Code einzubauen, sondern sie beispielsweise über Secret-Management-Dienste zur Laufzeit bereitzustellen. Auch geeignete Schutzmechanismen vor dem Commit und Push können versehentliche Veröffentlichungen begrenzen.

Für neue Freigaben würde ich den tatsächlich gespeicherten Regeltext ansehen und die Prüfung mit künstlichen Testwerten durchführen. Dabei auch kontrollieren, ob ein Wert in Ausgaben oder anderen Dateien auftaucht. Mein Ziel wäre eine nachvollziehbare Freigabe, deren Nutzen ohne eine zusätzliche dauerhafte Kopie des Zugangsschlüssels auskommt.

Zum Ausgangspost

X · Diskussion zum BeitragLinkedIn · Diskussion zum Beitrag

Quellen & weiterführende Links

Claude Code · Einstellungsdateien und lokale FreigabenClaude Code · Berechtigungssystem und BefehlsregelnGitHub · Sensible Daten aus einem Repository entfernen

/Verstehen. Testen. Anwenden.

Web-Zugriffe absichern
01 / VERSTEHEN

Du liest gerade die Einordnung.

Beiträge zum Thema
02 / SELBST TESTEN

Angemeldet heißt nicht berechtigt.

4 Min. Training
03 / IM ALLTAG PRÜFEN

Web und API: Angemeldet heißt nicht berechtigt

Checkliste mit Gegenprobe
← Zurück zum Blog

Im Blog suchen

31 Beiträge

Provenance gültig. Paket trotzdem vergiftet.3 Min. LesezeitWer fragt da? Identität vor die App.3 Min. LesezeitAuto offen. Der Login war der Schlüssel.3 Min. LesezeitCVSS 10.0. Nichts zu patchen.3 Min. LesezeitRoot im Gast. Griff in Firecracker.3 Min. LesezeitBarracuda ESG: Zwei Lücken, ein Root-Weg3 Min. LesezeitNicht mehr fragen? Dann bitte ohne Secret.3 Min. LesezeitApp-Login. Kein User.3 Min. LesezeitGepatcht. Nicht geputzt.4 Min. LesezeitMFA an. Trotzdem drin.4 Min. LesezeitGeprüft. Dann getauscht.4 Min. Lesezeit14 Rabbit Holes für Entra, M365 und SOC.3 Min. LesezeitARTEX: Der Zeitvorteil liegt zwischen den Schritten.3 Min. LesezeitDas Inventar muss vor der CVE fertig sein.3 Min. LesezeitDas Update selbst ist die Lücke.2 Min. LesezeitDer Anruf kam von der IT. Angeblich.2 Min. LesezeitDer erste Patch war nicht die ganze Kette.2 Min. LesezeitDer interessante Teil liegt zwischen den Alerts.2 Min. LesezeitDer Kernel ist installiert. Läuft er auch?3 Min. LesezeitDer Passkey sitzt. Die Hintertür auch?2 Min. LesezeitDie Gruppe ist noch da. Die Logik steht.2 Min. LesezeitDie KI ist echt. Die Einladung nicht.2 Min. LesezeitEchte Loginseite. Falscher Auftrag.2 Min. LesezeitEchter Login. Falscher Auftrag.3 Min. LesezeitEine KEV-Frist ist noch kein Wiederherstellungsplan.3 Min. LesezeitFernhilfe erlaubt. Domänenzugriff gewonnen.2 Min. LesezeitGeklickt. Bestanden. Nichts gelernt?2 Min. LesezeitKühlung ist kein Neben-Netz.2 Min. LesezeitNode2Shell: Das Image-Tag ist kein Inventar.3 Min. LesezeitStandard ist noch keine Zugriffsregel.2 Min. LesezeitToken-Flows aus PDFs lernen? Viel Glück.3 Min. Lesezeit

Esc schließt die Suche.