
Oito anos depois de Spectre transformar a segurança dos processadores, pesquisadores encontraram uma nova maneira de contornar algumas das proteções criadas para impedir ataques de execução especulativa.
Pesquisadores do MIT CSAIL apresentaram uma técnica capaz de explorar uma pequena janela existente entre o momento em que determinadas defesas contra Spectre v2 neutralizam o estado do preditor de desvios e o instante em que esse mecanismo volta a ser utilizado pelo processador.
O método faz parte de uma nova classe de ataques batizada de TONTOU — Time-of-Neutralization to Time-of-Use.
Uma das técnicas desenvolvidas pelos pesquisadores, chamada Interrupt Injection, utiliza interrupções precisamente sincronizadas para interferir justamente nessa janela.
Em uma demonstração prática, os pesquisadores conseguiram contornar proteções contra Spectre v2 em uma máquina equipada com processador AMD Zen 2 e Linux, chegando a recuperar informações sensíveis, incluindo hashes de senhas.
A descoberta é relevante porque mostra que algumas defesas consideradas suficientes contra ataques de Branch Target Injection podem precisar ser novamente revisadas.
Para entender o ataque, é preciso voltar ao Spectre
Spectre foi divulgado originalmente em 2018 e revelou uma característica problemática dos processadores modernos.
CPUs tentam antecipar quais instruções provavelmente precisarão executar.
Essa técnica é conhecida como execução especulativa.
Em vez de esperar uma decisão ser completamente resolvida, o processador tenta prever o resultado e começa antecipadamente o próximo trabalho.
Se acertar, ganha desempenho.
Se errar, os resultados arquiteturais daquela execução são descartados.
O problema descoberto pela família Spectre é que determinados efeitos microarquiteturais podem permanecer e ser observados por meio de canais laterais.
Isso cria a possibilidade de extrair informações que deveriam permanecer protegidas.
Spectre v2 ataca o preditor de desvios
O Spectre v2, também conhecido como Branch Target Injection (BTI), concentra-se no mecanismo utilizado pelo processador para prever o destino de desvios indiretos.
Um atacante tenta manipular esse preditor.
A CPU pode então executar especulativamente instruções escolhidas ou influenciadas pelo atacante.
Embora o processador posteriormente perceba que seguiu o caminho errado e descarte aquela execução, alterações microarquiteturais podem ser observadas.
É dessa maneira que determinados segredos podem vazar por canais laterais.
Fabricantes criaram várias camadas de proteção
Desde 2018, fabricantes de processadores, desenvolvedores de sistemas operacionais e pesquisadores vêm construindo mecanismos para reduzir esses riscos.
Entre eles aparecem técnicas como Retpoline, IBRS, eIBRS, IBPB e STIBP, dependendo do processador e do cenário.
O Linux também possui diferentes configurações para ativar proteções contra Spectre v2 tanto no kernel quanto entre processos em espaço de usuário.
Uma das estratégias utilizadas consiste, de maneira simplificada, em neutralizar ou isolar o estado relevante do preditor antes de executar determinado código sensível.
A pesquisa do MIT mostra que existe um problema nessa lógica.
O problema está no intervalo entre proteger e usar
A ideia central do TONTOU lembra uma categoria clássica de vulnerabilidades conhecida como TOCTOU — Time-of-Check to Time-of-Use.
Nela, um sistema verifica determinada condição e, algum tempo depois, utiliza o recurso.
Se algo mudar durante esse intervalo, a verificação anterior deixa de garantir segurança.
No TONTOU, o conceito é aplicado ao estado microarquitetural.
A defesa neutraliza o estado utilizado pelo preditor.
Depois disso, o kernel continua sua execução até chegar ao ponto em que esse estado será efetivamente utilizado.
Existe, portanto, uma pequena janela:
neutralização → algumas instruções → utilização do preditor.
É justamente nesse espaço que os pesquisadores encontraram uma oportunidade de ataque.
Interrupt Injection explora essa pequena janela
A técnica Interrupt Injection procura fazer com que uma interrupção aconteça no momento correto.
Essa interrupção faz o processador executar código adicional depois que a defesa já neutralizou o preditor, mas antes que o código protegido faça uso dele.
Com o posicionamento adequado, o atacante consegue voltar a influenciar o estado microarquitetural.
Em outras palavras:
a defesa limpa o preditor;
o atacante provoca uma interrupção;
a execução provocada pela interrupção volta a interferir naquele estado;
o kernel utiliza o preditor já contaminado.
O resultado é uma forma de contornar a proteção sem necessariamente quebrar diretamente o mecanismo de neutralização.
TONTOU descreve um problema mais amplo
Interrupt Injection é a técnica concreta demonstrada pelos pesquisadores, mas TONTOU representa uma ideia mais abrangente.
O problema aparece sempre que existe uma separação temporal entre a neutralização de um estado microarquitetural potencialmente perigoso e o momento em que esse estado será utilizado.
Quanto maior ou mais controlável essa janela, maior pode ser a oportunidade para um atacante interferir novamente.
Essa é uma das contribuições mais importantes da pesquisa.
O trabalho não aponta apenas uma implementação específica defeituosa.
Ele questiona uma premissa por trás de uma categoria de mitigação.
Ataque funcionou mesmo com proteções habilitadas
Os pesquisadores demonstraram o ataque em um sistema equipado com processador AMD Zen 2, executando Linux com as proteções padrão contra Spectre v2 habilitadas.
A demonstração conseguiu vazar informações do kernel.
Entre os resultados apresentados está a recuperação de hashes de senhas do Linux, mostrando que o ataque não se limita a uma hipótese acadêmica sobre manipulação do preditor.
É importante interpretar corretamente esse resultado.
Isso não significa que qualquer site ou arquivo malicioso possa automaticamente roubar senhas de qualquer computador Intel ou AMD.
O cenário demonstrado envolve condições técnicas específicas e capacidade de executar código local não privilegiado.
Ataque não entrega diretamente a senha
Outro detalhe importante é a diferença entre roubar uma senha e obter seu hash.
Sistemas Linux não precisam armazenar as senhas dos usuários diretamente em texto aberto.
Em vez disso, armazenam representações criptográficas derivadas delas.
Obter esses hashes pode permitir tentativas posteriores de recuperação das senhas por ataques offline, especialmente quando as credenciais utilizadas são fracas.
Portanto, a demonstração comprova acesso a informação altamente sensível, mas não significa que todas as senhas tenham sido automaticamente reveladas em texto legível.
Intel e AMD entram na discussão
A pesquisa analisa estratégias de mitigação empregadas em processadores das duas principais fabricantes de CPUs x86.
A técnica é relevante para Intel e AMD porque questiona proteções baseadas na neutralização ou isolamento do estado do preditor.
Entretanto, isso não significa que todos os processadores Intel e AMD tenham sido demonstrados como exploráveis exatamente da mesma maneira.
A demonstração prática destacada pelos pesquisadores foi realizada em AMD Zen 2.
Essa diferença precisa ser mantida para evitar transformar o alcance conceitual da pesquisa em uma afirmação de exploração comprovada para cada CPU disponível no mercado.
Por que isso importa para servidores e cloud
Ataques de execução especulativa possuem importância especial em ambientes nos quais diferentes cargas de trabalho compartilham hardware.
Servidores, plataformas de virtualização e serviços de nuvem dependem fortemente de isolamento.
A lógica é simples: mesmo que diferentes aplicações utilizem o mesmo processador físico, uma não deveria conseguir acessar informações pertencentes à outra.
Vulnerabilidades microarquiteturais são especialmente delicadas porque atuam abaixo de muitas das barreiras tradicionais de software.
Firewalls, antivírus e controles de acesso não foram projetados para resolver diretamente esse tipo de problema.
Mitigações de Spectre continuam evoluindo
A descoberta também mostra por que Spectre não pode ser tratado como uma vulnerabilidade convencional que recebeu um patch e desapareceu.
Spectre expôs uma classe de problemas relacionada à maneira como processadores modernos alcançam alto desempenho.
Desde então, diferentes variantes obrigaram fabricantes e sistemas operacionais a adaptar continuamente suas defesas.
Algumas proteções também possuem custo de desempenho.
Isso cria um desafio permanente para fabricantes: aumentar a segurança sem eliminar os benefícios que justificam técnicas como previsão de desvios e execução especulativa.
Uma proteção pode criar uma nova janela de ataque
Talvez o ponto mais interessante do TONTOU seja justamente esse.
A defesa pode funcionar exatamente como projetada e ainda assim não resolver completamente o problema.
Neutralizar corretamente o estado do preditor não garante segurança se esse estado puder ser novamente influenciado antes de ser utilizado.
Isso muda o foco da análise.
Não basta perguntar se determinada mitigação limpa corretamente o estado.
É necessário perguntar:
o que pode acontecer depois da limpeza e antes do uso?
Essa perspectiva pode levar pesquisadores a reavaliar outras proteções microarquiteturais construídas sobre princípios semelhantes.
Usuários devem manter sistemas atualizados
Para usuários e administradores, a pesquisa não significa que seja necessário abandonar processadores Intel ou AMD.
Também não existe indicação de que o TONTOU esteja sendo amplamente utilizado por criminosos em ataques reais.
A principal recomendação prática continua sendo manter sistema operacional, kernel, firmware e microcódigo atualizados, especialmente em servidores e ambientes que executam cargas de diferentes níveis de confiança.
A Intel mantém orientações específicas para administradores sobre mitigação de ataques de execução transitória e as diferentes proteções disponíveis para Spectre v2.
Empresas brasileiras também devem acompanhar
Não existe evidência de ataques direcionados ao Brasil utilizando TONTOU.
O interesse para organizações brasileiras é principalmente técnico e preventivo.
Empresas que operam grandes ambientes Linux, data centers, infraestrutura de cloud, virtualização e serviços compartilhados devem acompanhar as atualizações de fabricantes e distribuições.
Isso vale especialmente para provedores de infraestrutura e organizações nas quais usuários menos confiáveis conseguem executar código sobre hardware compartilhado.
O risco deve ser analisado de acordo com o modelo de ameaça de cada ambiente, e não como uma vulnerabilidade convencional explorável remotamente contra qualquer computador.
Spectre continua sendo um problema oito anos depois
A importância da nova pesquisa vai além da técnica Interrupt Injection.
Quando Spectre foi divulgado, em 2018, ficou claro que algumas otimizações fundamentais dos processadores modernos tinham consequências de segurança que não haviam sido completamente compreendidas.
Oito anos depois, pesquisadores continuam encontrando novas maneiras de explorar essa relação entre desempenho e isolamento.
TONTOU acrescenta uma nova dimensão ao problema: o intervalo entre neutralizar um estado perigoso e efetivamente utilizar o processador também pode se tornar uma superfície de ataque.
Isso significa que algumas defesas contra Spectre v2 terão de ser repensadas mais uma vez.
E mostra por que segurança de processadores deixou de ser apenas uma questão de corrigir bugs em software: em determinadas situações, o próprio comportamento temporal da CPU passa a fazer parte da superfície de ataque.



