Anleitung zum Beheben von Sicherheitsrisiken durch Seitenkanalangriffe mit spekulativer Ausführung in AzureGuidance for mitigating speculative execution side-channel vulnerabilities in Azure

Letzte Aktualisierung des Dokuments: 4. Juni 2019, 15:00 Uhr (PST).Last document update: 4 June 2019 3:00 PM PST.

Eine öffentlich gemachte neue Art von CPU-Sicherheitsrisiken, die als „Seitenkanalangriffe mit spekulativer Ausführung“ bezeichnet wird, hatte Fragen von Kunden zur Folge, die sich mehr Klarheit wünschen.The disclosure of a new class of CPU vulnerabilities known as speculative execution side-channel attacks has resulted in questions from customers seeking more clarity.

Microsoft hat Maßnahmen zur Minderung dieser Risiken für alle Clouddienste bereitgestellt.Microsoft has deployed mitigations across all our cloud services. Die Infrastruktur, in der Azure ausgeführt und Kundenworkloads voneinander isoliert werden, ist geschützt.The infrastructure that runs Azure and isolates customer workloads from each other is protected. Dies bedeutet, dass ein potenzieller Angreifer, der dieselbe Infrastruktur nutzt, Ihre Anwendung über diese Sicherheitsrisiken nicht angreifen kann.This means that a potential attacker using the same infrastructure can’t attack your application using these vulnerabilities.

In Azure wird nach Möglichkeit die Wartung mit Speicherbeibehaltung genutzt, um die Auswirkungen für Kunden möglichst gering zu halten und auf Neustarts verzichten zu können.Azure is using memory preserving maintenance whenever possible, to minimize customer impact and eliminate the need for reboots. In Azure werden diese Methoden eingesetzt, wenn systemweite Updates am Host vorgenommen werden, um unsere Kunden zu schützen.Azure will continue utilizing these methods when making systemwide updates to the host and protect our customers.

Weitere Informationen dazu, wie die Sicherheit in alle Bereiche von Azure integriert ist, finden Sie auf der Website mit der Dokumentation zur Azure-Sicherheit.More information about how security is integrated into every aspect of Azure is available on the Azure Security Documentation site.

Hinweis

Seit der ersten Veröffentlichung dieses Dokuments wurden mehrere Varianten dieser Sicherheitsrisikoklasse öffentlich gemacht.Since this document was first published, multiple variants of this vulnerability class have been disclosed. Microsoft investiert weiterhin stark in den Schutz seiner Kunden und in die Bereitstellung von Anleitungen.Microsoft continues to be heavily invested in protecting our customers and providing guidance. Diese Seite wird aktualisiert, wenn weitere Fehlerbehebungen veröffentlicht werden.This page will be updated as we continue to release further fixes.

Am 14. Mai 2019 machte Intel eine Reihe von neuen spekulativen Sicherheitsrisiken vom Typ „Seitenkanalangriffe mit spekulativer Ausführung“ öffentlich, die als „Microarchitectural Data Sampling“ (MDS, siehe ADV190013 im Microsoft-Leitfaden zum Thema Sicherheit) bezeichnet werden und denen mehrere CVEs zugewiesen wurden:On May 14, 2019, Intel disclosed a new set of speculative execution side channel vulnerability known as Microarchitectural Data Sampling (MDS see the Microsoft Security Guidance ADV190013), which has been assigned multiple CVEs:

  • CVE-2019-11091 – Microarchitectural Data Sampling Uncacheable Memory (MDSUM)CVE-2019-11091 - Microarchitectural Data Sampling Uncacheable Memory (MDSUM)
  • CVE-2018-12126 – Microarchitectural Store Buffer Data Sampling (MSBDS)CVE-2018-12126 - Microarchitectural Store Buffer Data Sampling (MSBDS)
  • CVE-2018-12127 – Microarchitectural Load Port Data Sampling (MLPDS)CVE-2018-12127 - Microarchitectural Load Port Data Sampling (MLPDS)
  • CVE-2018-12130 – Microarchitectural Fill Buffer Data Sampling (MFBDS)CVE-2018-12130 - Microarchitectural Fill Buffer Data Sampling (MFBDS)

