Zurück zum Blog
dns Veröffentlicht: AEU DNS Newsroom

Cloudflares Workers im Kampf gegen Spectre: Wie serverloser Code vor CPU-Side-Channel-Angriffen geschützt wird

Cloudflares Workers im Kampf gegen Spectre: Wie serverloser Code vor CPU-Side-Channel-Angriffen geschützt wird

Cloudflare erklärt, wie seine Workers-Plattform frühere Bedrohungen wie Spectre neutralisiert, indem sie Date-Einschränkungen, Single-Thread-Ausführung und dynamische Prozessisolierung nutzt, um serverlosen Code vor Side-Channel-Angriffen zu schützen.

Cloudflare betreibt ein globales Netzwerk, das Website-Inhalte speichert und ausliefert, und seine Workers-Plattform ermöglicht es Entwicklern, Code in diesem Netzwerk auszuführen. Aber Code in der Cloud auszuführen bedeutet, Sicherheit auf jeder Ebene zu berücksichtigen. Eine der größten Herausforderungen ist die Verteidigung gegen Prozessor-Schwachstellen wie Spectre. In einem detaillierten Blogbeitrag vom 29. Juli 2020 erklärte Kenton Varda von Cloudflare, wie die Workers-Plattform diese Bedrohungen entschärft. Sein Beitrag behandelt eine Vielzahl von Techniken, darunter Einschränkungen bei Zeitmessung, Threading und Prozessisolierung.

Die erste Waffe gegen Side-Channel-Angriffe besteht darin, den Code daran zu hindern, die Zeit lokal zu messen. In Workers wird das Date-Objekt so gezähmt, dass die Start- und Endwerte jeder Operation immer exakt gleich sind. Dies entfernt das grundlegende Werkzeug, das ein Angreifer benötigen würde, um einen Timing-Side-Channel aufzubauen. Ein Side-Channel ist eine Möglichkeit, geheime Daten zu erschließen, indem indirekte Hinweise beobachtet werden, wie zum Beispiel wie lange eine Berechnung dauert. Cloudflare implementierte dies Mitte 2017, lange bevor Spectre öffentlich bekannt gegeben wurde. Das Team war von Anfang an besorgt über Timing-Side-Channels und entwarf das System mit dieser Sorge im Hinterkopf.

Workers können auch kein Multi-Threading oder gemeinsamen Speicher verwenden. Multi-Threading bedeutet, mehrere Aufgaben gleichzeitig auszuführen, und gemeinsamer Speicher bedeutet, dass mehrere Threads auf dieselben Daten zugreifen können. Wenn eines davon erlaubt wäre, könnte ein bösartiger Worker Threads gegeneinander antreten lassen, um einen versteckten Timer zu erzeugen. Daher wird jedes Ereignis in einem einzigen Thread verarbeitet, und selbst wenn mehrere Worker dieselbe Anfrage bearbeiten, laufen sie nacheinander auf demselben Thread. Dies verhindert die Erstellung impliziter Timer.

Diese Maßnahmen verhindern, dass Code seine eigene Ausführungszeit misst. Aber ein Angreifer kann sie immer noch remote messen. Der HTTP-Client, der eine Anfrage sendet, kann einfach die Zeit messen, die für eine Antwort benötigt wird. Diese Messung ist verrauscht, weil der Internetverkehr unvorhersehbar ist. Aber ein Angreifer könnte den Angriff viele Male durchführen und die Ergebnisse mitteln, um das Rauschen herauszufiltern. Cloudflare hat bereits in Betracht gezogen, den Anwendungszustand zwischen Anfragen zurückzusetzen, aber das hilft nicht, weil der Client des Angreifers den Zustand speichern und bei der nächsten Anfrage zurücksenden kann. Cloudflare sagt, dass es mit Hilfe prominenter Spectre-Experten nicht in der Lage war, einen echten Angriff zu erzeugen, der in der Produktion funktioniert. Doch das Fehlen eines funktionierenden Angriffs hält das Unternehmen nicht davon ab, eine Verteidigung in der Tiefe aufzubauen. Es testet derzeit fortschrittlichere Maßnahmen.

Eine dieser Maßnahmen ist die dynamische Prozessisolierung. Spectre-Angriffe sind von Natur aus sehr langsam. Sie brauchen Stunden oder Wochen, um erfolgreich zu sein. Aber selbst nach einer Sekunde Ausführung hinterlässt ein Angriff eine Signatur. Spectre-Angreifer erzeugen absichtlich unnatürliche Leistungsmuster, insbesondere wenn sie gezwungen sind, Milliarden von Schleifen zu durchlaufen, um frühere Verteidigungen zu überwinden. Diese Muster erscheinen in CPU-Leistungszählern, speziellen Registern, die Statistiken wie Cache-Fehler und Branch-Predictions aufzeichnen.

Das Problem mit Leistungszählern ist, dass legitimer Code auch seltsam aussehen kann. Ein Programm mit schlechter Leistung könnte als verdächtig eingestuft werden. Cloudflare möchte solche Programme nicht abschalten. Stattdessen kann es einen Worker, der verdächtige Leistung zeigt, in einen eigenen Prozess umplanen. Ein Prozess ist ein separater Speicherbereich für ein Programm. Sobald ein Worker in einem eigenen Prozess ist, können die integrierten Spectre-Abwehrmechanismen des Betriebssystems greifen, ähnlich wie bei Desktop-Webbrowsern. Dies schützt den Worker, ohne seine Funktionalität zu beeinträchtigen, obwohl ein geringer Overhead entsteht.

Jeden Worker zu isolieren wäre viel zu teuer. Aber ein paar zu isolieren ist akzeptabel. Und je mehr CPU-Zeit ein Worker verbraucht, desto geringer werden die relativen Kosten der Isolierung. Daher verwendet Cloudflare Prozessisolierung für jeden Worker, der CPU-intensiv ist. Es ist auch in Ordnung, einen Worker jederzeit umzuplanen, da die Plattform flexibel ist.

Cloudflare arbeitet seit einem Jahr mit Experten der Technischen Universität Graz in Österreich an dieser Methode. Dieses Team hat die Spectre-Schwachstelle mitentdeckt und war für eine große Anzahl von Folgeentdeckungen verantwortlich. Die Zusammenarbeit unterstreicht die Bedeutung der Forschung, um Sicherheitsbedrohungen einen Schritt voraus zu sein.

Für Website-Besitzer und IT-Teams zeigt dieser tiefe Einblick, wie komplex Sicherheit hinter den Kulissen sein kann. Während Cloudflare seine Workers vor Side-Channel-Angriffen auf CPU-Ebene schützt, können Sie eine weitere Schutzschicht für Ihren eigenen Datenverkehr hinzufügen, indem Sie ein datenschutzorientiertes DNS wie AEU DNS verwenden, das bösartige Domains blockiert und Ihre DNS-Abfragen verschlüsselt. So stoppt die Anfrage, selbst wenn Angreifer versuchen, Sie über bekannte schlechte Websites zu erreichen, bevor sie Ihren Browser erreicht.

Begriffe erklärt

Spectre
Eine Sicherheitslücke in modernen Computerprozessoren, die es einem bösartigen Programm ermöglicht, möglicherweise Daten aus dem Speicher eines anderen Programms zu lesen.
side channel
Ein indirekter Weg, Informationen zu stehlen, indem Hinweise wie die Dauer einer Berechnung oder der Stromverbrauch beobachtet werden.
serverless
Ein Cloud-Computing-Modell, bei dem der Anbieter die Server verwaltet und automatisch skaliert, sodass Entwickler Code ausführen können, ohne über Infrastruktur nachdenken zu müssen.
Workers
Cloudflares serverlose Computing-Plattform, die es Entwicklern ermöglicht, JavaScript-Code im globalen Netzwerk von Cloudflare auszuführen.
process isolation
Jedes Programm wird in einem eigenen separaten Speicherbereich ausgeführt, sodass ein Sicherheitsproblem in einem Programm nicht leicht ein anderes beeinträchtigen kann.

So schützen Sie sich

  1. Aktivieren Sie automatische Updates für Ihr Betriebssystem und Ihren Webbrowser, da Patches für Prozessor-Schwachstellen wie Spectre oft auf diese Weise bereitgestellt werden.
  2. Verwenden Sie einen datenschutzorientierten DNS-Dienst wie AEU DNS, um bösartige Domains zu blockieren, die mit Cyberangriffen in Verbindung stehen könnten.
  3. Vermeiden Sie das Herunterladen und Installieren von Software aus nicht vertrauenswürdigen Quellen, da Angreifer sie nutzen können, um Side-Channel-Schwachstellen auszunutzen.
  4. Überprüfen Sie die Sicherheitseinstellungen Ihres Browsers, um sicherzustellen, dass Funktionen wie Site-Isolation oder Prozessisolierung aktiviert sind. In Chrome ist dies standardmäßig aktiviert; überprüfen Sie es unter Einstellungen > Da

Quelle: blog.cloudflare.com

Holen Sie sich privates, verschlüsseltes DNS