Orientações para atenuar as vulnerabilidades de canal lateral de execução especulativa no AzureGuidance for mitigating speculative execution side-channel vulnerabilities in Azure

Última atualização do documento: 12 de novembro de 2019 10:00 am PST.Last document update: 12 November 2019 10:00 AM PST.

A divulgação de uma nova classe de vulnerabilidades de CPU conhecida como ataques de canal paralelo de execução especulativa resultou em várias perguntas dos clientes que queriam mais esclarecimentos sobre o assunto.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.

A Microsoft implantou atenuações em todos os nossos serviços de nuvem.Microsoft has deployed mitigations across all our cloud services. A infraestrutura que executa o Azure e isola as cargas de trabalho do cliente entre elas está protegida.The infrastructure that runs Azure and isolates customer workloads from each other is protected. Isso significa que um invasor potencial que usa a mesma infraestrutura não pode atacar seu aplicativo usando essas vulnerabilidades.This means that a potential attacker using the same infrastructure can’t attack your application using these vulnerabilities.

O Azure usa a manutenção da preservação da memória sempre que possível, para minimizar o impacto para o cliente e eliminar a necessidade de reinicializações.Azure is using memory preserving maintenance whenever possible, to minimize customer impact and eliminate the need for reboots. O Azure continuará utilizando esses métodos ao fazer atualizações em todo o sistema do host e proteger nossos clientes.Azure will continue utilizing these methods when making systemwide updates to the host and protect our customers.

Mais informações sobre como a segurança é integrada em todos os aspectos do Azure estão disponíveis no site Documentação de segurança do Azure.More information about how security is integrated into every aspect of Azure is available on the Azure Security Documentation site.

Observação

Desde a primeira publicação deste documento, foram divulgadas várias variantes dessa classe de vulnerabilidade.Since this document was first published, multiple variants of this vulnerability class have been disclosed. A Microsoft continua investindo intensamente na proteção de nossos clientes e no fornecimento de diretrizes.Microsoft continues to be heavily invested in protecting our customers and providing guidance. Esta página será atualizada conforme continuamos liberando correções adicionais.This page will be updated as we continue to release further fixes.

Em 12 de novembro de 2019, a Intel publicou um aviso técnico sobre a vulnerabilidade da Intel® extensões de sincronização transacional (Intel® TSX) Transaction assíncrona (TAA) que é atribuída CVE-2019-11135.On November 12, 2019, Intel published a technical advisory around Intel® Transactional Synchronization Extensions (Intel® TSX) Transaction Asynchronous Abort (TAA) vulnerability that is assigned CVE-2019-11135. Essa vulnerabilidade afeta os processadores Intel® Core® e Intel® Xeon®.This vulnerability affects Intel® Core® processors and Intel® Xeon® processors. O Microsoft Azure lançou atualizações do sistema operacional e está implantando o novo microcódigo, pois ele é disponibilizado pela Intel, em toda a frota para proteger nossos clientes contra essas novas vulnerabilidades.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. O Azure está trabalhando de forma minuciosa com a Intel para testar e validar o novo microcódigo antes do lançamento oficial na plataforma.Azure is closely working with Intel to test and validate the new microcode prior to its official release on the platform.

Os clientes que executam código não confiável dentro de sua VM precisam tomar medidas para proteger contra essas vulnerabilidades lendo abaixo as orientações adicionais sobre todas as vulnerabilidades de canal lateral de execução especulativa (Microsoft Advisors avçd 180002, 180018e 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).

Outros clientes devem avaliar essas vulnerabilidades de uma perspectiva de defesa profunda e considerar as implicações de segurança e desempenho de sua configuração escolhida.Other customers should evaluate these vulnerabilities from a Defense in Depth perspective and consider the security and performance implications of their chosen configuration.

Mantendo seus sistemas operacionais atualizadosKeeping your operating systems up-to-date

Embora uma atualização do sistema operacional não seja necessária para isolar os aplicativos em execução no Azure de outros clientes do Azure, é sempre uma melhor prática manter o software atualizado.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. Os últimos Pacotes Cumulativos de Atualizações de Segurança para o Windows contêm mitigações de várias vulnerabilidades de canal paralelo de execução especulativa.The latest Security Rollups for Windows contain mitigations for several speculative execution side channel vulnerabilities. Da mesma forma, as distribuições Linux liberaram várias atualizações para resolver essas vulnerabilidades.Similarly, Linux distributions have released multiple updates to address these vulnerabilities. Aqui estão nossas ações recomendadas para atualizar seu sistema operacional:Here are our recommended actions to update your operating system:

