Uma nova variante do ataque Spectre v2, chamada reutilização de alvos de desvio (BTR, na sigla em inglês), pode recuperar hashes da senha de root em computadores Intel com Linux em poucos minutos. A técnica explora mecanismos de compilação em tempo de execução (JIT) usados em navegadores, ambientes de execução de linguagens e no kernel do sistema operacional, e afeta processadores de diferentes fabricantes.
O ataque foi desenvolvido por pesquisadores da VUSec, grupo de segurança de sistemas e redes da Universidade Livre de Amsterdã, e da Scuola Superiore Sant’Anna. Eles avaliaram a técnica no SpiderMonkey, mecanismo JIT do Firefox, no GraalVM e no compilador JIT cBPF do kernel Linux. Os três foram considerados vulneráveis, embora os pesquisadores tenham observado diferenças na viabilidade dos exploits e nas taxas de vazamento de dados.
Spectre é uma família de vulnerabilidades em processadores identificada em 2017. Ela explora a execução especulativa, técnica usada por processadores modernos para prever e executar instruções antes de confirmar que são necessárias. Embora o processador descarte os resultados de previsões incorretas, mudanças no estado do cache podem revelar quais dados foram acessados durante a execução transitória.
No Spectre v2, o invasor abusa da previsão de desvios indiretos e tenta induzir um programa vítima a executar especulativamente código controlado pelo invasor ou uma sequência de instruções explorável. A BTR acrescenta uma condição relacionada ao código auto-modificável, usado por mecanismos JIT: previsões antigas podem continuar armazenadas no preditor de desvios mesmo depois que o código original é substituído.
“Embora os processadores modernos restabeleçam a coerência arquitetural do código após uma modificação feita pelo próprio programa, eles não necessariamente invalidam entradas antigas de previsão de desvios indiretos, ou seja, os alvos dos desvios”, afirmaram os pesquisadores Sander Wiebing, Yuhui Zhu, Alessandro Biondi e Cristiano Giuffrida em um artigo publicado com a divulgação.
Quando um mecanismo JIT libera um bloco de código e reutiliza parcialmente o mesmo endereço para um novo bloco, o processador pode manter a previsão antiga. Ao encontrar novamente o desvio indireto, ele pode saltar especulativamente para uma posição obsoleta e executar instruções do novo código em um local inesperado. Isso pode contornar proteções de software ou permitir a execução de instruções desalinhadas, expondo dados sensíveis.
O ataque pressupõe que o invasor consiga executar código sem privilégios em um mecanismo JIT e queira extrair dados do ambiente hospedeiro. Primeiro, ele induz o mecanismo a alocar um bloco de treinamento e faz com que um desvio da vítima aponte para esse bloco, criando uma entrada no buffer de alvos de desvio (BTB, na sigla em inglês). Em seguida, força a liberação do bloco e a alocação de outro que reutiliza parte do mesmo endereço. Quando o desvio é acionado novamente, o processador pode usar a entrada antiga do BTB e saltar especulativamente para o ponto de entrada anterior.
Segundo os pesquisadores, o ataque depende de que a entrada antiga do BTB não seja invalidada nem substituída após a liberação do bloco de treinamento e de que o preditor selecione essa entrada ao prever o destino do desvio. “Ao redirecionar o fluxo de execução para um ponto de entrada inválido do ponto de vista arquitetural, o invasor pode contornar as proteções contra Spectre ou executar instruções desalinhadas e, por fim, divulgar dados secretos”, explicaram.
Cristiano Guiffrida, da VUSec, a descoberta é importante porque, desde 2018, a comunidade considerava inviáveis na prática ataques desse tipo. Essa avaliação se baseava no uso de código que se modifica, recurso que permite a geração dinâmica de código em mecanismos JIT amplamente utilizados.
“A BTR tem como alvo mecanismos JIT e resulta da interação entre código auto-modificável (SMC, na sigla em inglês) e a previsão de desvios indiretos”, afirmaram os pesquisadores. Segundo eles, é a primeira vez que se demonstra que mecanismos JIT oferecem oportunidades exploráveis de execução transitória provocadas por código auto-modificável.
Como prova de conceito, os pesquisadores desenvolveram dois exploits completos contra o cBPF do kernel Linux, incluindo um que funciona com a configuração padrão e outro com a opção de proteção por ocultação de constantes ativada. Nos testes, usaram programas cBPF clássicos sem privilégios para treinar a previsão, liberar o programa original e colocar outro na área de memória reutilizada.
O destino antigo levou o processador a executar instruções criadas pelo invasor em um deslocamento desalinhado. Isso provocou o acesso especulativo a dados e deixou um padrão mensurável na memória cache, que permitiu aos pesquisadores deduzir as informações byte a byte. No segundo exploit, eles adaptaram a técnica para codificar instruções controladas pelo invasor nos deslocamentos dos saltos.
Em seguida, os pesquisadores localizaram um processo `su` em execução e recuperaram da memória o hash da senha de root a uma taxa de oito bytes por segundo. “Testamos o ataque completo tanto no Raptor Cove quanto no Lion Cove e vazamos a senha em uma média de três e cinco minutos, respectivamente”, afirmaram.
Na prática, obter o hash de uma senha não é o mesmo que recuperar a senha em texto simples. Ainda assim, um invasor pode tentar quebrar o hash sem conexão ou recorrer a recursos de computação em nuvem. As chances de sucesso dependem do algoritmo de hash e da força da senha.
No SpiderMonkey, a demonstração de conceito da VUSec mostrou que previsões antigas persistem após a reutilização do código, mas não demonstrou um ataque completo contra o navegador. A Mozilla avaliou proteções baseadas no IBPB, uma barreira para o preditor de desvios indiretos, mas, segundo os pesquisadores, atualmente prioriza concluir e implementar o isolamento de sites.
No GraalVM, os pesquisadores encontraram uma maneira de ignorar especulativamente uma verificação da sandbox. No entanto, a aleatorização dos locais do cache de código JIT dificulta a reutilização de regiões e, durante os testes, a atividade do mecanismo apagou as previsões antes que fosse possível concluir o ataque.
Segundo a VUSec, a maioria dos equipamentos modernos é vulnerável à BTR. “A previsão de desvios indiretos é inerente aos processadores modernos, e o BTR explora a dessincronização entre o preditor de desvios e o estado real do código”, explicou o grupo. “Nenhum processador atual tem um mecanismo para manter os dois sincronizados. Portanto, até que os fornecedores adicionem um, seu processador estará vulnerável.”
Os pesquisadores afirmam ter confirmado o comportamento nos processadores testados da Intel, AMD e Arm. Após um processo de divulgação responsável, as falhas foram registradas como
CVE-2026-64507
e
CVE-2026-64508
. Correções já foram incorporadas ao kernel Linux.
A recomendação é instalar as atualizações do sistema operacional e do firmware. Usuários de Linux também devem atualizar para a versão mais recente do kernel.
A divulgação ocorre quase dois meses depois de pesquisadores do MIT CSAIL apresentarem a injeção de interrupção, uma técnica de execução especulativa capaz de contornar defesas contra Spectre v2 e vazar áreas da memória do kernel em sistemas Linux com processadores Intel e AMD. Pesquisas anteriores da VUSec sobre execução especulativa e ataques microarquiteturais incluem RIDL, BHI e SLAM.
Publicidade
Exclusivo para leitores do CaveiraTech, de R$ 89 por R$ 49/mês, para sempre. Hospedado em São Paulo com AntiDDoS, backup grátis e BGP grátis. Use Linux, Windows ou BSDs. Valide seu projeto agora sem dor de cabeça, sem IOF e com pagamentos via Pix. Ativação em 120s. Saiba mais...