Zusammenfassung

  • Sharon Goldberg, Aanchal Malhotra, Isaac E. Cohen und Erik Brakke belegten, dass ältere ntpd-Clients ein Kiss-o’-Death akzeptierten, obwohl dessen Ursprungstimestamp zu keiner eigenen Anfrage passte.
  • Ein gefälschtes Paket je konfiguriertem Server konnte sämtliche Korrekturquellen für eine vom Angreifer gewählte Zeit ausschalten; die dauerhafte Lehre verbindet Antworten mit Anfragen und begrenzt, wie lange ein negatives Signal Rückzug verlangen darf.

Wer einen Dienst überlasten will, muss üblicherweise weitersenden. Beim 2015 beschriebenen NTP-Angriff reichte es, den Empfänger zum Nicht-Senden zu bewegen. Das kurze Paket verschwand sofort aus dem Netz. Der Zustand, den es im Client hinterließ, konnte Tage oder noch länger bestehen.

Das Paket hieß Kiss-o’-Death, kurz KoD. NTP-Server nutzen solche Antworten, um sich vor zu häufigen Anfragen zu schützen. Modus 4, Schaltsekundenindikator 3, Stratum 0 und ein vierstelliger Code im Reference-ID-Feld kennzeichnen die Nachricht. RATE verlangt einen größeren Abstand; DENY und RSTR verweigern den Dienst.

Die Schutzfunktion war vernünftig. Gefährlich war die Autorität, die der Client der Nachricht gab. Aanchal Malhotra, Isaac E. Cohen, Erik Brakke und Sharon Goldberg testeten ntpd 4.2.6 und 4.2.8. Beide akzeptierten KoDs auch dann, wenn deren Ursprungstimestamp nicht zu einer offenen Anfrage gehörte. Ein Angreifer außerhalb des Pfades musste lediglich die IP-Adresse des Servers vortäuschen.

Eine Antwort trug ihren Beleg schon mit

Bei einem normalen NTP-Austausch sendet der Client eine Anfrage in Modus 3 samt Sendetimestamp. Der Server kopiert diesen Wert als Ursprungstimestamp in seine Antwort in Modus 4. Der TEST2-Prüfschritt vergleicht das Echo mit der noch offenen Anfrage. Der Wert ist keine kryptografische Serveridentität, funktioniert aber wie eine Nonce: Eine Antwort muss die konkrete Frage kennen.

Der damalige KoD-Zweig setzte diese Prüfung nicht durch. Die äußere Form der Serverantwort genügte. Damit wurde aus einer Rückmeldung ohne nachgewiesene Vorgeschichte ein Befehl über zukünftiges Verhalten. Die scheinbare Absenderadresse beantwortete „wem ähnelt dieses Paket?“, nicht „auf welche meiner Anfragen antwortet es?“.

Das Poll-Feld stellt Wartezeit als Zweierpotenz dar. Poll 17 bedeutet mindestens 2^17 Sekunden, also ungefähr 36 Stunden. Die untersuchten Clients nahmen sogar Werte oberhalb des vorgesehenen Bereichs an. Poll 25 entspricht grob einem Jahr. Der Sender zahlte die Kosten eines Pakets; der Empfänger verwaltete die Wirkung über zahlreiche Betriebszyklen.

RFC 5905 sah bei RATE eine Vergrößerung des Paketabstands vor. Eine eingearbeitete Errata korrigiert dabei die ursprünglich entgegengesetzte Wortwahl. Doch selbst die richtige Semantik ist unsicher, wenn ein Client weder Kontext noch Reichweite des Befehls kontrolliert.

Die Serverliste wurde einzeln geleert

Für den direkten Angriff waren die Adresse des Opfers und ein von ihm genutzter Zeitserver nötig. Die Studie zeigte auch einen Weg zum aktiven Server. Eine Modus-3-Anfrage an einen synchronisierten IPv4-Client konnte eine Modus-4-Antwort auslösen, deren Reference ID die aktuelle Serveradresse verriet.

Danach fälschte der Angreifer einen KoD im Namen dieses Servers. Wechselte der Client zum nächsten konfigurierten Server, wiederholte er den Ablauf. Der Aufwand bemaß sich nicht in Paketen pro Sekunde, sondern in einem akzeptierten Steuerpaket pro Zeitquelle. War die Liste leer, hatte die Uhr niemanden mehr zu fragen.

Im Labor lief ntpd 4.2.8p2 mit drei öffentlichen Servern. Nach etwa anderthalb Stunden hatte das Team den dritten KoD ausgelöst. Dann endete der Versuch, doch der Client blieb weitere 50 Stunden still. Das gefälschte Signal hatte eine Mindestwartezeit von ungefähr 36 Stunden verlangt.

Periodische KoDs konnten den Zustand verlängern. Schon die erste Runde zeigte jedoch die entscheidende Ökonomie: Der Angreifer erzeugte ein Ereignis, die Zielmaschine führte dessen Langzeitwirkung selbst aus. Volumenbasierte Erkennung sieht diese Art von Kontrolle nur schlecht.

