Sensible Daten durch Passworttresore besser schĂĽtzen
Daten wie private Schlüssel und API-Keys haben in einem öffentlichen Coderepository nichts verloren. Sie gehören in einen Passworttresor mit API-Zugriff.
- Markus Stubbig
Die E-Mail von GitHub von gestern Abend verheißt nichts Gutes. Der Betreff "Private Key exposed on GitHub" beschreibt die Situation sehr präzise. Ein großer blauer Button im Text der E-Mail verspricht Abhilfe, kommt aber mehrere Stunden zu spät. Jetzt heißt es handeln: Den privaten Schlüssel widerrufen und aus dem Repository verschwinden lassen (siehe hierzu Artikel "Versteckte Git-Commits aufdecken"). Danach die Logs checken, ob mit diesem Schlüssel ein Login stattgefunden hat. Ähnliches gilt für ein verratenes Passwort oder einen API-Schlüssel.
Aber wie kommt ein Passwort, ein privater Schlüssel oder ein API-Key in das GitHub-Repository? Die Antwort ist einfach: Sie sind Teil des Quellcodes, den einer der Entwickler eingecheckt hat. Die eigentliche Frage muss lauten: Warum befinden sich sensible Daten im Programmcode? Besser ist es, das Schlüsselmaterial in einem Passwortsafe aufzubewahren, der nicht Teil des Repositorys ist. Sobald die eigene Software das Passwort benötigt, holt sie es sich aus dem Safe. Ob sich irgendwo ein Kennwort in die Programmzeilen eingeschlichen hat, zeigt ein Codescanner, der auf die Suche nach sensiblen Informationen abgerichtet ist.
- Zugangsdaten gehören nicht in den Quellcode, sondern in einen Passworttresor – einen Passwortmanager mit API-Zugang.
- Der Programmcode erhält zeitlich beschränkten Zugriff auf das Kennwort im Tresor.
- Zum Auffinden von Secrets im Quellcode eignet sich der SAP Credential Digger, der unter einer Open-Source-Lizenz steht.
- Neben dem vielseitigen HashiCorp Vault sind auch Infisical und Passbolt geeignete Kandidaten fĂĽr Tresorsoftware.
Der Artikel stellt einen solchen Codescanner und drei Passworttresore vor und zeigt, wie sie sich in eigene Skripte integrieren lassen. Die Tresorsoftware funktioniert ähnlich wie die Passwortmanager KeePass, Bitwarden und Buttercup. Der Unterschied ist, dass der Passworttresor seine Kennwörter nur dann herausgibt, wenn ein Bash-Skript oder ein sonstiges Programm über eine Programmierschnittstelle (API) danach fragt. Und auch die Authentifizierung darf nicht fehlen, die meist über zeitlich begrenzte Token erfolgt. Im Programmcode, der schließlich auf GitHub landet, steht dann nur der API-Zugriff auf die Webadresse des Tresors, nicht aber das Klartextpasswort.
Das war die Leseprobe unseres heise-Plus-Artikels "Sensible Daten durch Passworttresore besser schützen". Mit einem heise-Plus-Abo können sie den ganzen Artikel lesen und anhören.