PuTTY ist ein "must-have" fuer Windows-Nutzer, die eine Kommandozeilenverbindung auf einem Unix-System verwenden moechten -- es ist die GUI-Implementation eines SSH-Cliets schlechthin. Mittlerweile auch auf unixoide und diverse mobile Plattformen uebersetzt bleibt Windows dennoch die gefuehlte Heimat. In diesem Artikel soll es um ein zunaechst merkwuerdig anmutendes und vielleicht auch gefaehrliches, im Kern aber korrektes Verhalten dieses Programms gehen.

Die Beobachtung

Beim Aufbau einer SSH-Verbindung wird mithilfe asymetrischer Verschluesselung unter anderem die Identitaet des Servers validiert. Hierzu wird dem Nutzer der Fingerprint des Public Keys angezeigt -- in einem dazugehoerigen Dialog:

Der Nutzer kann sich nun entscheiden, wie er mit dem Key umgehen moechte. Die meisten Nutzer werden den Key wohl beim ersten Verbinden validieren (raeusper) und dann speichern. Wenn nun wieder einmal verbunden wird, dann muss der Nutzer sich nicht mehr mit dem Key abplagen -- der ist ja zwischengespeichert.
Wird bei einem Verbindungsaufbau dann ein anderer Key uebermittelt, so reagiert PuTTY mit einer entsprechenden Warnung:

Verbindet man sich allerdings zu einem bekannten Host auf einem bekannten Port und antwortet dieser mit einem abweichenden Key und einem abweichenden Algorithmus, so resultiert dies nicht in der erwarteten Warnung vor einem Sicherheitsbruch sondern im Dialog zum initialen Akzeptieren des Keys:

Anleitung zur Reproduktion

Die Reaktion des Programms laesst sich beispielsweise wie folgt reproduzieren:

Security Breach?

Ist das nun eine Sicherheitsluecke? Scheinbar ja, aber nur so lange bis die Dialoge genau betrachtet werden: PuTTY gibt nicht nur den Key sondern auch den zu Grunde liegenden Algorithmus aus. Der aufmerksame Nutzer koennte also bemerken, dass sich da etwas geaendert hat, denn er beschaeftigt sich ja bei Auftreten des Dialogs sowiso mit der Validierung des Key-Fingerprints. Also kein Sicherheitsproblem.

Oder der Nutzer vertraut blind drauf, dass beim ersten Verbindungsaufbau immer der Key stimmen wird und wird nur bei der Meldung eines Key Mismatch misstrauisch. Dann ist es ein Sicherheitsproblem.
Dieser Unterschied laesst sich einfach ausdruecken: Fuer PuTTY wird ein Dienst durch das Tupel (Host, Port, Algorithmus) identifiziert. Fuer den Benutzer nur mit dem Tupel (Host, Port).

Man muesste natuerlich noch der Frage nachgehen, welchen Einfluss die Schluessellaenge hat.

Stichworte:


Impressum