Dieses Sicherheitsrisiko betrifft Intel® Core®-Prozessoren und Intel® Xeon®-Prozessoren.This vulnerability affects Intel® Core® processors and Intel® Xeon® processors. Microsoft Azure hat Betriebssystemupdates veröffentlicht und setzt neuen Microcode, sobald er von Intel zur Verfügung gestellt wird, in unserer gesamten Flotte ein, um unsere Kunden vor diesen neuen Sicherheitsrisiken zu schützen.Microsoft Azure has released operating system updates and is deploying new microcode, as it is made available by Intel, throughout our fleet to protect our customers against these new vulnerabilities. Azure arbeitet eng mit Intel zusammen, um den neuen Microcode vor seiner offiziellen Freigabe auf der Plattform zu testen und zu überprüfen.Azure is closely working with Intel to test and validate the new microcode prior to its official release on the platform.

Kunden, die auf ihrem virtuellen Computer nicht vertrauenswürdigen Code ausführen, müssen Maßnahmen ergreifen, um sich vor diesen Sicherheitsrisiken zu schützen. Dazu müssen sie weiterlesen, um weitere Anleitungen zu allen Sicherheitsrisiken durch Seitenkanalangriffe mit spekulativer Ausführung zu erhalten (Microsoft-Sicherheitsempfehlung ADV 180002, 180018 und 190013).Customers that are running untrusted code within their VM need to take action to protect against these vulnerabilities by reading below for additional guidance on all speculative execution side-channel vulnerabilities (Microsoft Advisories ADV 180002, 180018, and 190013).

Andere Kunden sollten diese Sicherheitsrisiken aus einer Perspektive der tiefgehende Verteidigung bewerten und die Auswirkungen der gewählten Konfiguration auf Sicherheit und Leistung berücksichtigen.Other customers should evaluate these vulnerabilities from a Defense in Depth perspective and consider the security and performance implications of their chosen configuration.

Betriebssysteme auf dem neuesten Stand haltenKeeping your operating systems up-to-date

Ein Betriebssystemupdate ist zwar nicht erforderlich, um Ihre in Azure ausgeführten Anwendungen gegenüber anderen Azure-Kunden zu isolieren, aber es gilt immer als bewährte Methode, die Software auf dem neuesten Stand zu halten.While an OS update is not required to isolate your applications running on Azure from other Azure customers, it is always a best practice to keep your software up-to-date. Die aktuellen Sicherheitsrollups für Windows enthalten Maßnahmen zur Risikominderung für mehrere Sicherheitsrisiken vom Typ „Seitenkanalangriffe mit spekulativer Ausführung“.The latest Security Rollups for Windows contain mitigations for several speculative execution side channel vulnerabilities. Auch für Linux-Distributionen wurde mehrere Updates zu diesen Sicherheitsrisiken veröffentlicht.Similarly, Linux distributions have released multiple updates to address these vulnerabilities. Hier sind unsere empfohlenen Maßnahmen zur Aktualisierung Ihres Betriebssystems aufgeführt:Here are our recommended actions to update your operating system:

AngebotOffering Empfohlene MaßnahmeRecommended Action
Azure Cloud ServicesAzure Cloud Services Aktivieren Sie automatische Updates, oder stellen Sie sicher, dass das neueste Gastbetriebssystem ausgeführt wird.Enable auto update or ensure you are running the newest Guest OS.
Virtuelle Azure Linux-ComputerAzure Linux Virtual Machines Installieren Sie Updates vom Anbieter Ihres Betriebssystems.Install updates from your operating system provider. Weitere Informationen finden Sie unter Linux in diesem Dokument.For more information, see Linux later in this document.
Virtuelle Azure Windows-ComputerAzure Windows Virtual Machines Installieren Sie das aktuelle Sicherheitsrollup.Install the latest security rollup.
Weitere Azure PaaS-DiensteOther Azure PaaS Services Für Kunden, die diese Dienste verwenden, sind keine Maßnahmen erforderlich.There is no action needed for customers using these services. Azure hält Ihre Betriebssystemversionen automatisch auf dem neuesten Stand.Azure automatically keeps your OS versions up-to-date.

