SB 18:01 - Bug erlaubt das Auslesen von Speicherbereichen (Spectre, Meltdown, CVE-2017-5753, CVE-2017-5715, CVE-2017-5754)

Am 03. Januar hat das Projekt Zero - Team ein Advisory veröffentlicht, indem sie vor einer Reihe Sicherheitslücken warnen, mit der sich auf allen modernen CPUs geschützte Speicherbereiche von privilegierten Prozessen auslesen lassen (Spectre, Meltdown)

"We have discovered that CPU data cache timing can be abused to efficiently leak information out of mis-speculated execution, leading to (at worst) arbitrary virtual memory read vulnerabilities across local security boundaries in various contexts.

Variants of this issue are known to affect many modern processors, including certain processors by Intel, AMD and ARM. For a few Intel and AMD CPU models, we have exploits that work against real software. We reported this issue to Intel, AMD and ARM on 2017-06-01 (1)

Betroffen sind davon Server- und Desktopversionen aller Betriebssysteme (Windows, OSX, Linux, *BSD), wobei die Bedrohungslage für die einzelnen Systeme unterschiedlich zu bewerten ist.

Detaillierte Informationen zu den Sicherheitslücken geben Google's Project Zero Blog und die eigens eingerichteten Webseiten mit Erklärungen und FAQ unter spectreattack.com (PDF) und meltdownattack.com (PDF)

Dass bereits POCs existieren zeigt Michael Schwarz in einem kurzen Video: Using #Meltdown to steal passwords in real time

Für alle, die sich einen schnellen Überblick verschaffen wollen hat Daniel Mieser (8) eine kurze Einführung erstellt:

dm explanation

A Simple Explanation of the Differences Between Meltdown and Spectre by D.Miessler (8)

Updates

  • 2018-01-06 - mehr Quellen und Links zu weiteren Informationen
  • 2018-01-09 - POCs getestet

Mitigation

Da es sich hier um einen Hardware-Bug handelt müssen die jeweiligen Betriebssysteme gepatcht werden, Updates sind umgehend einzuspielen.

Einschätzung der Bedrohungslage

Nachfolgend eine Einschätzung für die einzelnen Systeme auf einer Skala von

  • 0 - unkritisch
  • 1 - Lücke nur durch lokalen Rootzugriff ausnutzbar
  • 2 - Lücke nur durch lokalen User ausnutzbar
  • 3 - Lücke Remote durch lokalen User ausnutzbar (Client)
  • 4 - Lücke Remote User ausnutzbar (Server, Cloud)
  • 5 - Lücke Remote unprivilegiert ausnutzbar (wie z.B. Heartbleed)

Desktops, Notebooks, Smartphones

Per Default ist die Lücke nicht aus der Ferne ausnutzbar, kann aber auf Clients z.B. durch einen Browserbug oder bösartiges Javascript ausgenutzt werden.

Besondere Vorsicht ist bei unbekannten Seiten geboten, im Zweifelsfall sollte Javascript deaktiviert werden.

Für Chrome gibt es einen Workaround (via Googles FAQ) Chrome: Full Site Isolation can be turned on by enabling a flag found at chrome://flags/#enable-site-per-process

Bare Metal Server

  • Bedrohungslevel: 2
  • POC bestätigt durch zeroBS

Bare-Metal-Server sind nur durch lokale User gefährdet, sofern diese in der Lage sind, eigene Programme zu installieren und Code auszuführen.

private Cloud

  • Bedrohungslevel: 2
  • POC bestätigt durch zeroBS

Private-Cloud-Server sind nur durch lokale User gefährdet, sofern diese in der Lage sind, eigene Programme zu installieren und Code auszuführen.

public Cloud, Shared Hosts

  • Bedrohungslevel: 4
  • POC bestätigt durch zeroBS

User von Shared Hosts oder Public Clouds sind extrem gefährdet, da andere Benutzer Speicherbereiche auslesen können.

Dies gilt vornehmlich für Paravirtualisierung (XEN, Windows HA) und Container (Docker, Kubernetes, LXC).

Hier obliegt es den Providern und Anbietern, die Lücken zu patchen und Systeme neuzustarten.

Patch - großen Einfluß auf die Performance

Patches der verschiedenen Hersteller können starken Einfluß auf die Performance haben. Aktuelle Linux-Patches zeigen eine bis zu 50% erhöhte CPU-Auslastung, die durch die notwendigen Kontext-Switches hervorgerufen wird, siehe auch: reddit: Datacenter Performance Questions

