O que é Meltdown/Spectre?

Meltdown e Spectre são novas vulnerabilidades do processador que afetam a maioria dos PCs e smartphones. Existem patches disponíveis, mas eles afetam a performance do processador.

Objetivos de aprendizado

Após ler este artigo, você será capaz de:

  • Definir Meltdown e Spectre e diferenciá-los
  • Descrever como funciona a execução especulativa
  • Explicar como o patch Meltdown afeta a velocidade do processador

Conteúdo relacionado


Quer saber mais?

Assine o theNET, uma recapitulação mensal feita pela Cloudflare dos insights mais populares da internet.

Consulte a política de privacidade da Cloudflare para saber como coletamos e processamos seus dados pessoais.

Copiar o link do artigo

O que é Meltdown/Spectre?

Meltdown e Spectre são vulnerabilidades descobertas recentemente encontradas em chips de processador Intel, AMD, Apple e ARM. Essas vulnerabilidades são o resultado de uma falha de design grave nos chips afetados e a descoberta desse problema levou a um redesenho forçado do software do sistema operacional Windows, Mac e Linux para mitigar a vulnerabilidade e evitar que invasores a explorem.

Essas vulnerabilidades foram descobertas por pesquisadores do Projeto Zero do Google, uma equipe que se dedica a encontrar falhas de segurança antes que possam ser exploradas por invasores; por enquanto, não existem explorações de Meltdown ou Spectre conhecidas. Agora, as equipes de segurança das grandes empresas de tecnologia como Apple, Intel e Microsoft, bem como desenvolvedores de Linux de código aberto, estão dedicando muitos recursos para tentar garantir que seus processadores e sistemas operacionais fiquem protegidos antes de qualquer exploração maliciosa.

Quem é afetado pelas vulnerabilidades Meltdown e Spectre?

Com poucas exceções, qualquer pessoa com um PC e/ou smartphone está em risco. De acordo com o Google, todos os dispositivos com chip de processador Intel fabricados depois de 1995 foram afetados. Os chips AMD e ARM são mais difíceis de explorar, mas também estão em risco.

Como se proteger contra as vulnerabilidades Meltdown/Spectre?

Além de substituir o processador de um PC, a única maneira de fechar a vulnerabilidade é corrigir o sistema operacional. A Apple, discretamente, introduziu um patch Meltdown para OSX no início de dezembro, enquanto a Microsoft lançou um patch para o Windows em 3 de janeiro e os desenvolvedores do Linux ainda estão lutando para montar um patch.

Um efeito colateral infeliz desses patches Meltdown é que eles irão, por design, diminuir a velocidade de processamento dos computadores que usam o SO com patch. Essa lentidão afetará a performance em cerca de 5 a 30%, dependendo muito do tipo de chip e das tarefas que estão sendo executadas

Como as vulnerabilidades Meltdown e Spectre realmente funcionam?

Tanto o Meltdown quanto o Spectre são vulnerabilidades criadas na execução de um código especial de baixo nível chamado “código de kernel”, que é executado especificamente durante um processo conhecido como execução especulativa.

O que é execução especulativa?

A execução especulativa pode, talvez, ser mais facilmente explicada usando uma metáfora. Imagine um caminhante perdido na floresta que se depara com uma bifurcação na trilha criando dois caminhos quase paralelos; um caminho levará o caminhante para casa, o outro não. Em vez de perder tempo esperando que outro caminhante lhe dê as instruções, ele escolhe o caminho que acredita ter mais probabilidade de levá-lo para casa. Em algum ponto da caminhada, ele se depara com um marcador de trilha, se esse marcador de trilha informa que ele está no caminho certo, então ele continua por esse caminho e chega em casa. Se o marcador de trilha disser que ele está no caminho errado, ele rapidamente volta e salta para a trilha alternativa, o que o deixa na mesma situação que estaria se ainda estivesse no início da trilha esperando por direções.

Execução Especulativa

Muitos processadores modernos executam uma técnica semelhante chamada execução especulativa, em que a CPU tenta adivinhar qual código precisa ser executado em seguida e, então, executa esse código antes de ser solicitado a fazê-lo. Se o código executado não for necessário, as alterações serão revertidas. Isso visa economizar tempo e acelerar a performance.

