Compreender a saída do script do PowerShell Get-SpeculationControlSettings

Aplica-se a: Windows 10

Resumo


Para ajudar os clientes a verificar o status de mitigações de canal lateral de execução especulativa, a Microsoft publicou um script do PowerShell que os clientes podem executar em seus sistemas. Este tópico explica como executar o script e o que significa a saída.

Comunicados  ADV180002ADV180012, ADV180018 e ADV190013, que abrangem nove vulnerabilidades:

  • CVE-2017-5715 (injeção de alvo de ramificação)
  • CVE-2017-5753 (bypass de verificação de limite)
  • CVE-2017-5754 (carregamento de cache de dados invasor)
  • CVE-2018-3639 (Speculative Store Bypass)
  • CVE-2018-3620 (L1 Terminal Fault – OS)
  • CVE-2018-11091 (Microarchitectural Data Sampling Uncacheable Memory (MDSUM))
  • CVE-2018-12126 (Microarchitectural Store Buffer Data Sampling (MSBDS))
  • CVE-2018-12127 (Microarchitectural Load Port Data Sampling (MLPDS))
  • CVE-2018-12130 (Microarchitectural Fill Buffer Data Sampling (MFBDS))

A proteção para a das reduções para a CVE-2017-5753 não exibe configurações adicionais do registro e, em alguns casos, atualizações de firmware. Este tópico fornece detalhes sobre o script do PowerShell que ajuda a determinar o estado das mitigações das várias CVEs listados acima, que exigem configurações adicionais do Registro e, em alguns casos, atualizações de firmware.

Mais informações


Instale e execute o script executando os seguintes comandos:

Verificação do PowerShell usando a Galeria do PowerShell (Windows Server 2016 ou WMF 5.0/5.1)

Instale o módulo do PowerShell

PS> Install-Module SpeculationControl

Execute o módulo PowerShell para validar se as proteções estão habilitadas

PS> # Save the current execution policy so it can be reset

PS> $SaveExecutionPolicy = Get-ExecutionPolicy

PS> Set-ExecutionPolicy RemoteSigned -Scope Currentuser

PS> Import-Module SpeculationControl

PS> Get-SpeculationControlSettings

PS> # Reset the execution policy to the original state

PS> Set-ExecutionPolicy $SaveExecutionPolicy -Scope Currentuser

Verificação do PowerShell usando um download do TechNet (versões anteriores do sistema operacional/versões anteriores do WMF)

Instale o módulo do PowerShell por meio do TechNet ScriptCenter

  1. Acesse https://aka.ms/SpeculationControlPS.
  2. Baixe SpeculationControl.zip em uma pasta local.
  3. Extraia o conteúdo em uma pasta local, por exemplo C:\ADV180002

Execute o módulo do PowerShell para validar se as proteções estão habilitadas

Inicie o PowerShell e (usando o exemplo acima), copie e execute os seguintes comandos:

PS> # Save the current execution policy so it can be reset

PS> $SaveExecutionPolicy = Get-ExecutionPolicy

PS> Set-ExecutionPolicy RemoteSigned -Scope Currentuser

PS> CD C:\ADV180002\SpeculationControl

PS> Import-Module.\SpeculationControl.psd1

PS> Get-SpeculationControlSettings

PS> # Reset the execution policy to the original state

PS> Set-ExecutionPolicy $SaveExecutionPolicy -Scope Currentuser


A saída desse script PowerShell será semelhante à seguinte. As proteções habilitadas serão exibidas na saída como “True”.

PS C:\> Get-SpeculationControlSettings
Speculation control settings for CVE-2017-5715 [branch target injection]
Hardware support for branch target injection mitigation is present: False
Windows OS support for branch target injection mitigation is present: True
Windows OS support for branch target injection mitigation is enabled: False
Windows OS support for branch target injection mitigation is disabled by system policy: True
Windows OS support for branch target injection mitigation is disabled by absence of hardware support: True
Speculation control settings for CVE-2017-5754 [rogue data cache load]
Hardware requires kernel VA shadowing: True
Windows OS support for kernel VA shadow is present: False
Windows OS support for kernel VA shadow is enabled: False
Windows OS support for PCID optimization is enabled: False

