News-Mitteilungen

Spectre, Meltdown und Zitronen

meltdown.png
Forscher der TU Graz, University of Pennsylvania und Adelaide haben in Zusammenarbeit mit unabhängigen Forschern und Industrieunternehmen eine gravierende Sicherheitslücke in Prozessoren (CPUs) entdeckt und dazu zwei Angriffsszenarien – Spectre [1] und Meltdown [2], veröffentlicht. Spectre wurde zeitgleich auch noch von Google’s Project Zero entdeckt [3]. Die CPU ist ein Baustein, der in jedem Computer verbaut ist, daher können die Auswirkungen dieser Entdeckung besonders gravierend sein. Betroffen sind, mit unterschiedlichem Missbrauchspotenzial, unter anderem Chips der Marken Intel, AMD und ARM, welche bereits in Milliarden von Geräten zu finden sind. Im Folgenden versuchen wir, die Sicherheitslücke und daraus resultierenden Angriffe verständlich zu machen:
Spectre ist der erste Angriff und nutzt eine Eigenschaft von modernen Prozessoren aus, die sich „Branch Prediction“ nennt. Machen wir uns klar: Computer müssen Werte zwischenspeichern, genau wie wir Menschen. Rechnet ein Mensch eine einfache Rechenaufgabe wie 1 + 3 aus, so hält er die Werte 1 und 3 im Kopf fest und berechnet dann als Ergebnis die Zahl 4. Der Prozessor hat für dieses Zwischenspeichern kein Gehirn, sondern Speicherbereiche, die für unterschiedliche Arten von Berechnungen genutzt werden. Je nach Berechnung werden diese Bereiche gewechselt.
Der Prozessor versucht nun mit Hilfe von „Branch Prediction“ vorherzusagen, welche Berechnungen er wann und wo in Zukunft ausführen muss und „rechnet vor“. Ist seine Vorhersage korrekt, kann er die Berechnung verwenden und ausführen. Ist sie falsch, verwirft er sie. Spectre zwingt den Prozessor nun falsche Vorhersagen als korrekt einzustufen und auszuführen, um an private Daten, wie beispielsweise Passwörter, zu kommen.
Meltdown nutzt in erster Linie sogenannte „Out-Of-Order“-Execution aus. Dies ist eine Technik, die von Prozessoren verwendet wird, um möglichst optimale Auslastungen zu schaffen. Anstatt eine Gruppe von Berechnungen in einer vorgegebenen Reihenfolge auszurechnen, werden Berechnungen aufgrund der vorhandenen Ressourcen durchgeführt. Stellen wir uns statt Berechnungen viele Bäuerinnen und Bauern vor, die Birnen und Zitronen herstellen. Birnen können immer dann gepflückt werden, sobald sie reif sind. Um Zitronen herzustellen, benötigt man jedoch Dünger, der ausgestreut wird. Der Dünger wird in unregelmäßigen Abständen geliefert. Dies liegt daran, dass die Bauern ein Geheimnis daraus machen, in welcher Reihenfolge Sie die Bäume anpflanzen, da sie über die Jahre ein perfektes Verhältnis von Birnen zu Zitronen ermittelt haben. Es wird nur Zitrone gepflanzt, wenn auch Dünger zur Verfügung steht. Die Zitrone wird also „out-of-order“ produziert.
Ein Angreifer möchte jetzt wissen, wo die Zitronenbäume stehen. Er hat eine exakte Kopie der Felder mit Hilfe eines Satellitenbildes angelegt. Die Bäume stehen in den exakt selben Abständen und sind in Reihen angeordnet. Der Angreifer beobachtet, wann Dünger an die Reihen angeliefert wird. Da die Bäuerinnen und Bauern jeweils nur eine Flasche Dünger tragen können, kann er die Zeiten messen, die sie brauchen, um zum Baum und zurück zu rennen. Dies wiederholt er auf seinem eigenen Feld, indem er die Zeit stoppt und losläuft bis die Hälfte der Zeit vergangen ist. Dann pflanzt er Zitronen und düngt sie. Dies wiederholt er für alle Reihen und hat am Ende ein exaktes Abbild der geheimen Anordnung der Zitronen und Birnenbäume.
Natürlich werden in Prozessoren keine Bäume gepflanzt. Es handelt sich um Berechnungen, die Geheimnisse preisgeben, obwohl sie es nicht sollten, beispielsweise Passwörter aus dem Firefox-Passwort Manager s. Abbildung 1.
Beide Lücken haben technisch gravierende Auswirkungen, da beliebige private Daten, beispielsweise Passwörter, ausgelesen werden können. Microsoft, Mozilla und Google arbeiten bereits an Updates, die ihre Produkte vor den Auswirkungen der veröffentlichen Angriffe schützen.
[1]https://spectreattack.com/spectre.pdf [2]https://meltdownattack.com/meltdown.pdf [3]https://googleprojectzero.blogspot.de/2018/01/reading-privileged-memory-with-side.html

WEITERE
ARTIKEL