Meltdown e Spectre: Explicação sobre funcionamento e testes de performance

Oá Pessoal!

Resolvi fazer este post para explicar os pontos abaixo sobre as recentes ameaças Meltdown e Spectre:

  • Como as vulnerabilidades funcionam?
  • Como mensurar o impacto em performance?
  • Como corrigir?
  • Servidores em risco
  • Como saber se estou prevenido?

Como as vulnerabilidades funcionam?

Ambos ataques exploram vulnerabilidades nos modelos de execução dos processadores modernos.

Meltdown:

Explora o modelo de “out-of-order execution” do processador e o fato de que existem páginas de memória de kernel mapeadas dentro do contexto de memória virtual de processos (user mode).

Quando é solicitado o processamento de uma página de kernel mapeada na memória virtual do processo, A CPU atende a demanda de processamento, entretanto o processo responsável não possui privilégio de leitura resultado. Neste ponto, o cache do processador onde o resultado de kernel está presente é manipulado de maneira a permitir que o resultado seja transferido ao contexto de memória do usuário, sendo assim possível que o processo leia o resultado.

Spectre:

Este exploit vai um pouco além, ele explora o modelo de “Speculative Execution”, onde o servidor proativamente processa dados que ainda não foram solicitados.

O Spectre se baseia no processamento de código através de javascript em navegadores web por exemplo para manipular o processamento e ter acesso a contextos de memória de outros processos. Podemos tomar como exemplo acesso ao host de virtualização através de códigos sendo executados em uma máquina virtual, ou acesso aos dados de diferentes sessões web da qual o código foi executado. Notem que até o momento foram documentados 3 sploits: CVE-2017-5715 – Branch Target Injection, explorado pelo Spectre CVE-2017-5753 – Bounds Check Bypass, explorado pelo Spectre CVE-2017-5754 – Rogue Data Cache Load, explorado pelo Meltdown

 

COMO MENSURAR O IMPACTO EM PERFORMANCE

De acordo com o report oficial Microsoft, a correção das vulnerabilidades CVE-2017-5753 e CVE-2017-5754 não causam impactos consideráveis em performance, enquanto a correção da vulnerabilidade CVE-2017-5715 tem maior impacto pois altera o modelo de otimização “Speculative Execution”. Até o momento que este artigo foi escrito, a Microsoft não disponibilizou o benchmark esperado após aplicar a atualização. A alternativa possível é acompanhar o consumo de tempo de processador antes e depois da aplicação da atualização, para mensurar impacto. É possível usar os contadores abaixo, criando manualmente um data collector set : https://technet.microsoft.com/en-us/library/cc958321.aspx clip_image001 clip_image002

Realizei testes em meu laboratório:

clip_image003

Não identifiquei nenhum impacto considerável, o uso de CPU basicamente se manteve em minhas operações.

 

SERVIDORES EM RISCO

  • Hyper-V hosts – Possíveis atáques entre VMS, ou entre VM e host.
  • Remote Desktop Services Hosts (RDSH) – Possíveis ataques entre sessões RDS.

COMO CORRIGIR:

A correção ocorre em duas etapas: Atualizando o sistema operacional e atualizando o “microcode” do processador Atualizações: https://support.microsoft.com/en-us/help/4073119/protect-against-speculative-execution-side-channel-vulnerabilities-in

Para atualizações do processador, o vendor deve ser envolvido para devida correção.

Alternativas para mitigar a ameaça:

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverride /t REG_DWORD /d 0 /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverrideMask /t REG_DWORD /d 3 /f
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization" /v MinVmVersionForCpuBasedMitigations /t REG_SZ /d "1.0" /f

COMO SABER SE ESTOU PROTEGIDO?

Os links abaixo contém o script powershell que testa o ambiente:

https://support.microsoft.com/en-us/help/4073119/protect-against-speculative-execution-side-channel-vulnerabilities-in https://gallery.technet.microsoft.com/scriptcenter/Speculation-Control-e36f0050#content

clip_image004

É isto ai pessoal, qualquer dúvida, estou disponível para ajudar através dos comentários!

Marcado com

2 ideias sobre “Meltdown e Spectre: Explicação sobre funcionamento e testes de performance

  1. Obrigado pelo artigo. Excelente!

    1. Obrigado pelo feedback meu amigo! Abraço

Deixe uma resposta

%d blogueiros gostam disto: