Die Geschichte, wie ich auf die Debian-Schwachstelle mit schwachen Schlüsseln gestoßen bin
- Im März 2008 arbeitete der Autor bei Engine Yard (EY)
- Damals half EY GitHub, indem es kostenlose Infrastruktur bereitstellte
- Als GitHub wuchs, trat das Problem auf, dass SSH-Logins langsam wurden
- GitHub verwaltete SSH-Schlüssel mit der Standardmethode über die Datei
~/.ssh/authorized_keys
- SSH öffnet diese Datei, wenn sich ein Benutzer verbindet, und durchsucht sie linear nach einem Schlüssel, der mit dem vom Benutzer präsentierten Schlüssel übereinstimmt
- Normalerweise ist das kein Problem, weil nur einige wenige Schlüssel vorhanden sind, aber bei vielen Nutzern wie bei GitHub wird es langsam
Entscheidung, statt der authorized_keys-Datei eine MySQL-Datenbank zu verwenden
- Nach Prüfung mehrerer Alternativen entschied man sich, OpenSSH zu patchen, damit die Schlüsselsuche über eine MySQL-Datenbank erfolgt
- Das war eine sorgfältig abgewogene Entscheidung, und es wurde viel Aufwand betrieben, um die Sicherheit nicht zu beeinträchtigen
- Anfang April 2008 wurde die Änderung eingeführt und das Problem der langsamen SSH-Logins gelöst
Etwas Seltsames passiert
- Einen Monat später, Anfang Mai, trat ein Problem auf, bei dem einige Benutzer per SSH auf die Repositories anderer Benutzer zugreifen konnten
- Die Untersuchung ergab, dass verschiedene Benutzer Schlüssel mit demselben Fingerabdruck verwendeten
- Das dürfte nicht passieren, es sei denn, sie teilen sich denselben Schlüssel
- Die Benutzer sagten, sie kennten einander nicht und wüssten nicht, wie ihre Schlüssel kompromittiert worden sein könnten
- Dasselbe Problem wurde auch bei anderen Benutzerpaaren gefunden
- Die einzige Gemeinsamkeit war, dass alle Debian- oder Ubuntu-Systeme verwendeten
Die Ursache wird aufgeklärt
- Am 13. Mai 2008 wurde mit der Veröffentlichung von DSA-1571-1 alles klar
- Ein Debian-Maintainer hatte beim Aufräumen des OpenSSL-Codes zur Zufallszahlengenerierung versehentlich die Zahl möglicher Schlüssel auf etwa 32.000 reduziert
- Viele Menschen meldeten sich bei GitHub an und erzeugten nach Best Practice neue Schlüssel, was zu Kollisionen führte
- Danach befasste sich der Autor noch stärker mit diesem Problem, etwa indem er bekannte schwache Schlüssel nutzte, um betroffene Zertifizierungsstellen zu finden
Meinung von GN⁺
- Um eine so wichtige Schwachstelle zu finden, braucht man Zeit und Energie, um zu denken „Irgendetwas ist seltsam“ und hartnäckig weiter zu untersuchen. Meistens fehlt dieser Spielraum, daher braucht es oft auch Glück.
- Die meisten Menschen sind im Alltag zu beschäftigt, um bis zur eigentlichen Grundursache eines Problems vorzudringen. Dass unsere Branche sich diesen Spielraum zurückholt, ist eine wichtige Aufgabe.
- OpenSSL ist eine der am weitesten verbreiteten Kryptografie-Bibliotheken, daher ist die Auswirkung einer solchen Schwachstelle sehr groß. Hier zeigt sich zugleich die Stärke und die Schwäche von Open Source.
- Um solche Schwachstellen zu verhindern, müssen Code Reviews und Sicherheitsaudits verstärkt und Änderungen an kritischen Teilen noch sorgfältiger geprüft werden. Eine perfekte Methode gibt es aber nicht.
- Trotzdem hat Open Source den Vorteil, dass Fachleute den Code direkt prüfen und Probleme finden können. Bei geschlossenen Programmen ist selbst das nicht möglich.
1 Kommentare
Hacker-News-Kommentar
~/.ssh/authorized_keysbeschleunigen wolltep- oderq-Faktoren mittels GCD war eine interessante Episode