Speculation control settings for CVE-2018-3639 [speculative store bypass]

Hardware is vulnerable to speculative store bypass: True
Hardware support for speculative store bypass mitigation is present: False
Windows OS support for speculative store bypass mitigation is present: True
Windows OS support for speculative store bypass mitigation is enabled system-wide: False

Configurações de controle de especulação para a CVE-2018-3620 [L1 Terminal Fault]

Hardware is vulnerable to L1 terminal fault: True
Windows OS support for L1 terminal fault mitigation is present: True
Windows OS support for L1 terminal fault mitigation is enabled: True

Configurações de controle de especulação para a MDS [Microarchitectural Data Sampling]

O suporte do SO Windows para a mitigação de MDS está presente: True
O hardware é vulnerável à MDS: True
O suporte do SO Windows para mitigação MDS está habilitado: True



BTIHardwarePresent: False
BTIWindowsSupportPresent: True
BTIWindowsSupportEnabled: False
BTIDisabledBySystemPolicy: True
BTIDisabledByNoHardwareSupport: True
KVAShadowRequired: True
KVAShadowWindowsSupportPresent: False
KVAShadowWindowsSupportEnabled: False
KVAShadowPcidEnabled: False
SSBDWindowsSupportPresent: True
SSBDHardwareVulnerablePresent: True
SSBDHardwarePresent: True
SSBDWindowsSupportEnabledSystemWide: False
L1TFHardwareVulnerable: True
L1TFWindowsSupportPresent: True
L1TFWindowsSupportEnabled: True
L1TFInvalidPteBit: 45
L1DFlushSupported: False
MDSWindowsSupportPresent: True
MDSHardwareVulnerable: True
MDSWindowsSupportEnabled: True

A grade de saída final é mapeada para o resultado das linhas precedentes. Isso é mostrado porque o PowerShell imprime o objeto que é retornado por uma função. A tabela a seguir explica cada linha.

Saída

Explicação

Configurações de controle de especulação para a CVE-2017-5715 [injeção de alvo de ramificação]

Esta seção fornece o status do sistema para a variante 2, CVE-2017-5715 , Branch Target Injection.

Há suporte de hardware para mitigação da injeção de alvo de ramificação

Mapeado para BTIHardwarePresent. Esta linha informa se recursos de hardware estão presentes para dar suporte à mitigação da injeção de ramificação de destino. O OEM do dispositivo é responsável por fornecer o BIOS/firmware atualizado que contém o microcódigo fornecido pelos fabricantes de CPU. Se esta linha for True, os recursos de hardware necessários estão presentes. Se a linha for False, os recursos de hardware necessários não estão presentes e, portanto, a mitigação da injeção de ramificação de destino não pode ser habilitada.

Observação BTIHardwarePresent será True em VMs convidadas se a atualização do OEM tiver sido aplicada ao host e as diretrizes forem seguidas.

Há suporte do SO Windows para mitigação da injeção de alvo de ramificação

Mapeado para BTIWindowsSupportPresent. Essa linha informa se o suporte do sistema operacional Windows está presente para a mitigação de injeção de ramificação de destino. Se for True, o sistema operacional dá suporte para permitir a mitigação de injeção de ramificação de destino (e, portanto, foi instalada a atualização de janeiro de 2018). Se for False, a atualização de janeiro de 2018 não foi instalada no sistema, e a mitigação de injeção de ramificação de destino não poderá ser habilitada.

Observação Se uma VM convidada não puder detectar a atualização de hardware do host, BTIWindowsSupportEnabled sempre será False.

O suporte do SO Windows para mitigação da injeção de alvo de ramificação está habilitado