Relatórios sobre as vulnerabilidades Meltdown/Spectre sugerem que as CPUs da Intel podem estar realizando execução especulativa de código sem exigir verificações de segurança importantes. Pode ser possível escrever um software projetado para verificar se o processador concluiu uma instrução que normalmente seria bloqueada por essas verificações de segurança.

Esse manuseio incorreto da execução especulativa cria uma vulnerabilidade de CPU que um invasor pode explorar para acessar dados muito sensíveis na memória do kernel, como senhas, chaves de criptografia, fotografias pessoais, e-mails, etc.

Então, o que é um kernel?

Um kernel é o programa no núcleo do sistema operacional de um computador. Ele tem controle total sobre o sistema operacional e administra tudo, desde a inicialização até a transferência de memória. O kernel também é responsável por enviar instruções de processamento de dados para a CPU (Unidade Central de Processamento). A maioria das CPUs está constantemente alternando entre o modo kernel e o modo usuário.

Qual é a diferença entre o modo kernel e o modo usuário?

No modo kernel, a CPU está executando o código que tem acesso irrestrito ao hardware e à memória do computador. Este modo é geralmente reservado para as operações de nível mais baixo e mais confiáveis. Os travamentos que ocorrem enquanto a CPU está no modo kernel são potencialmente catastróficos; eles podem travar todo o Sistema Operacional.

No modo usuário, o código que está sendo executado não pode acessar o hardware ou a memória de referência, em vez disso, deve delegar às APIs do sistema (as APIs do sistema podem executar funções do modo kernel que o software do modo usuário pode solicitar com as permissões adequadas). As falhas no modo usuário geralmente são isoladas e recuperáveis. A maior parte do código é executada no modo usuário.

Por que o patch Meltdown diminui a performance?

A correção no patch Meltdown envolve uma separação mais drástica da memória do kernel dos processos do usuário. Isso é feito por meio de um método chamado Kernel Page Table Isolation (KPTI). O KPTI move as operações do modo kernel para um espaço de endereço completamente separado das operações do modo usuário. Isso significa que leva muito mais tempo para alternar entre o modo kernel e o modo usuário.

Para ilustrar isso, imagine um food truck que vende apenas dois itens: cachorro-quente e limonada gelada. O funcionário dentro do food truck pode facilmente alcançar a panela com os cachorros-quentes e o refrigerador com as limonadas geladas e os negócios avançam rapidamente. Agora imagine que o inspetor de saúde chegue e exija que os alimentos quentes e frios sejam mantidos em instalações separadas. Agora o funcionário ainda consegue alcançar os cachorros-quentes, mas tem que sair do trailer e dar uma volta pela rua para buscar cada limonada. Isso faria com que a fila do food truck se movesse muito mais devagar, especialmente se as pessoas estiverem pedindo muitas limonadas. Isso é semelhante a como o KPTI pode diminuir a performance de um sistema operacional.

Qual é a diferença entre Meltdown e Spectre?

Tanto a Meltdown quanto a Spectre são vulnerabilidades criadas pela maneira como os processadores lidam com a execução especulativa, mas eles diferem um pouco em como funcionam e quais tipos de processadores são afetados.

O Meltdown afeta apenas os processadores Intel e Apple e pode ser explorado para vazar informações que são expostas como resultado do código que os processadores executam durante a execução especulativa. O Meltdown é mais fácil de explorar do que o Spectre e foi considerado o maior risco pelos especialistas em segurança. Felizmente, o Meltdown também é mais fácil e direto de corrigir.

O Spectre afeta os processadores Intel, Apple, ARM e AMD e pode ser explorado para enganar os processadores para que executem códigos que não deveriam ser executados. De acordo com os especialistas em segurança do Google, o Spectre é muito mais difícil de explorar do que Meltdown, mas também é muito mais difícil de mitigar.

Quer saber mais sobre o Meltdown e o Spectre?

Você pode acessar os artigos completos sobre Meltdown e sobre o Spectre se quiser saber mais detalhes técnicos sobre eles.