Die Branch Prediction probiert nun zu ermitteln ob gesprungen wird oder nicht. Apple has released updates for iOS, macOS High Sierra, and Safari on Sierra and El Capitan to help defend against Spectre. Also von einer Webseite ausgenutzt werden können. Both issues can be addressed with software patches, but this is more effective for Meltdown than Spectre. Zeile: Testing performed when the Safari mitigations were released indicated that the mitigations had no measurable impact on the Speedometer and ARES-6 tests and an impact of less than 2.5% on the JetStream benchmark. Cache: Jeder Prozessor hat einen sehr schnellen Speicher direkt neben dem Core – dieser puffert den Inhalt des Speichers, somit kann häufig gelesener Speicher schneller gelesen werden – sogar ohne Zugriff auf den Memory Bus. By registering you agree to Darf ich mir die Frage erlauben, in wie fern die von dir erläuterten drei zusammenhängenden „Verursacher“ MMU, Cache und OoOE mit dem vielfach zitierten „speculative executing“ zusammenhängen? Auch POWER ist betroffen, SPARC mindestens von (Teilen von) Spectre. }. KASLR (Kernel Spache Adress Layout Randomization) stehen bestimmte Daten oft an bestimmten Adressen im Kernel Speicher – oder aber man kann diese Adressen relativ einfach rausfinden. Meltdown is a name given to an exploitation technique known as CVE-2017-5754 or "rogue data cache load." Depending on the cloud provider's infrastructure, it might be possible to steal data from other customers. Bei Punkt 6 wird dann entsprechend nicht um 1 erhöht sondern um 4096 – das Prinzip ist aber das gleiche. Aber mal von vorne mit einer Erklärung „Meltdown für Dummies“: Es spielen hier drei Systeme moderner CPUs (auch AMD und ARM) eine Rolle: 1. Das ganze ist noch nicht konkrekt (es gibt wohl noch keinen definitiven Angriff der dies ausnutzt) aber es wird wohl bald konkret werden, denn die Gefahr ist definitiv da und real. The difference is that Meltdown takes advantage of a specific Intel privilege escalation issue to do this, while Spectre uses the combination of Speculative Execution and Branch Prediction. Der sogenannte KPTI /KAISER Patch (kernel address isolation to have side-channels efficiently removed) hat aber einen Performance Verlust von 5% (neue CPUs) bis 30% (alte CPUs). Es ist kein wirklicher Fehler das nicht erlaubte im Cache zu haben, denn die Wahrscheinlichkeit dass das Betriebssystem selbst bald dort drauf zugreifen wird ist relativ hoch. Meltdown. Ich bin kein riesengroßer Fachmann und habe nur Grundkenntnisse über Prozessorarchitekturen aus dem Studium, aber mir war die Erklärung in den Massenmedien nicht genau genug und ich habe jetzt spontan nach einer Erklärung von Meltdown und Spectre gegoogelt und diesen Link gefunden. Heißt also: der geht von 0x00000000 – 0x80000000 und gleichzeitig auch den kompletten (geheimen) Kernel Speicher von 0x80000001 – 0xFFFFFFF. On January 8th Apple released updates for Safari on macOS and iOS to mitigate such timing-based techniques. durch Virenscanner erkannt werden könnten? Der Link zum Meltdown.pdf enthält URL-encodetes: https://meltdownattack.com/meltdown.pdf%E2%80%8B , der zu spectre auch: https://spectreattack.com/spectre.pdf%E2%80%8B. If you enjoy the essays, tutorials, podcast, and/or newsletter, Members get the newsletter every week instead of only twice a month, as well as access to the UL Slack Community, the UL Book Club, and more…. Das kostet wenig bis sehr wenig Performance, aber das Erzeugen einer neuen Prozessorgeneration kann Jahre dauern…. Meltdown-BD – AMD believes 32-bit systems using the BOUND instruction may be impacted and recommends implementing existing mitigations for Spectre v1 for such systems. You can also subscribe without commenting. Security researchers have recently uncovered security issues known by two names, Meltdown and Spectre. Und die einzige Möglichkeit das ganze zu beheben ist nun verschiedene weitere Sicherheitschecks einzubauen, entweder im Prozessor (Microcode) oder im Betriebssystem, aber das wird Performance kosten. Many people have pinged me asking for a dead-simple explanation of the differences (and similarities) between these two attacks. 6 es gibt Angriffsbeispiele die Javascript nutzen. Also erstes Mal: Danke. Außerdem prüft die MMU auch ob der Speicherzugriff erlaubt ist. Since exploiting many of these issues requires a malicious app to be loaded on your Mac or iOS device, we recommend downloading software only from trusted sources such as the App Store. Notes. zu Meltdown: Eine Erklärung für den Laien (oder lesefaulen!). The major risk consideration here is whether someone is able to run code on your machine. Danke für die Klarstellung! Both issues can be addressed with software patches, but this is more effective for Meltdown than Spectre. Das Grundziel des Angriffes ist also im Prinzip, via out of order executions „verbotene“ Kernel-Speicherzugriffe auszuführen und deren – „offiziell“ nicht zurückgegebenes – Ergebnis mit einer weiteren OOE mit einen „legalen“ Adresswert zu kaschieren bzw. In der Realität wird übrigens bei Punkt 4 nicht einfach A+B gerechnet sondern es wird multipliziert, also eher A+(B*4096) – weil die CPU immer Page weiße cacht, also 4096 Bytes auf einmal. Meltdown and Spectre work on personal computers, mobile devices, and in the cloud. To increase performance, the CPU predicts which path of a branch is most likely to be taken, and will speculatively … Außerdem würde dann beim erreichen der Zeile nochmal eine Rechteprüfung stattfinden müssen -> Doppelte Arbeit. 7. Analysis of these techniques revealed that while they are extremely difficult to exploit, even by an app running locally on a Mac or iOS device, they can be potentially exploited in JavaScript running in a web browser. Intel traf vor kurzem ein sehr bösartiger Bug: MELTDOWN. Apple Watch is unaffected by both Meltdown and Spectre. Das kostet Zeit die man natürlich nicht verschwenden will. Fehler gefunden und entfernt! (Prozess will drauf zugreifen, darfs nicht, Betriebssystem wird aufgerufen, greift drauf zu und gibt die Daten dem Prozess – wenn dieser die nötigen Rechte hat!). 150 e=6. Das Auslesen der Cachezugriffsgeschwindigkeit und damit bestimmen der Daten ist ein sogenannter Seitenkanal-Angriff mit dem Intel nicht gerechnet hatte. Bei ARM und AMD CPUs war der Fehler nicht nachvollziehbar. There are software patches for both vulnerabilities, but they’re more straightforward for Meltdown and more nuanced and difficult with Spectre. Meltdown breaks the most fundamental isolation between user applications and the operating system. Spekuliert wird noch, ob sogar die alten VAX-Rechner betroffen sind, weil x86 sich da einiges abgeguckt hat. Apple Watch is not affected by either Meltdown or Spectre. Mein Prozess hat seinen eigenen Speicher (fiktive Werte!!) Wird der Sprung zu Zeile 140 genommen, so muss ich die Befehle ab Zeile 140 schonmal laden, wird der Sprung nicht genommen so muss ich ab Zeile 30 weiter laden. 20 b=2 ja, ich denke ich hab es so verstanden, dass es für meine Kenntnisse und den Wissensdurst ausreicht Danke! The difference is that Meltdown takes advantage of a specific Intel privilege escalation issue to do this, while Spectre uses the combination of Speculative Execution and Branch Prediction. If the prediction was wrong, this speculative execution is rolled back in a way that is intended to be invisible to software. 6. Hallo Thomas, erstmal vielen Dank für die sehr anschauliche Erklärung! Speculative execution improves speed by operating on multiple instructions at once—possibly in a different order than when they entered the CPU. Auch diese Anweisung ist nicht erlaubt, wird aber (Out of Order Execution) ausgeführt werden.. also den technischen Ablauf habe ich soweit verstanden. This means regular systems with multiple accounts, virtualization environments, cloud, and yes—even just browsing the internet on a single-user system. As technology companies race to fix two major vulnerabilities found in computer chips, the ways in which those chips could theoretically be targeted by hackers are becoming clear. Apple has released security updates for macOS Sierra and El Capitan with mitigations for Meltdown. 40 f=5 Passwörter von Netzwerkverbindungen, Anmeldedaten, eben alles was auf dem Computer abläuft. 30 b=2 If you see any flaws in this simplification, please let me know so that I can correct them. Auch das kostet aber Zeit. Es ist quasi so dass die Out of Order Execution die Ergebnisse vorbereitet und erst dann wenn der Prozessor tatsächlich an die jeweilige Zeile kommt erst getestet wird ob diese Ergebnisse verwendet werden dürfen. Man hat also quasi die Eingangstür 10 Meter hoch und 3 Meter dick gemacht aber das Fenster offen gelassen . 10 a=1 Bei Spectre ist ein Trick dass man absichtlich den Sprung immer nimmt (oder immer nicht nimmt) um damit die Branch Prediction zu trainieren, so erwartet diese beim nächsten Mal auch dass wieder das gleiche passiert. To increase performance, the CPU predicts which path of a branch is most likely to be taken, and will speculatively continue execution down that path even before the branch is completed. I spend my time reading 3-6 books a month on security, technology, and society—and thinking about what 20 wenn a=0 dann gehe zu 140 Out of Order Execution: Moderne CPUs führen mehrere Programmzeilen gleichzeitig aus, auch welche die eventuell garnicht dran kommen oder erlaubt sind. Was kann ich aber tatsälich mit 0x25 anfangen? Darf man im Umkehrschluss vermuten, dass sich die Lücke kaum für einen Angriff auf ein Einzelplatzsystem (meinen Laptop) oder einen dedicated server lohnt – wenn ich es schaffe, dort Code zur Ausführung zu bringen, dann schreibe ich doch lieber gleich einen klassischen Virus? Spectre is a name covering multiple different exploitation techniques, including—at the time of this writing—CVE-2017-5753 or "bounds check bypass," and CVE-2017-5715 or "branch target injection," and CVE-2018-3639 or “speculative bounds bypass.” These techniques potentially make items in kernel memory available to user processes by taking advantage of a delay in the time it may take the CPU to check the validity of a memory access call. Das ist aber (Webhoster mit mehreren Kunden auf einem System) schon schlimm genug! Zum „Glück“ kann man aber wohl nur Daten lesen und keine schreiben. 7,065 branch-misses # 5.37% of all branches. -> Während ich also bei Zeile 10 gerade tatsächlich bin, führt die CPU schonmal Zeile 20 und Zeile 40 aus. 644,818 instructions # 0.30 insns per cycle genau dass ist ja der Fehler den Intel gemacht hat. Ja, momentan ist die Lage noch sehr undurchsichtig und die Fakten nicht ganz klar. Übrigens: Irrt sich die Branch Prediction so muss die CPU alle vorgeladenen Befehle die die Out of Order Execution schon geladen hat wieder verwerfen. Apple has already released mitigations in iOS 11.2, macOS 10.13.2, and tvOS 11.2 to help defend against Meltdown. Die Branch Prediction wird dann quasi nur „missbraucht“, um den Prozessor zu zwingen, meine illegalen Befehle auch wirklich als OOE auszuführen. Microsoft hat das Problem wohl schon in Windows gepatcht. might be coming next. Die Out of Order Execution kann diese Zugriffe durchführen, obwohl der eigentliche Prozess dies eigentlich nicht dürfte. Die Gefahr die nun davon ausgeht ist dass ein unpriviligierter Prozess alle Daten des Kernels lesen kann. Erzeuge dir eine legalen Speicherbereich, z.B. Apple released mitigations for Meltdown in iOS 11.2, macOS 10.13.2, and tvOS 11.2, and also in Security Update 2018-001 for macOS Sierra and Security Update 2018-001 for OS X El Capitan. These issues apply to all modern processors and affect nearly all computing devices and operating systems. The Meltdown and Spectre issues take advantage of a modern CPU performance feature called speculative execution. Alternativ müsste man die nicht erlaubten Ergebnisse aus dem Prozessorcache entfernen. The Spectre Paper. Genaugenommen führt man extra noch eine Abfrage im Programmcode so aus dass sie immer mit „true“ angesprungen wird. Our analysis suggests that it has the most potential to be exploited. × In the most basic definition, Spectre is a vulnerability allowing for arbitrary locations in the allocated memory of a program to be read. Ich würde gerne wissen, welche Daten man damit nun tatsächlich auslesen kann und ob man quasi Dateien oder Datensätze auch zusammenhängend konstruieren kann. .hide-if-no-js { vielen Dank. Many are saying an attacker needs a local account to take advantage of these, but it’s more accurate to say that they need to be able to execute code, which can happen a number of ways (including ads and JavaScript). . Speculative execution improves speed by operating on multiple instructions at once—possibly in a different order than when they entered the CPU. von 0x10000000 und nenne diesen A. Über „brut force“ (einfach hochzählen) abprüfen der legalen Adressbereiche, und dem gleichzeitigen Messen der Speicherzugriffszeit, finde ich irgendwann an der richtigen Adresse raus, dass diese Adresse im Cache gespeichert war und kann damit auf das Ergebnis der – eigentlich unzulässigen – Operation schlussfolgern. Die Branch Prediction kommt nun in folgendem Fall vor: neun 4. We continue to develop and test further mitigations within the operating system for the Spectre techniques. OoOE bedeutet ja dass der Prozessor Befehle ausführt die erst später kommen. Das große Problem jetzt scheint zu sein dass Intel diese Fehler direkt in die Hardware eingebaut hat – obwohl Prozessoren heutzutage selber nur programmiert sind (mit Microcode) gibt es eben doch Teile die direkt verdrahtet sind und auch vom Microcode nicht verändert werden können. Wenn du noch weitere Fragen hast, gerne her damit. About speculative execution vulnerabilities in ARM-based and Intel CPUs. Ich denke die Lücke ist wirklich einzigartig gefährlich für alle „shared“ Plattformen, auf die ich meinen eigenen Code hochladen darf (Cloud-Dienste auf shared servern, shared webhosting etc. Oder wären Webpages geeignet, Code auf meiner Maschine zur Ausführung zu bringen (Java-Script wenn die Seite angezeigt wird?!) watchOS did not require mitigation. Schlimmstenfalls sogar an Passwörter ranzukommen und somit deinen Computer zu übernehmen! Prinzipiell müsste bei der Out of Order Execution eine Rechteprüfung stattfinden – aber diese würde natürlich Zeit kosten und somit die Performance der OoOE verringern. So muss das sein. Ich bin kein riesengroßer Fachmann und habe nur Grundkenntnisse über Prozessorarchitekturen aus dem Studium, aber mir war die Erklärung in den Massenmedien nicht genau genug und ich habe jetzt spontan nach einer Erklärung von Meltdown und Spectre … our privacy policy. Es ist also so dass dieser Fehler nicht unbedingt wirklich ein Fehler ist. Nun lesen wir von Adresse 0x10000000 und schauen wir schnell die Antwort kommt – kommt sie sehr schnell so war B und damit der Inhalt der verbotenen Adresse 0x00. TL;DR: Both Meltdown and Spectre allow low-privilege users who execute code on your system to read sensitive information from memory via Speculative Execution. The Meltdown technique can enable a user process to read kernel memory. The Meltdown and Spectre exploitation techniques abuse speculative execution to access privileged memory—including that of the kernel—from a less-privileged user process such as a malicious app running on a device. The Meltdown Paper. 5. Die Lösung des Linux Kernels Teams ist übrigens dass jedes Mal bevor ein Programm läuft alle Kernel-Pages aus der MMU gelöscht werden, somit ist kein Zugriff mehr auf diese möglich (auch nicht per Out Of Order Execution) da die MMU selbst die physikalischen Adressen nicht mehr kennt. All Mac systems and iOS devices are affected, but there are no known exploits impacting customers at the time of this writing. etc.). Das macht aber nichts denn das vorbereiten einer Zeile kann trotzdem schonmal erfolgen. By Daniel Miessler in Information Security Created/Updated: December 5, 2018. https://meltdownattack.com/meltdown.pdf%E2%80%8B, https://spectreattack.com/spectre.pdf%E2%80%8B, Ein Python-Script mit Systemd als Daemon (Systemd tut garnicht weh… :-) ). Denn AMD CPUs brauchen den Patch ja eigentlich nicht. -> ANMERKUNG: Der Schritt 3 wird ausgeführt werden (Out of Order Execution) aber das Ergebnis wird nicht zurückgegeben werden weil das lesen dieser Adresse ja verboten ist. Dass Intel beides nicht gemacht hat ist auf Performance Gründen nachvollziehbar. Copyright © 2020 Apple Inc. All rights reserved. Here’s an extremely basic summary: The patching and mitigation story will continue to evolve, especially on the browser side since the web is based on client-side JavaScript execution. Schreibe das Ergebnis an die Adresse A + B, also in unserem Fall 0x10000025. ich kann das ganze nicht mit einem konkreten Beispiel belegen, aber trotz der sog. Bei Webhostern wo mehrere Kunden Webseiten oder virtuelle Server auf dem gleichen Hostsystem haben kann es sein dass ein Kunde alle Daten des Betriebssystems und aller anderen Kunden einsehen kann. Das sind z.B. Contact the vendor for additional information. Aber mir ist das alles sehr abstrakt. . Lese von der verbotenen Adresse 0x80001000, das Ergebnis ist B. Nehmen wir an wir bekämen hier: 0x25. Zeile 30 wird auch vorbereitet, kann aber nicht ausgeführt werden wir dazu ja b brauchen welches erst in Zeile 20 definiert wird. Wir erhöhen jetzt jedesmal die Adresse um 1, bis wir irgendwann feststellen dass wir bei 0x10000025 plötzlich sehr schnell lesen können. Thomas, Die Spectre Attacke läuft nach einem ähnlichen Schema ab, nur wird hier der Speicher eines anderen Prozesses ausgelesen indem man ihn dazu bringt von einer verbotenen Adresse mit Out of Order Execution zu lesen. Unklar ist bislang ob dieser Performance Verlust auch (unnötigerweise) bei AMD CPUs auftritt. Übrigens 2: Mit ‚perf stat‘ kann man unter Linux sehen wie gut die Branch Prediction arbeitet: Eine Frage habe ich, warum führt denn die MMU überhaupt Zugriffe auf unerlaubte Speicherbereiche aus, selbst wenn deren Inhalte nicht zurückgegeben werden? Deine E-Mail-Adresse wird nicht veröffentlicht. We continue to develop and test further mitigations for these issues. Also erstes Mal: Danke. Die MMU verbietet mir aber (als Userspace Prozess ohne Systemrechte) jeglichen Lesezugriff auf alle Speicherseiten ab 0x80000001. An Information Security Glossary of Terms, an updated list of interactions with AV software. Wenn in dieser Zeile eine von uns kontrollierte Speicheradresse vorkommt (per Eingabe die das Programm erlaubt) habe ich über den Cache die Möglichkeit zu sehen an welcher Adresse genau gelesen wurde, also im Prinzip das gleiche wie die Meltdown Attacke. Information about products not manufactured by Apple, or independent websites not controlled or tested by Apple, is provided without recommendation or endorsement. Ein sogenannter Pipeline Flush. Leere den kompletten Prozessor-Speichercache. 3. 30 c=b+2 Wie genau weiß man aber nicht. Quelle Meltdown: https://meltdownattack.com/meltdown.pdf, Quelle Spectre: https://spectreattack.com/spectre.pdf, „Es spielen hier drei Systeme moderner CPUs (auch AMD und ARM) eine Rolle“. 40 d=0. = „Damit wissen wir also: B war 0x25 – weil die CPU die entsprechende Adresse des Speichers im Cache hat!“. Die CPU muss hier nun entscheiden was wahrscheinlicher ist. 2018 … Damit stellt man eigentlich nur sicher dass die Zeile welche man ausführen will auch von der Out Of Order Execution ausgeführt wird, weil ja die Branch Prediction beschlossen hat dass es wahrscheinlich ist dass gesprungen (oder nicht) wird. Apple assumes no responsibility with regard to the selection, performance, or use of third-party websites or products. Jan 4, 2018 — Updated explanation to include JavaScript execution through the browser. Apple makes no representations regarding third-party website accuracy or reliability. Your risk will be different depending on the hardware platforms used, the operating systems running on those platforms, and your various patch levels at any given time, but the basic concept for these two attacks is that you should consider secrets to be attackable any place you’re allowing someone else’s code to run on an affected system. – obwohl diese Muster evtl. Das ganze führte zum Absturz der Intel Aktie von 7%, und wahrscheinlich dazu dass das Internet nicht nur komplett neu gestartet werden muss, sondern auch um 5% langsamer wird…. 131,663 branches # 146.950 M/sec 2. Performance Vergleich zwischen verschiedenen Programmiersprachen und Systemen? Wenn man dann irgendwann mal mit „false“ als Ergebnis daher kommt kann man darauf vertrauen dass die sogenante Branch prediction des Prozessors trotzdem den „true“ Zweig ausführen wird, weil sie erwartet dass wieder true rauskommt obwohl es diesmal nicht der Fall ist. Notify me of followup comments via e-mail. 10 a=0 Our testing with public benchmarks has shown that the changes in the December 2017 updates resulted in no measurable reduction in the performance of macOS and iOS as measured by the GeekBench 4 benchmark, or in common Web browsing benchmarks such as Speedometer, JetStream, and ARES-6. display: none !important; New Variant of Spectre v1 – referred by researchers as a Meltdown variant. 1. Jetzt fangen wir wieder bei 1 an, nur lesen wir diesmal im Punkt 5 nicht von 0x10000000 sondern von 0x10000001 und messen auch hier wieder die Zeit. Ebenfalls besten Dank für diese Erklärungen. Man kann also relativ sicher die Out of Order Execution des Prozessors dazu bringen eine bestimmte Zeile auszuführen obwohl es nicht erlaubt ist. Virtueller Speicher: Jeder Speicherzugriff eines Prozesses wird von der CPU Memory Einheit (MMU) umgewandelt auf eine echte Adresse. watchOS is unaffected by Spectre. 2. Der Fehler konnte so nur bei Intel CPUs nachgestellt werden. 140 c=1 Security updates for macOS Sierra and OS X El Capitan also include mitigations for Meltdown. Gibt es diese OoOE’s nur wegen speculative executing oder wie ist das? (ich habe so Hacke mal Pi verstanden, was das Ziel von speculative executing ist) Cache und MMU hängen ja erstmal nicht unmittelbar damit zusammen, die gibt es ja auch ohne spekulative Operationen, also nehme ich mal an, dass es vor allem mit den out of order executions zusammenhängt. The Meltdown and Spectre issues take advantage of a modern CPU performance feature called speculative execution. Oder aber man produziert eine neue Generation Prozessorn die diesen Fehler direkt in Hardware abprüfen. Damit wissen wir also: B war 0x25 – weil die CPU die entsprechende Adresse des Speichers im Cache hat!. Somit ist es ein einfacher Weg für Viren und Malware größere Probleme auszulösen. in einem legalen Adresswert zu „verstecken“. Prinzipiell geht es hier auf deinem lokalen Rechner eher darum dass ein Prozess dadurch seine Rechte ausweiten kann und Zugriff auf Informationen hat die er nicht haben dürfte. 3. To help defend against Spectre, Apple has released mitigations in iOS 11.2.2, the macOS High Sierra 10.13.2 Supplemental Update, and Safari 11.0.2 for macOS Sierra and OS X El Capitan.