Mapeado para BTIWindowsSupportEnabled. Essa linha informa se o suporte do sistema operacional Windows está habilitado para a mitigação de injeção de ramificação de destino. Se for True, o suporte de hardware e SO para a mitigação de injeção de ramificação de destino está habilitada para o dispositivo, protegendo assim contra a CVE-2017-5715. Se for False, uma das seguintes condições será a verdadeira:

  • O suporte de hardware não está presente.
  • O suporte ao sistema operacional não está presente.
  • A mitigação foi desabilitada pela política do sistema.

O suporte do SO Windows para mitigação da injeção de alvo de ramificação está desabilitado pela política do sistema

Mapeado para BTIDisabledBySystemPolicy. Esta linha informa se a mitigação da injeção de ramificação de destino foi desabilitada pela política do sistema (como uma política definida pelo administrador). A política do sistema refere-se aos controles do Registro documentados em KB 4072698. Se for True, a política do sistema será responsável por desabilitar a mitigação. Se for False, a atenuação será desabilitada por uma causa diferente.

O suporte do SO Windows para mitigação da injeção de alvo de ramificação está desabilitado pela ausência do suporte de hardware

Mapeado para BTIDisabledByNoHardwareSupport. Esta linha informa se a mitigação da injeção de ramificação de destino foi desabilitada devido à ausência de suporte de hardware. Se for True, a ausência do suporte de hardware será responsável por desabilitar a mitigação. Se for False, a atenuação será desabilitada por uma causa diferente.

Observação Se uma VM convidada não puder detectar a atualização de hardware do host, BTIDisabledByNoHardwareSupport sempre será True.

Configurações de controle de especulação para a CVE-2017-5754 [carregamento de cache de dados invasor]

Esta seção fornece o status de sistema de resumo para a variante 3,CVE-2017-5754, Rogue Data Cache Load. A mitigação para isso é conhecida como sombra de Endereço virtual (VA) do kernel ou a mitigação de carregamento de cache de dados invasor.

O hardware requer sombreamento de AV de kernel

Mapeado para KVAShadowRequired. Esta linha informa se o hardware é vulnerável a CVE-2017-5754. Se for True, acredita-se que o hardware seja vulnerável a CVE-2017-5754. Se for False, acredita-se que o hardware não seja vulnerável a CVE-2017-5754.

Há suporte do SO Windows para sombra de AV de kernel

Mapeado para KVAShadowWindowsSupportPresent. Esta linha informa se o suporte ao sistema operacional Windows para o recurso de sombra VA do kernel está presente. Se for True, a atualização de janeiro de 2018 está instalada no dispositivo, e a sombra VA do kernel tem suporte. Se for False, a atualização de janeiro de 2018 não está instalada, e o suporte para sombra VA do kernel não existe.

O suporte do SO Windows para sombra de AV de kernel está habilitado

Mapeado para KVAShadowWindowsSupportEnabled. Esta linha informa se o recurso sombra do kernel VA foi habilitada. Se for True, acredita-se que o hardware seja vulnerável a CVE-2017-5754, o suporte ao sistema operacional Windows está presente e o recurso foi habilitado. O recurso de sombra VA do Kernel atualmente está habilitado por padrão em versões de cliente do Windows e está desabilitado por padrão em versões do Windows Server. Se for False, o suporte ao sistema operacional Windows não está presente ou o recurso não foi habilitado.

O suporte do SO Windows para otimização de desempenho PCID está habilitado

ObservaçãoO PCID não é necessário para segurança. Isso indica apenas se uma melhoria de desempenho está habilitada. O PCID não tem suporte com o Windows Server 2008 R2

Mapeado para KVAShadowPcidEnabled. Esta linha informa se uma otimização de desempenho adicional foi habilitada para a sombra VA do kernel. Se for True, a sombra VA do kernel está habilitada, o suporte de hardware para o PCID está presente e a otimização do PCID para a sombra VA do kernel foi habilitada. Se for False, talvez o hardware ou o sistema operacional possa não dar suporte a PCID. O fato de a otimização PCID não estar habilitada não é uma fraqueza de segurança.

Suporte do sistema operacional Windows para a Speculative Store Bypass Disable está presente