mdown impact

Meltdown-Patch - Auswirkungen auf die Performance (7)

Proof-of-Concepts

Wir haben uns einige POCs angesehen, auf eigener Infrastruktur (Bare Metal, Cloud, Docker) getestet und können die Bedrohungslage Public Cloud, Shared Hosting und Docker/Container-Umgebungen bestätigen:

Docker (aktuelles Debian, vor dem Update)

sirius@60c71a20378d:~/meltdown: ./meltdown-checker 
Unable to find symbol sys_call_table in /proc/kallsyms
Falling back on the alternative symbol map file (usually requires root permission): /boot/System.map-3.16.0-0.bpo.4-amd64...
Checking whether system is affected by Variant 3: rogue data cache load (CVE-2017-5754), a.k.a MELTDOWN ...
Checking syscall table (sys_call_table) found at address 0xffffffff81601440 ...
0xffffffff811c08f0 -> That's SyS_read

System affected! Please consider upgrading your kernel to one that is patched with KPTI/KAISER
Check https://security.googleblog.com/2018/01/todays-cpu-vulnerability-what-you-need.html for more details

Cloud/KVM (aktuelles Debian, vor dem Update)

[ slater@ck1 :~/meltdown] > make
g++ -I. --std=c++11 -O0 --no-pie -fPIC -mrtm -DHAS_COMPILER_RTM_SUPPORT -c -o meltdown_checker.o meltdown_checker.cc 
g++ -I. --std=c++11 -O0 --no-pie -fPIC -mrtm -DHAS_COMPILER_RTM_SUPPORT -o meltdown-checker meltdown_checker.o


[ slater@ck1 :~/meltdown] > ./meltdown-checker 
Unable to find symbol sys_call_table in /proc/kallsyms
Falling back on the alternative symbol map file (usually requires root permission): /boot/System.map-3.16.0-4-amd64...
Checking whether system is affected by Variant 3: rogue data cache load (CVE-2017-5754), a.k.a MELTDOWN ...
Checking syscall table (sys_call_table) found at address 0xffffffff81601440 ...
so far so good (i.e. meltdown safe) ...
0xffffffff811affa0 -> That's SyS_write

System affected! Please consider upgrading your kernel to one that is patched with KPTI/KAISER
Check https://security.googleblog.com/2018/01/todays-cpu-vulnerability-what-you-need.html for more details

Weitere POCs:

Weiterführende Quellen und Informationen

Neben den unten angegebenen Referenzen gibt es weiter Seiten, die Links und Informationen zu Meltdown und Spectre sammeln.

Auf Reddit gibt es einen Mega-Thread zu dem Thema

BleepingComputer pflegt eine Liste mit Links zu Advisories und Patches

Reddit-TOC

Relevant Sub-Threads and links on Meltdown & Spectre:
  US CERT link on the subject
  Guidance to protect against Meltdown
  Datacenter Performance Question
  Hypervisor Patching
  Useful Links
  Twitter Thread
  Powershell script
  Another Windows Update Thread
  AV Compatibility
  Deciding when not to patch
  Microsoft rebooting VMs
  Intel's response to Security Findings
  AWS' response to Security Findings
  Lansweeper Report
  VMWare Security Advisory
  VMWare Blog on the subject
  Cisco's Security Advisory
  Juniper's Statement
  Jake Williams Article on suggested guidance
  HPE's customer bulletin
  /R/Networking Vendor Response Thread
  IBM Cloud's Response
  Dell's KB Bulletin
  Chromium advice for web developers

Referenzen

  1. Project Zero: Reading privileged memory with a side-channel
  2. spectreattack.com (PDF)
  3. meltdownattack.com (PDF)
  4. Apple: About speculative execution vulnerabilities in ARM-based and Intel CPUs
  5. Google’s Mitigations Against CPU Speculative Execution Attack Methods
  6. M. Schwarz: Using #Meltdown to steal passwords in real time
  7. A. Singh: This is what the #Meltdown patch looks like.
  8. D. Miessler: A Simple Explanation of the Differences Between Meltdown and Spectre
  9. reddit:Stealing passwords via Meltdown vulnerability in real-time
  10. reddit: Meltdown and Spectre (CPU bugs)
  11. Hackernews: Reading privileged memory with a side-channel
  12. reddit: Meltdown & Spectre Megathread (self.sysadmin)
  13. Mozilla: Mitigations landing for new class of timing attack
  14. Bleepingcomputer: List of Meltdown and Spectre Vulnerability Advisories, Patches, & Updates