Zusätzliche Anleitungen für den Fall, dass nicht vertrauenswürdiger Code ausgeführt wirdAdditional guidance if you are running untrusted code

Für Kunden, die für nicht vertrauenswürdige Benutzer die Ausführung von beliebigem Code zulassen, kann es ratsam sein, für ihre Azure Virtual Machines oder Cloud Services zusätzliche Sicherheitsfunktionen zu implementieren.Customers who allow untrusted users to execute arbitrary code may wish to implement some additional security features inside their Azure Virtual Machines or Cloud Services. Diese Features bieten Schutz vor den prozessinternen Offenlegungsvektoren, mit denen mehrere Sicherheitsrisiken vom Typ „Spekulative Ausführung“ beschrieben werden.These features protect against the intra-process disclosure vectors that several speculative execution vulnerabilities describe.

Beispielszenarien, für die zusätzliche Sicherheitsfunktionen empfohlen werden:Example scenarios where additional security features are recommended:

  • Sie lassen zu, dass Code, den Sie nicht als vertrauenswürdig ansehen, auf Ihrer VM ausgeführt wird.You allow code that you do not trust to run inside your VM.
    • Beispielsweise lassen Sie für einen Ihrer Kunden das Hochladen einer Binärdatei oder eines Skripts zu, die bzw. das Sie dann in Ihrer Anwendung ausführen.For example, you allow one of your customers to upload a binary or script that you then execute within your application.
  • Sie lassen für Benutzer, die Sie nicht als vertrauenswürdig ansehen, das Anmelden an Ihrer VM mit Konten mit geringen Rechten zu.You allow users that you do not trust to log into your VM using low privileged accounts.
    • Beispielsweise lassen Sie zu, dass sich ein Benutzer mit geringen Rechten an einer Ihrer VMs per Remotedesktop- oder SSH-Verbindung anmeldet.For example, you allow a low-privileged user to log into one of your VMs using remote desktop or SSH.
  • Sie lassen für nicht vertrauenswürdige Benutzer den Zugriff auf virtuelle Computer zu, die über die geschachtelte Virtualisierung implementiert werden.You allow untrusted users access to virtual machines implemented via nested virtualization.
    • Beispielsweise steuern Sie den Hyper-V-Host, aber ordnen die VMs nicht vertrauenswürdigen Benutzern zu.For example, you control the Hyper-V host, but allocate the VMs to untrusted users.

Kunden, die kein Szenario mit nicht vertrauenswürdigem Code implementieren, müssen diese zusätzlichen Sicherheitsfunktionen nicht aktivieren.Customers who do not implement a scenario involving untrusted code do not need to enable these additional security features.

Aktivieren von zusätzlicher SicherheitEnabling additional security

Sie können auf Ihrem virtuellen Computer oder in Ihrem Clouddienst zusätzliche Sicherheitsfunktionen aktivieren, wenn Sie nicht vertrauenswürdigen Code ausführen.You can enable additional security features inside your VM or Cloud Service if you are running untrusted code. Stellen Sie gleichzeitig sicher, dass Ihr Betriebssystem auf dem neuesten Stand ist, um Sicherheitsfunktionen auf Ihrem virtuellen Computer oder in Ihrem Clouddienst zu aktivieren.In parallel, ensure your operating system is up-to-date to enable security features inside your VM or Cloud Service

WindowsWindows

Ihr Zielbetriebssystem muss aktuell sein, damit Sie diese zusätzlichen Sicherheitsfunktionen aktivieren können.Your target operating system must be up-to-date to enable these additional security features. Für „Seitenkanalangriffe mit spekulativer Ausführung“ sind standardmäßig mehrere Maßnahmen zur Risikominderung aktiviert, aber die hier beschriebenen zusätzlichen Features müssen manuell aktiviert werden und können sich auf die Leistung auswirken.While numerous speculative execution side channel mitigations are enabled by default, the additional features described here must be enabled manually and may cause a performance impact.