OfertaOffering Ação recomendadaRecommended Action
Serviços de Nuvem do AzureAzure Cloud Services Habilite a atualização automática ou verifique se você está executando o Sistema Operacional Convidado mais recente.Enable auto update or ensure you are running the newest Guest OS.
Máquinas Virtuais do Linux do AzureAzure Linux Virtual Machines Instale atualizações do provedor do sistema operacional.Install updates from your operating system provider. Para obter mais informações, confira Linux mais adiante neste documento.For more information, see Linux later in this document.
Máquinas Virtuais do Windows do AzureAzure Windows Virtual Machines Instale o pacote cumulativo de atualizações de segurança mais recente.Install the latest security rollup.
Outros Serviços de PaaS do AzureOther Azure PaaS Services Não é necessária nenhuma ação para clientes que usam esses serviços.There is no action needed for customers using these services. O Azure mantém automaticamente suas versões de Sistema Operacional atualizadas.Azure automatically keeps your OS versions up-to-date.

Orientações adicionais se você estiver executando código não confiávelAdditional guidance if you are running untrusted code

Os clientes que permitem que usuários não confiáveis executem um código arbitrário podem desejar implementar alguns recursos de segurança adicionais nas Máquinas Virtuais do Azure ou nos Serviços de Nuvem.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. Esses recursos protegem contra vetores de divulgação dentro do processo descritos por várias vulnerabilidades de execução especulativa.These features protect against the intra-process disclosure vectors that several speculative execution vulnerabilities describe.

Cenários de exemplo em que os recursos de segurança adicionais são recomendados:Example scenarios where additional security features are recommended:

  • Você permite que um código não confiável seja executado em sua VM.You allow code that you do not trust to run inside your VM.
    • Por exemplo, você permite que um de seus clientes carregue um binário ou um script que você, em seguida, executa no aplicativo.For example, you allow one of your customers to upload a binary or script that you then execute within your application.
  • Você permite que os usuários não confiáveis façam logon em sua VM usando contas com baixos privilégios.You allow users that you do not trust to log into your VM using low privileged accounts.
    • Por exemplo, você permite que um usuário com poucos privilégios faça logon em uma de suas VMs usando a área de trabalho remota ou o SSH.For example, you allow a low-privileged user to log into one of your VMs using remote desktop or SSH.
  • Você permite que usuários não confiáveis acessem máquinas virtuais implementadas por meio da virtualização aninhada.You allow untrusted users access to virtual machines implemented via nested virtualization.
    • Por exemplo, você controla o host Hyper-V, mas aloca as VMs a usuários não confiáveis.For example, you control the Hyper-V host, but allocate the VMs to untrusted users.

Os clientes que não implementam um cenário que envolva um código não confiável não precisam habilitar esses recursos de segurança adicionais.Customers who do not implement a scenario involving untrusted code do not need to enable these additional security features.

Habilitando a segurança adicionalEnabling additional security

Você pode habilitar recursos de segurança adicionais dentro de sua VM ou serviço de nuvem se você estiver executando código não confiável.You can enable additional security features inside your VM or Cloud Service if you are running untrusted code. Em paralelo, verifique se o sistema operacional está atualizado para habilitar recursos de segurança dentro de sua VM ou serviço de nuvemIn parallel, ensure your operating system is up-to-date to enable security features inside your VM or Cloud Service

WindowsWindows

O sistema operacional de destino precisa estar atualizado para habilitar esses recursos de segurança adicionais.Your target operating system must be up-to-date to enable these additional security features. Embora várias mitigações de ataques de canal paralelo de execução especulativa estejam habilitadas por padrão, os recursos adicionais descritos aqui precisam ser habilitados manualmente e podem causar um impacto no desempenho.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.

Etapa 1: desabilitar o hyperthreading na VM -os clientes que executam código não confiável em uma VM Hyper-threaded precisarão desabilitar o Hyper-Threading ou mover para um tamanho de VM não Hyper-thread.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. Referencie este documento para obter uma lista de tamanhos de VM Hyper-threaded (em que a taxa de vCPU para Core é 2:1).Reference this doc for a list of hyper-threaded VM sizes (where ratio of vCPU to Core is 2:1). Para verificar se sua VM tem o hyperthreading habilitado, consulte o script abaixo usando a linha de comando do Windows de dentro da VM.To check if your VM has hyper-threading enabled, please refer to the below script using the Windows command line from within the VM.