Mapeado para SSBDWindowsSupportPresent. Essa linha informa se o suporte do sistema operacional Windows para a Speculative Store Bypass Disable está presente. Se for True, a atualização de janeiro de 2018 está instalada no dispositivo, e a sombra VA do kernel tem suporte. Se for False, a atualização de janeiro de 2018 não está instalada, e o suporte para sombra VA do kernel não existe.

O hardware requer a Speculative Store Bypass Disable

Mapeado para SSBDHardwareVulnerablePresent. Esta linha informa se o hardware é vulnerável à CVE-2018-3639 . Se for True, acredita-se que o hardware seja vulnerável à CVE-2018-3639. Se for False, acredita-se que o hardware não seja vulnerável à CVE-2018-3639.

O suporte de Hardware para o Speculative Store Bypass Disable está presente

Mapeado para SSBDHardwarePresent. Esta linha informa se os recursos de hardware estão presentes para oferecer suporte à Speculative Store Bypass Disable. O OEM do dispositivo é responsável por fornecer o BIOS/firmware atualizado que contém o microcódigo fornecido pela Intel. Se esta linha for True, os recursos de hardware necessários estão presentes. Se esta linha for False, os recursos de hardware necessários não estão presentes, e, portanto, a Speculative Store Bypass Disable não pode ser ativada.

Observação SSBDHardwarePresent será True em VMs convidadas se a atualização do OEM tiver sido aplicada ao host.

 

O suporte do sistema operacional Windows para a Speculative Store Bypass Disable está ativado

Mapeado para SSBDWindowsSupportEnabledSystemWide. Essa linha informa se a Speculative Store Bypass Disable foi ativada no sistema operacional Windows. Se for True , o suporte de hardware e o suporte do SO para a Speculative Store Bypass Disable está ativo para o dispositivo, impedindo a ocorrência da Speculative Store Bypass, eliminando assim completamente o risco de segurança. Se for False, uma das seguintes condições será a verdadeira:

  • O suporte de hardware não está presente.
  • O suporte ao sistema operacional não está presente.
  • A Speculative Store Bypass Disable não foi ativada por meio de chaves do Registro. Consulte os artigos a seguir para obter instruções sobre como ativar:

Orientação do Windows Client para Profissionais de TI se protegerem contra as vulnerabilidades de canal paralelo de execução especulativa

Orientação do Windows Server para proteção contra as vulnerabilidades de canal paralelo de execução especulativa

 

Configurações de controle de especulação para a CVE-2018-3620 [L1 Terminal Fault]

Esta seção fornece um resumo do status do sistema para a L1TF (sistema operacional) referido pela CVE-2018-3620. Esta mitigação garante que bits de quadro de página seguros sejam usados para entradas de tabela de página não presentes ou inválidas.

Observe que esta seção não fornece um resumo do status de mitigação para L1TF (VMM) referida pela CVE-2018-3646.