Schritt 1: Deaktivieren von Hyperthreading auf dem virtuellen Computer: Kunden, die nicht vertrauenswürdigen Code auf einem virtuellen Computer mit Hyperthreading ausführen, müssen das Hyperthreading deaktivieren oder zu einer VM-Größe ohne Hyperthreading wechseln.Step 1: Disable hyper-threading on the VM - Customers running untrusted code on a hyper-threaded VM will need to disable hyper-threading or move to a non-hyper-threaded VM size. Eine Liste mit VM-Größen mit Hyperthreading finden Sie in diesem Dokument. (Bei diesen VM-Größen beträgt das Verhältnis zwischen vCPU und Kern 2:1.)Reference this doc for a list of hyper-threaded VM sizes (where ratio of vCPU to Core is 2:1). Mit dem folgenden Skript können Sie über die Windows-Befehlszeile auf dem virtuellen Computer ermitteln, ob Hyperthreading für Ihren virtuellen Computer aktiviert ist.To check if your VM has hyper-threading enabled, please refer to the below script using the Windows command line from within the VM.

Geben Sie wmic ein, um die interaktive Benutzeroberfläche aufzurufen.Type wmic to enter the interactive interface. Geben Sie dann den folgenden Befehl ein, um die Menge der physischen und logischen Prozessoren auf dem virtuellen Computer anzuzeigen.Then type the below to view the amount of physical and logical processors on the VM.

CPU Get NumberOfCores,NumberOfLogicalProcessors /Format:List

Wenn die Anzahl logischer Prozessoren die Anzahl physischer Prozessoren (Kerne) übersteigt, ist Hyperthreading aktiviert.If the number of logical processors is greater than physical processors (cores), then hyper-threading is enabled. Wenn Sie einen virtuellen Computer mit Hyperthreading ausführen, wenden Sie sich an den Azure-Support, um das Hyperthreading zu deaktivieren.If you are running a hyper-threaded VM, please contact Azure Support to get hyper-threading disabled. Nach Deaktivierung des Hyperthreadings ist ein vollständiger Neustart des virtuellen Computers erforderlich.Once hyper-threading is disabled, support will require a full VM reboot. Unter Anzahl Kerne erfahren Sie, warum sich die Anzahl Ihrer VM-Kerne verringert hat.Please refer to Core count to understand why your VM core count decreased.

Schritt 2: Führen Sie parallel zu Schritt 1 die Anweisungen unter KB4072698 aus, um mit dem SpeculationControl-PowerShell-Modul sicherzustellen, dass der Schutz aktiviert ist.Step 2: In parallel to Step 1, follow the instructions in KB4072698 to verify protections are enabled using the SpeculationControl PowerShell module.

Hinweis

Wenn Sie dieses Modul bereits zu einem früheren Zeitpunkt heruntergeladen haben, müssen Sie die neueste Version installieren.If you previously downloaded this module, you will need to install the newest version.

Die Ausgabe des PowerShell-Skripts muss die folgenden Werte aufweisen, um aktivierte Schutzmaßnahmen gegen diese Sicherheitsrisiken zu überprüfen:The output of the PowerShell script should have the below values to validate enabled protections against these vulnerabilities:

Windows OS support for branch target injection mitigation is enabled: True
Windows OS support for kernel VA shadow is enabled: True
Windows OS support for speculative store bypass disable is enabled system-wide: False
Windows OS support for L1 terminal fault mitigation is enabled: True
Windows OS support for MDS mitigation is enabled: True

Wenn die Ausgabe MDS mitigation is enabled: False anzeigt, wenden Sie sich an den Azure-Support, um Informationen zu verfügbaren Gegenmaßnahmen zu erhalten.If the output shows MDS mitigation is enabled: False, please contact Azure Support for available mitigation options.

Schritt 3: Folgen Sie den Anweisungen in KB4072698, um die Betriebssystemunterstützung für KVAS (Kernel Virtual Address Shadowing) und BTI (Branch Target Injection) zu aktivieren, damit Schutz über die Session Manager-Registrierungsschlüssel aktiviert wird.Step 3: To enable Kernel Virtual Address Shadowing (KVAS) and Branch Target Injection (BTI) OS support, follow the instructions in KB4072698 to enable protections using the Session Manager registry keys. Es ist ein Neustart erforderlich.A reboot is required.