Digite wmic para entrar na interface interativa.Type wmic to enter the interactive interface. Em seguida, digite o seguinte para exibir a quantidade de processadores físicos e lógicos na VM.Then type the below to view the amount of physical and logical processors on the VM.

CPU Get NumberOfCores,NumberOfLogicalProcessors /Format:List

Se o número de processadores lógicos for maior que processadores físicos (núcleos), o hyperthreading será habilitado.If the number of logical processors is greater than physical processors (cores), then hyper-threading is enabled. Se você estiver executando uma VM Hyper-threaded, entre em contato com o suporte do Azure para obter o hyperthreading desabilitado.If you are running a hyper-threaded VM, please contact Azure Support to get hyper-threading disabled. Depois que o hyperthreading estiver desabilitado, o suporte exigirá uma reinicialização completa da VM.Once hyper-threading is disabled, support will require a full VM reboot. Consulte a contagem de núcleos para entender por que sua contagem de núcleos de VM diminuiu.Please refer to Core count to understand why your VM core count decreased.

Etapa 2: em paralelo à etapa 1, siga as instruções em KB4072698 para verificar se as proteções estão habilitadas usando o módulo SpeculationControl PowerShell.Step 2: In parallel to Step 1, follow the instructions in KB4072698 to verify protections are enabled using the SpeculationControl PowerShell module.

Observação

Se você já baixou este módulo, precisará instalar a versão mais recente.If you previously downloaded this module, you will need to install the newest version.

A saída do script do PowerShell deve ter os valores abaixo para validar as proteções habilitadas contra essas vulnerabilidades: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
Windows OS support for TAA mitigation is enabled: True

Se a saída mostrar MDS mitigation is enabled: False, entre em contato com o suporte do Azure para obter as opções de mitigação disponíveis.If the output shows MDS mitigation is enabled: False, please contact Azure Support for available mitigation options.

Etapa 3: para habilitar o suporte do sistema operacional de KVAS (sombra de endereço virtual) de kernel e BTI (injeção de destino de Branch), siga as instruções em KB4072698 para habilitar as proteções usando as chaves do registro Session Manager.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. Uma reinicialização é necessária.A reboot is required.

Etapa 4: para implantações que estão usando a virtualização aninhada (apenas D3 e E3): essas instruções se aplicam dentro da VM que você está usando como um host Hyper-V.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. Siga as instruções em KB4072698 para habilitar as proteções usando as chaves do registro MinVmVersionForCpuBasedMitigations.Follow the instructions in KB4072698 to enable protections using the MinVmVersionForCpuBasedMitigations registry keys.
  2. Defina o tipo de Agendador do hipervisor como Core seguindo as instruções aqui.Set the hypervisor scheduler type to Core by following the instructions here.

LinuxLinux

A habilitação do conjunto de recursos de segurança adicionais internamente exige que o sistema operacional de destino esteja totalmente atualizado.Enabling the set of additional security features inside requires that the target operating system be fully up-to-date. Algumas mitigações serão habilitadas por padrão.Some mitigations will be enabled by default. A seção a seguir descreve os recursos que estão desativados por padrão e/ou que são dependentes de suporte de hardware (microcódigo).The following section describes the features which are off by default and/or reliant on hardware support (microcode). A habilitação desses recursos pode causar um impacto no desempenho.Enabling these features may cause a performance impact. Referencie a documentação do provedor do sistema operacional para obter mais instruçõesReference your operating system provider’s documentation for further instructions

Etapa 1: desabilitar o hyperthreading na VM -os clientes que executam código não confiável em uma VM Hyper-threaded precisarão desabilitar o Hyper-Threading ou mover para uma VM não Hyper-thread.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. Referencie este documento para obter uma lista de tamanhos de VM Hyper-threaded (em que a taxa de vCPU para Core é 2:1).Reference this doc for a list of hyper-threaded VM sizes (where ratio of vCPU to Core is 2:1). Para verificar se você está executando uma VM Hyper-threaded, execute o comando lscpu na VM Linux.To check if you are running a hyper-threaded VM, run the lscpu command in the Linux VM.

Se Thread(s) per core = 2, o hyperthreading foi habilitado.If Thread(s) per core = 2, then hyper-threading has been enabled.

Se Thread(s) per core = 1, o hyperthreading foi desabilitado.If Thread(s) per core = 1, then hyper-threading has been disabled.

Exemplo de saída para uma VM com o hyperthreading habilitado: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