O hardware é vulnerável à L1 Terminal Fault: True Mapeado para L1TFHardwareVulnerable. Essa linha informa se o hardware é vulnerável a L1 Terminal Fault (L1TF, CVE-2018-3620). Se for True, acredita-se que o hardware seja vulnerável à CVE-2018-3620. Se for False, acredita-se que o hardware não seja vulnerável à CVE-2018-3620.
O suporte do SO Windows para a mitigação de falhas da L1 Terminal Fault está presente: True Mapeado para L1TFWindowsSupportPresent. Essa linha informa se o suporte do sistema operacional Windows para a mitigação do sistema operacional L1 Terminal Fault (L1TF) está presente. Se for True, a atualização de agosto de 2018 está instalada no dispositivo e a mitigação para a CVE-2018-3620 está presente. Se for False, a atualização de agosto de 2018 não está instalada, e a mitigação para o CVE-2018-3620 não está presente.
O suporte do SO Windows para a mitigação da L1 Terminal Fault está habilitado: True Mapeado para L1TFWindowsSupportEnabled. Essa linha informa se a mitigação do sistema operacional Windows para a L1 Terminal Fault (L1TF, CVE-2018-3620) está habilitada. Se for True, acredita-se que o hardware esteja vulnerável à CVE-2018-3620, o suporte do sistema operacional Windows para a atenuação está presente, e a mitigação foi habilitada. Se for False, o hardware não está vulnerável, o suporte do sistema operacional Windows não está presente ou a mitigação não foi habilitada.
Configurações de controle de especulação para a MDS [Microarchitectural Data Sampling] Esta seção fornece o status do sistema para o conjunto de vulnerabilidades MDS, CVE-2018-11091, CVE-2018-12126, CVE-2018-12127 e CVE-2018-12130
O suporte do SO Windows para a mitigação de MDS está presente Mapeado para MDSWindowsSupportPresent. Esta linha informa se o suporte do sistema operacional Windows para a mitigação do sistema operacional Microarchitectural Data Sampling (MDS) está presente. Se for True, a atualização de maio de 2019 está instalada no dispositivo, e a mitigação para a MDS está presente. Se for False, a atualização de maio de 2019 não está instalada, e a mitigação para a MDS não está presente.
O hardware é vulnerável à MDS Mapeado para MDSHardwareVulnerable. Essa linha informa se o hardware é vulnerável ao conjunto de vulnerabilidades Microarchitectural Data Sampling (MDS) (CVE-2018-11091, CVE-2018-12126, CVE-2018-12127, CVE-2018-12139). Se for True, acredita-se que o hardware seja afetado por essas vulnerabilidades. Se for False, acredita-se que o hardware não seja vulnerável.
 
O suporte do SO Windows para mitigação MDS está habilitado Mapeado para MDSWindowsSupportEnabled. Essa linha informa se a mitigação do sistema operacional Windows para a Microarchitectural Data Sampling (MDS) está habilitada. Se for True, acredita-se que o hardware seja afetado pelas vulnerabilidades MDS, que o suporte operacional do Windows para a mitigação esteja presente e que a mitigação tenha sido habilitada. Se for False, o hardware não está vulnerável, o suporte do sistema operacional Windows não está presente ou a mitigação não foi habilitada.

A seguinte saída é esperada para um computador com todas as atenuações habilitadas, juntamente com o que é necessário para satisfazer cada condição.

BTIHardwarePresent: True -> apply OEM BIOS/firmware update
BTIWindowsSupportPresent: True -> install January 2018 update
BTIWindowsSupportEnabled: True -> on client, no action required. On server, follow guidance .
BTIDisabledBySystemPolicy: False -> ensure not disabled by policy.
BTIDisabledByNoHardwareSupport: False -> ensure OEM BIOS/firmware update is applied.
KVAShadowRequired: True or False -> no action, this is a function of the CPU the computer uses


If KVAShadowRequired is True
KVAShadowWindowsSupportPresent: True -> install January 2018 update
KVAShadowWindowsSupportEnabled: True -> on client, no action required. On server, follow guidance .
KVAShadowPcidEnabled: True or False -> no action , this is a function of the CPU the computer uses

If SSBDHardwareVulnerablePresent is True
SSBDWindowsSupportPresent: True -> install Windows updates as documented in adv180012
SSBDHardwarePresent: True -> install BIOS/firmware update with support for SSBD from your device OEM

SSBDWindowsSupportEnabledSystemWide: True -> follow recommended actions to turn on SSBD

If L1TFHardwareVulnerable is True
L1TFWindowsSupportPresent: True -> install Windows updates as documented in adv180018
L1TFWindowsSupportEnabled: True -> follow actions outlined in adv180018 for Windows Server or Client as appropriate to enable the mitigation

A tabela a seguir mapeia a saída para as chaves do Registro discutidas em Diretrizes do Windows Server para proteção contra as vulnerabilidades de canal paralelo de execução especulativa.

Chave do Registro

Mapeamento

FeatureSettingsOverride – Bit 0

Mapeado para - Injeção de destino de ramificação - BTIWindowsSupportEnabled

FeatureSettingsOverride – Bit 1

Mapeado para - Carregamento de cache de dados invasor - VAShadowWindowsSupportEnabled