Schritt 4: Für Bereitstellungen, in denen geschachtelte Virtualisierung verwendet wird (nur D3 und E3): Diese Anweisungen gelten für den virtuellen Computer, den Sie als Hyper-V-Host verwenden.Step 4: For deployments that are using nested virtualization (D3 and E3 only): These instructions apply inside the VM you are using as a Hyper-V host.

  1. Befolgen Sie die Anleitung unter KB4072698, um den Schutz über die MinVmVersionForCpuBasedMitigations-Registrierungsschlüssel zu aktivieren.Follow the instructions in KB4072698 to enable protections using the MinVmVersionForCpuBasedMitigations registry keys.
  2. Legen Sie den Typ des Hypervisorplaners auf Core fest, indem Sie diese Anweisungen ausführen.Set the hypervisor scheduler type to Core by following the instructions here.

LinuxLinux

Für die Aktivierung der internen zusätzlichen Sicherheitsfunktionen ist es erforderlich, dass das Zielbetriebssystem auf dem aktuellsten Stand ist.Enabling the set of additional security features inside requires that the target operating system be fully up-to-date. Einige Maßnahmen zur Risikominderung sind standardmäßig aktiviert.Some mitigations will be enabled by default. Im folgenden Abschnitt werden die Funktionen beschrieben, die standardmäßig deaktiviert sind bzw. für die eine Hardwareunterstützung (Microcode) benötigt wird.The following section describes the features which are off by default and/or reliant on hardware support (microcode). Die Aktivierung dieser Funktionen kann zu einer Beeinträchtigung der Leistung führen.Enabling these features may cause a performance impact. Weitere Informationen finden Sie in der Dokumentation des Anbieters Ihres Betriebssystems.Reference your operating system provider’s documentation for further instructions

Schritt 1: Deaktivieren von Hyperthreading auf dem virtuellen Computer: Kunden, die nicht vertrauenswürdigen Code auf einem virtuellen Computer mit Hyperthreading ausführen, müssen das Hyperthreading deaktivieren oder zu einem virtuellen Computer ohne Hyperthreading wechseln.Step 1: Disable hyper-threading on the VM - Customers running untrusted code on a hyper-threaded VM will need to disable hyper-threading or move to a non-hyper-threaded VM. Eine Liste mit VM-Größen mit Hyperthreading finden Sie in diesem Dokument. (Bei diesen VM-Größen beträgt das Verhältnis zwischen vCPU und Kern 2:1.)Reference this doc for a list of hyper-threaded VM sizes (where ratio of vCPU to Core is 2:1). Führen Sie auf dem virtuellen Linux-Computer den Befehl lscpu aus, um zu ermitteln, ob Sie einen virtuellen Computer mit Hyperthreading ausführen.To check if you are running a hyper-threaded VM, run the lscpu command in the Linux VM.

Bei Thread(s) per core = 2 ist Hyperthreading aktiviert.If Thread(s) per core = 2, then hyper-threading has been enabled.

Bei Thread(s) per core = 1 ist Hyperthreading deaktiviert.If Thread(s) per core = 1, then hyper-threading has been disabled.

Beispielausgabe für einen virtuellen Computer mit aktiviertem Hyperthreading:Sample output for a VM with hyper-threading enabled:

CPU Architecture:      x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                8
On-line CPU(s) list:   0-7
Thread(s) per core:    2
Core(s) per socket:    4
Socket(s):             1
NUMA node(s):          1

Wenn Sie einen virtuellen Computer mit Hyperthreading ausführen, wenden Sie sich an den Azure-Support, um das Hyperthreading zu deaktivieren.If you are running a hyper-threaded VM, please contact Azure Support to get hyper-threading disabled. Nach Deaktivierung des Hyperthreadings ist ein vollständiger Neustart des virtuellen Computers erforderlich.Once hyper-threading is disabled, support will require a full VM reboot. Unter Anzahl Kerne erfahren Sie, warum sich die Anzahl Ihrer VM-Kerne verringert hat.Please refer to Core count to understand why your VM core count decreased.

Schritt 2: Informationen zum Einleiten von Gegenmaßnahmen für die folgenden Sicherheitsrisiken durch Seitenkanalangriffe mit spekulativer Ausführung finden Sie in der Dokumentation Ihres Betriebssystemanbieters:Step 2: To mitigate against any of the below speculative execution side-channel vulnerabilities, refer to your operating system provider’s documentation:

Anzahl KerneCore count

Bei der Erstellung eines virtuellen Computers mit Hyperthreading ordnet Azure zwei Threads pro Kern zu. Diese werden als vCPUs bezeichnet.When a hyper-threaded VM is created, Azure allocates 2 threads per core - these are called vCPUs. Wird Hyperthreading deaktiviert, entfernt Azure einen Thread und zeigt Singlethread-Kerne (physische Kerne) an.When hyper-threading is disabled, Azure removes a thread and surfaces up single threaded cores (physical cores). Aufgrund des Verhältnisses von 2:1 zwischen vCPU und CPU sieht es nach der Deaktivierung des Hyperthreadings so aus, als hätte sich die CPU-Anzahl des virtuellen Computers halbiert.The ratio of vCPU to CPU is 2:1, so once hyper-threading is disabled, the CPU count in the VM will appear to have decreased by half. Ein Beispiel: Bei einem virtuellen Computer vom Typ „D8_v3“ handelt es sich um einen virtuellen Computer mit Hyperthreading, der auf acht vCPUs (vier Kerne mit jeweils zwei Threads pro Kern) ausgeführt wird.For example, a D8_v3 VM is a hyper-threaded VM running on 8 vCPUs (2 threads per core x 4 cores). Wenn nun Hyperthreading deaktiviert wird, geht die CPU-Anzahl auf vier physische Kerne mit einem einzelnen Thread pro Kern zurück.When hyper-threading is disabled, CPUs will drop to 4 physical cores with 1 thread per core.

Nächste SchritteNext steps

Dieser Artikel enthält Anleitungen zu den folgenden Seitenkanalangriffen mit spekulativer Ausführung, die zahlreiche moderne Prozessoren betreffen:This article provides guidance to the below speculative execution side-channel attacks that affect many modern processors:

Spectre Meltdown:Spectre Meltdown:

  • CVE-2017-5715 – Branch Target Injection (BTI)CVE-2017-5715 - Branch Target Injection (BTI)
  • CVE-2017-5754 – Kernel Page Table Isolation (KPTI)CVE-2017-5754 - Kernel Page Table Isolation (KPTI)
  • CVE-2018-3639 – Speculative Store Bypass (KPTI)CVE-2018-3639 – Speculative Store Bypass (KPTI)

L1 Terminal Fault (L1TF):L1 Terminal Fault (L1TF):

  • CVE-2018-3615 – Intel Software Guard Extensions (Intel SGX)CVE-2018-3615 - Intel Software Guard Extensions (Intel SGX)
  • CVE-2018-3620 – Betriebssysteme (OS) und System Management Mode (SMM)CVE-2018-3620 - Operating Systems (OS) and System Management Mode (SMM)
  • CVE-2018-3646 – betrifft Virtual Machine Manager (VMM)CVE-2018-3646 – impacts Virtual Machine Manager (VMM)

Microarchitectural Data Sampling:Microarchitectural Data Sampling:

  • CVE-2019-11091 – Microarchitectural Data Sampling Uncacheable Memory (MDSUM)CVE-2019-11091 - Microarchitectural Data Sampling Uncacheable Memory (MDSUM)
  • CVE-2018-12126 – Microarchitectural Store Buffer Data Sampling (MSBDS)CVE-2018-12126 - Microarchitectural Store Buffer Data Sampling (MSBDS)
  • CVE-2018-12127 – Microarchitectural Load Port Data Sampling (MLPDS)CVE-2018-12127 - Microarchitectural Load Port Data Sampling (MLPDS)
  • CVE-2018-12130 – Microarchitectural Fill Buffer Data Sampling (MFBDS)CVE-2018-12130 - Microarchitectural Fill Buffer Data Sampling (MFBDS)