Se você estiver executando uma VM Hyper-threaded, entre em contato com o suporte do Azure para obter o hyperthreading desabilitado.If you are running a hyper-threaded VM, please contact Azure Support to get hyper-threading disabled. Depois que o hyperthreading estiver desabilitado, o suporte exigirá uma reinicialização completa da VM.Once hyper-threading is disabled, support will require a full VM reboot. Consulte a contagem de núcleos para entender por que sua contagem de núcleos de VM diminuiu.Please refer to Core count to understand why your VM core count decreased.

Etapa 2: para mitigar qualquer uma das vulnerabilidades de canal lateral de execução especulativa abaixo, consulte a documentação do provedor do sistema operacional:Step 2: To mitigate against any of the below speculative execution side-channel vulnerabilities, refer to your operating system provider’s documentation:

Contagem principalCore count

Quando uma VM Hyper-threaded é criada, o Azure aloca 2 threads por núcleo – eles são chamados de vCPUs.When a hyper-threaded VM is created, Azure allocates 2 threads per core - these are called vCPUs. Quando o hyperthreading está desabilitado, o Azure remove um thread e superfícies de núcleos de thread único (núcleos físicos).When hyper-threading is disabled, Azure removes a thread and surfaces up single threaded cores (physical cores). A taxa de vCPU para CPU é 2:1, assim, depois que o hyperthreading estiver desabilitado, a contagem de CPU na VM parecerá ter diminuído pela metade.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. Por exemplo, uma VM D8_v3 é uma VM Hyper-thread executada em 8 vCPUs (2 threads por núcleos x 4 núcleos).For example, a D8_v3 VM is a hyper-threaded VM running on 8 vCPUs (2 threads per core x 4 cores). Quando o hyperthreading estiver desabilitado, as CPUs serão descartadas para quatro núcleos físicos com 1 thread por núcleo.When hyper-threading is disabled, CPUs will drop to 4 physical cores with 1 thread per core.

Próximas etapasNext steps

Este artigo fornece orientação para os ataques de canal lateral de execução especulativo abaixo que afetam muitos processadores modernos:This article provides guidance to the below speculative execution side-channel attacks that affect many modern processors:

Meltdown Spectre:Spectre Meltdown:

  • CVE-2017-5715 – injeção de destino de ramificação (BTI)CVE-2017-5715 - Branch Target Injection (BTI)
  • CVE-2017-5754-isolamento de tabela de página de kernel (KPTI)CVE-2017-5754 - Kernel Page Table Isolation (KPTI)
  • CVE-2018-3639 – bypass de armazenamento especulativo (KPTI)CVE-2018-3639 – Speculative Store Bypass (KPTI)
  • CVE-2019-1125 – informações de kernel do Windows – variante da variante de Spectre 1CVE-2019-1125 – Windows Kernel Information – variant of Spectre Variant 1

Falha de terminal L1 (L1TF):L1 Terminal Fault (L1TF):

  • CVE-2018-3615-extensões do Intel software Guard (Intel SGX)CVE-2018-3615 - Intel Software Guard Extensions (Intel SGX)
  • CVE-2018-3620-sistemas operacionais (SO) e modo de gerenciamento do sistema (SMM)CVE-2018-3620 - Operating Systems (OS) and System Management Mode (SMM)
  • CVE-2018-3646 – afeta Virtual Machine Manager (VMM)CVE-2018-3646 – impacts Virtual Machine Manager (VMM)

Amostragem de dados de microarquitetura:Microarchitectural Data Sampling:

  • CVE-2019-11091-microarquitetura dados de amostragem de memória não cache (MDSUM)CVE-2019-11091 - Microarchitectural Data Sampling Uncacheable Memory (MDSUM)
  • CVE-2018-12126-MSBDS (amostragem de dados de buffer de armazenamento de microarquitetura)CVE-2018-12126 - Microarchitectural Store Buffer Data Sampling (MSBDS)
  • CVE-2018-12127-microarquitetura carregar dados de porta (MLPDS)CVE-2018-12127 - Microarchitectural Load Port Data Sampling (MLPDS)
  • CVE-2018-12130-microarquitetura de amostragem de dados de buffer de preenchimento (MFBDS)CVE-2018-12130 - Microarchitectural Fill Buffer Data Sampling (MFBDS)

Anulação assíncrona da transação de extensões de sincronização transacional (Intel® TSX):Transactional Synchronization Extensions (Intel® TSX) Transaction Asynchronous Abort: