OpenBSD: Sichere Uhrzeit mit NTP und HTTPS
Das NTP-Protokoll, mit dem man die Systemzeit über das Internet stellen kann, bietet keine sichere Authentifizierung und ist anfällig für Man-in-the-Middle-Angriffe. Von OpenBSD kommt jetzt eine Lösung für dieses Problem - eine Kombination aus NTP und HTTPS zum sicheren Stellen der Uhrzeit.

Praktisch alle modernen Betriebssysteme bieten die Möglichkeit, die Systemzeit über das Internet zu stellen. Zu diesem Zweck kommt üblicherweise das NTP-Protokoll zum Einsatz. NTP ist eines der ältesten Internetprotokolle überhaupt, es wurde bereits Mitte der 80er Jahre entwickelt. Für heutige Sicherheitsanforderungen taugt NTP eigentlich nicht mehr, denn es bietet keinerlei kryptographische Absicherung der übertragenen Daten. Zwar muss die Uhrzeit nicht verschlüsselt werden, denn geheim ist sie natürlich nicht, aber NTP wird üblicherweise auch ohne Authentifizierung eingesetzt. Dadurch kann ein Angreifer einem System eine gefälschte Uhrzeit unterschieben. Das kann wiederum in weiteren Angriffen ausgenutzt werden.
NTP-Authentifizierung unsicher
Es gibt zwar eine authentifizierte Version von NTP, doch die wird kaum genutzt, und das aus gutem Grund: Vor einigen Jahren konnte gezeigt werden, dass diese Authentifizierung gravierende Sicherheitslücken hat und praktisch keinen Schutz gegen Angriffe bietet.
Einen alternativen Ansatz zum Setzen der Systemzeit verfolgt das von Jacob Appelbaum entwickelte Tool Tlsdate. Es nutzt den Timestamp einer TLS-Verbindung. Das ist zwar sicherer, hat aber einen Nachteil: Der Timestamp von TLS ist lediglich sekundengenau, außerdem wird die Laufzeit, die ein Datenpaket durchs Netz benötigt, nicht berücksichtigt. Damit sind bei Tlsdate Ungenauigkeiten im Bereich von ein bis zwei Sekunden möglich. Das ist für die meisten Desktop- und Serveranwendungen zwar egal, aber für Spezialanwendungen werden häufig genauere Uhrzeiten benötigt. Ein weiteres Problem von Tlsdate: Für die kommende TLS-Version 1.3 ist geplant, den Timestamp aus den TLS-Datenpaketen zu entfernen. Alternativ kann Tlsdate daher bereits heute auch die Zeit aus einem HTTP-Header nutzen.
HTTPS definiert Grenzen für NTP-Zeit
Die OpenBSD-Entwickler Reyk Flöter, Henning Brauer und Theo de Raadt haben nun eine neue Lösung für eine sichere Systemzeit vorgestellt. Bevor eine NTP-Abfrage gestartet wird, schickt der NTP-Daemon eine Anfrage an einen oder mehrere HTTPS-Server und liest die Zeit des HTTP-Headers aus. Die daraus ausgelesene Zeit wird allerdings wegen ihrer Ungenauigkeit nicht direkt genutzt. Sie dient nur dazu, eine Begrenzung der gültigen Zeit zu definieren. Anschließend wird wie bisher ein NTP-Server abgefragt. Sollte eine deutliche Abweichung zwischen der Zeit des HTTPS-Servers und des NTP-Servers bestehen, wird die Antwort des NTP-Servers verworfen.
Versucht nun ein Angreifer mittels einer Man-in-the-Middle-Attacke, die Systemzeit zu manipulieren, so fällt dies in der Regel auf. Lediglich im niedrigen Sekundenbereich fällt dabei eine Manipulation nicht auf. Das dürfte für praktische Angriffe kaum zu gebrauchen sein. Das Attraktive an dieser Lösung: Sie vereint die Vorteile von Tlsdate und NTP, gleichzeitig basiert das Konzept ausschließlich auf bestehenden Protokollen. Es sind keine Änderungen an der Serversoftware notwendig, man kann bestehende HTTPS- und NTP-Server nutzen.
Der Code ist Teil des NTP-Servers von OpenBSD. Dieser steht unter dem Namen OpenNTPD auch für andere Betriebssysteme zur Verfügung. Die aktuelle Version von OpenNTPD enthält die neue HTTPS-Funktionalität allerdings noch nicht. OpenBSD-Nutzer können die neue Funktion im CVS-Code des NTP-Daemons bereits testen.
Delorean ermöglicht Man-in-the-Middle-Angriffe
Dass Angriffe auf NTP-Verbindungen ein sehr praktisches Sicherheitsproblem sein können, zeigte im vergangenen Jahr der Sicherheitsforscher Jose Selvi auf der Black-Hat-Konferenz in Amsterdam. Wenn man einen PC mittels einer Man-in-the-Middle-Attacke in die Zukunft schickt, kann man die HTTPS-Erweiterung HTTP Strict Transport Security umgehen. Selvi entwickelte dafür das Tool Delorean, mit dem man Man-in-the-Middle-Angriffe auf NTP durchführen kann. Das Tool steht im Quellcode auf Github zur Verfügung.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
- ohne Werbung
- mit ausgeschaltetem Javascript
- mit RSS-Volltext-Feed
Weil NTP auf UDP basiert und nicht TCP, drum kann man nicht einfach TLS drum herum...
Wie gesagt. NTP braucht vielleicht 40 kb. Die SSL Erweiterung kann gut es um 2-5 MB...
Ohne Uhrzeit Zertifikate überprüfen, wer denkt sich so einen Mist aus.
Dass das NTP in seiner aktuellen Form suboptimal ist, steht ausser Frage. Aber man muss...