O Google, a empresa de segurança Cyberus Technologies e outros especialistas liberaram detalhes técnicos sobre o que se sabe das falhas Meltdown e Spectre. As brechas, inicialmente noticiadas como um problema exclusivo dos processadores da Intel, na verdade atingem parcialmente também produtos de outras marcas, como AMD, e possivelmente celulares, mas ainda faltam experimentos para determinar o nível de vulnerabilidade de cada chip.
As falhas Meltdown e Spectre ambas residem no mesmo recurso, o de execução especulativa. Usando uma dessas falhas, é possível violar (de modo bastante indireto) o isolamento que o próprio processador do computador impõe para cada aplicativo e que impede que um software interfira na memória de outro.
Embora tenham a mesma base, as duas falhas têm impactos diferentes e o método de exploração também varia, dependendo até do modelo do processador. Acredita-se que a falha Meltdown, a mais grave, seja realmente exclusiva de processadores Intel. A Spectre, embora exista em outros chips, também é mais fácil de ser explorada em chips da Intel.
Como a Intel é líder do mercado em computadores, especialmente em servidores e notebooks, a falha tem alcance quase universal. Estima-se que todos os chips produzidos pela Intel desde 1995 sofram do problema, com exceção de modelos Itanium e Atom produzidos até 2013.
Imagens das falhas Meltdown (o escudo derretendo) e Spectre. O fantasma, segundo os especialistas, é uma referência ao fato de que a falha vai nos 'assombrar por muitos anos'. (Foto: Natascha Eibl/Domínio Público)
Quem deve ter cuidado?
Embora a falha viole um dos pilares da segurança dos computadores e tenha alcance geral, o impacto é relativamente baixo e a exploração é complicada. Criminosos comuns provavelmente não terão muito interesse em explorar a brecha em ataques rotineiros, mas sistemas empresariais que dependem muito das barreiras de segurança da virtualização ou que tenham dados muito sensíveis podem fazer valer o esforço dos invasores.
Empresas como Google, Microsoft e Amazon confiam nessas barreiras para alugar acesso total (mas isolado) a computadores virtualizados, o que permite que vários clientes usem o mesmo hardware físico de forma isolada e segura, como se cada um tivesse seu próprio computador. Se a brecha for levada com sucesso às últimas consequências, hackers poderão quebrar a barreira dessa virtualização e causar prejuízo a outros clientes ou ler informações sem autorização.
Isso deve obrigar as empresas e prestadores de serviços de computação em nuvem a aplicar correções que eliminem o problema pela raiz, sem recorrer a soluções menos invasivas que podem ser viáveis em aplicações menos críticas. Embora isso elimine o problema, o desempenho ficará reduzido.
O impacto no desempenho, porém, ainda não está claro. Simulações (que não representam necessariamente uso real) estimam que o impacto de desempenho em certas tarefas pode chegar a 30%. Simulações mais otimistas chegam a números menos alarmantes, como 5%. Mas mesmo um número "baixo" como esse não é irrelevante para os grandes provedores de serviços em nuvem.
UMA ANALOGIA PARA ENTENDER O PROBLEMA
Imagine que, em vez de números binários, o computador trabalhe apenas com caixas -- o que significa que todos os dados, imagens e arquivos podem ser representados com caixas. A única coisa que diferencia uma caixa de outra é se ela está vazia (0) ou cheia (1). Todos os programas solicitam que o processador armazene e busque "caixas" e olham se elas estão cheias ou vazias. Vez ou outra, o processador se adianta e busca uma caixa antes mesmo do programa fazer o pedido, com o intuito de agilizar a execução do software.
A falha ocorre quando um programa malicioso manipula o processador para buscar uma caixa que pertence a outro aplicativo. Em geral, isso é barrado. Mas, nos casos em que o processador se adianta e busca uma caixa antes de ela ser solicitada, a verificação da origem da caixa é dispensada temporariamente e a caixa é "jogada no lixo" (descartada) logo depois.
Mesmo nesse caso, nada foi aparentemente violado. O programa malicioso não pode ver a caixa e nem abrir o lixo. Por isso, não parece existir uma falha de segurança nesse procedimento.
O que se sabe agora é que o programa malicioso é capaz de verificar o peso da lixeira: se está leve, é porque a caixa era vazia. Do contrário, a caixa está cheia. Repetindo esse processo até buscar todas as caixas que pertencem a outro programa, uma a uma, o ataque permite ler o conteúdo da memória.
EXPLICAÇÃO TÉCNICA
Execução especulativa
A execução especulativa é uma técnica de otimização usada em processadores modernos que acelera o desempenho dos computadores, permitindo que certos comandos sejam executados antes mesmo de o processador determinar se eles serão necessários. Com isso, o computador pode utilizar sua capacidade ociosa para se "adiantar" nas tarefas.
No entanto, em muitos casos, o processador "se adianta" quando não deveria. Nesses casos, o processador descarta o que foi executado. Quando isso ocorre, o processador não se dá o trabalho de verificar se uma leitura de memória é segura ou não -- afinal, se ela for insegura, a leitura será descartada mais tarde e o programa não terá qualquer acesso indevido, mantendo o isolamento.
O que os pesquisadores descobriram é que, mesmo após esse descarte, é possível analisar detalhes da execução do programa -- mais especificamente, o tempo de uma operação -- para determinar o conteúdo da memória lida indevidamente. O culpado disso é o cache.
"Cache"
Processadores armazenam certas operações em uma memória ultrarrápida, o cache. Se uma operação está nesse cache, ela será mais rápida do que outra operação que não está em cache, mesmo que o resultado da operação seja um erro.
Os ataques Meltdown e Spectre manipulam o processador para que a execução especulativa (que leu uma memória indevida) deixe rastros no cache que indiquem o conteúdo da memória lida. O acesso é indireto -- o cache não contém a memória lida. É apenas a velocidade da operação -- ela estar ou não em cache -- que serve de indício.
A manipulação feita pelo programa garante, que, entre duas operações, apenas uma estará em cache após a execução especulativa. Como os computadores trabalham com números binários (0 e 1), determinar qual das duas operações estava em cache também determina o conteúdo do bit de memória.
Como revela um bit por vez, o processo precisa ser repetido várias vezes para ler uma quantia significativa de memória e a velocidade é centenas de milhares de vezes mais lenta do que a leitura normal (1,5 KB a 2 KB por segundo). No entanto, esses são resultados preliminares obtidos pelos pesquisadores -- existe a possibilidade de que novos ataques sejam mais otimizados.
MELTDOWN X SPECTRE
A principal diferença entre as falhas Meltdown e Spectre (além de a Meltdown ser exclusiva da Intel) é o tipo de memória que pode ser lida. Enquanto a Spectre permite a leitura da memória de outros programas, a Meltdown permite a leitura da memória do kernel -- o "coração" do sistema operacional.
Embora o kernel em geral não tenha informações muito úteis em si mesmas (praticamente todas as informações pessoais ou dados ficam na memória usada pelos aplicativos), o kernel pode conter dados técnicos relevantes para a exploração de outras brechas. Além disso, quem pode ler a memória do kernel pode na prática ler qualquer outra memória do computador, o que garante um acesso mais abrangente.
A falha Meltdown é considerada mais fácil de explorar na prática, mas também mais fácil de corrigir. A brecha Spectre é bastante difícil de explorar, mas também mais difícil de corrigir e é provável que diversos programas tenham que ser atualizados individualmente para minimizar o impacto da Spectre. No caso da Meltdown, as soluções devem vir do próprio sistema operacional.
Dúvidas sobre segurança, hackers e vírus? Envie para [email protected]