Eine Messung der Studie fand 2015 mehr als 13 Millionen IPv4-Adressen, die auf die für den ersten Schritt geeignete Anfrage reagierten. Das ist weder eine heutige Bestandszahl noch der Nachweis von 13 Millionen vollständig verwundbaren Clients. KoD-Verarbeitung und ein sichtbarer synchronisierter IPv4-Server waren weitere Voraussetzungen.

Keine Korrektur ist keine frei gewählte Uhrzeit

Der gefälschte KoD stellte die Opferuhr nicht unmittelbar auf eine beliebige Zeit. Er unterbrach zukünftige Serverproben. Der Client lief danach auf seiner lokalen Zeitbasis weiter. Wie schnell deren Unsicherheit wuchs, hing von Oszillator, Virtualisierung, CPU-Last und Implementierung ab.

Ein stabiler physischer Rechner konnte langsam driften, eine belastete virtuelle Maschine deutlich schneller. Protokolle für Anmeldung, Zertifikatsprüfung, Protokollierung, verteilte Datenbanken und Zeitplanung haben außerdem unterschiedliche Toleranzen. Nachgewiesen war die Entfernung externer Korrektur, nicht derselbe Zeitfehler auf jedem Ziel.

Eine belastbare Untersuchung hält deshalb den letzten gültigen Sync, KoD-Code und Absender, das Ergebnis der Ursprungsprüfung, angeforderten und tatsächlich angewandten Poll-Wert, verbleibende Quellen und Holdover-Unsicherheit fest. Wenn Schweigen nur als „keine Daten“ erscheint, verschwindet auch die Ursache aus der Beobachtung.

Der Patch änderte den Preis des Angriffs

Die NTP-Project-Meldung zu Bug 2901 nennt Versionen vor 4.2.8p4 als vom direkten Spoofing betroffen; in der Entwicklungslinie gilt die Grenze vor 4.3.77. Mit p4 musste ein KoD einen gültigen Ursprungstimestamp tragen. Eine frei erfundene Off-Path-Antwort reichte nicht mehr.

Das war noch keine kryptografische Authentisierung. Die Forscher beschrieben eine teurere Restmethode, die „priming pump“: Viele Anfragen mit gefälschter Opferadresse bringen den echten Server dazu, selbst eine korrekt gebundene Ratenbegrenzung zu senden. Dafür war mehr Verkehr nötig; der erzielte Rückzug war typischerweise kürzer, etwa Poll 10 oder 15 Minuten, statt eines beliebigen Jahres.

RFC 8633 formulierte 2019 die zweite Grenze. Ein KoD darf nur mit gültigem Ursprungstimestamp angenommen werden. Außerdem soll der Client für RATE ein vernünftiges Maximum festlegen, niemals höher als Poll 13, also zwei Stunden. Schon eine einzelne Anfrage mit extremem Poll-Wert kann als Angriffshinweis gelten.

Anfragebindung klärt, zu welchem Austausch eine Antwort gehört. Authentisierung klärt die Identität des Gegenübers. Eine lokale Obergrenze begrenzt den Schaden selbst bei einer echten Antwort. Diese Kontrollen ersetzen einander nicht.

Goldberg verband Spezifikation und Betrieb

Goldbergs offizielles Profil an der Boston University beschreibt Forschung an der Schnittstelle von Kryptografie, Spieltheorie und Algorithmen mit Messung, Modellierung und Simulation von Netzen. Die NTP-Arbeit folgte genau diesem Muster: Das Protokoll lieferte die Sollbedeutung, Implementierungstests die reale Annahmebedingung, das Labor die Dauer des Zustands und die Messung die historischen Voraussetzungen im Internet.

Die Autorenschaft gehört Malhotra, Cohen, Brakke und Goldberg gemeinsam. Laut Projektseite begann die koordinierte Offenlegung am 20. August 2015. Network Time Foundation, NTPsec, Cisco und Red Hat lieferten Korrekturen vor der Veröffentlichung am 21. Oktober. Goldberg als Person zu porträtieren bedeutet nicht, die Teamleistung einer Einzelperson zuzuschreiben.

Die Betriebsfrage reicht weit über NTP hinaus. Wenn ein System „später erneut versuchen“, „stoppen“, „ablehnen“, „isolieren“ oder „abmelden“ empfängt: Welche Anfrage trägt den Befehl? Welche Identität darf ihn geben? Wer bestimmt die Dauer? Welche Wiederherstellung bleibt sichtbar?

Eine negative Antwort beschreibt nicht nur ein gegenwärtiges Problem; sie steuert die Zukunft. Der KoD-Angriff war billig zu erzeugen und teuer auszusitzen. Sichere Steuerung dreht das Verhältnis um: Kontext nachweisen, Rückzug begrenzen und den Moment protokollieren, in dem die Uhr aufhört zu fragen.

Quellen