top of page

Novo Spectre-v2 BTR quebra defesas e vaza dados da memória do Linux

há 4 horas
4 min de leitura


Pesquisadores da VUSec e da Scuola Superiore Sant'Anna divulgaram uma nova variante do Spectre v2 capaz de explorar mecanismos de compilação Just-In-Time (JIT) para contornar proteções existentes e acessar dados sensíveis. Batizada de Branch Target Reuse (BTR), a técnica afeta mecanismos presentes em navegadores, runtimes de linguagens e no kernel de sistemas operacionais, alcançando diferentes fabricantes de processadores.


O BTR explora a interação entre código automodificável, conhecido como Self-Modifying Code (SMC), e os mecanismos utilizados pelos processadores para prever o destino de desvios indiretos. Segundo os pesquisadores Sander Wiebing, Yuhui Zhu, Alessandro Biondi e Cristiano Giuffrida, CPUs modernas restauram a coerência arquitetural quando um código é modificado, mas não necessariamente eliminam entradas antigas utilizadas pelo mecanismo de previsão de branches.

Na prática, um destino de branch armazenado no Branch Target Buffer (BTB) pode permanecer no processador mesmo depois que o código associado a ele deixa de existir. Se um mecanismo JIT posteriormente reutilizar aquela região de memória para gerar um código diferente, a CPU poderá especulativamente executar o novo conteúdo utilizando uma previsão criada para o código anterior.

Os pesquisadores descrevem esse comportamento como uma espécie de "execute-after-free" transitório. O atacante consegue redirecionar temporariamente o fluxo de execução para código recém-gerado em offsets obsoletos, possibilitando contornar mecanismos de proteção contra Spectre ou alcançar sequências de instruções desalinhadas capazes de revelar informações.


O BTR foi avaliado contra o SpiderMonkey, mecanismo JIT utilizado pelo Mozilla Firefox, o GraalVM e o JIT cBPF presente no kernel Linux. Todos foram considerados afetados, embora os pesquisadores tenham encontrado diferenças significativas na facilidade de exploração e nas taxas de vazamento de informações.


Como prova de conceito, a equipe desenvolveu dois exploits completos contra o kernel Linux. Os ataques conseguiram recuperar, em poucos minutos, o hash da senha do usuário root em um sistema Intel totalmente atualizado e executando as proteções padrão.


Spectre é uma classe de vulnerabilidades de CPU revelada originalmente em 2017 que explora a execução especulativa. Esse mecanismo melhora o desempenho ao permitir que o processador antecipe e execute determinadas instruções antes de saber se elas realmente serão necessárias.


Embora resultados de previsões incorretas sejam posteriormente descartados, alterações microarquiteturais produzidas durante a execução especulativa podem permanecer observáveis. Ataques Spectre exploram, por exemplo, diferenças no tempo de acesso ao cache para inferir dados que não deveriam estar disponíveis ao invasor.


O Spectre v2 concentra-se especificamente na previsão de branches indiretos. Ataques tradicionais procuram manipular o mecanismo de previsão para fazer uma aplicação vítima executar especulativamente um gadget ou trecho de código escolhido pelo atacante, deixando alterações no cache que posteriormente permitem reconstruir informações sensíveis.


O BTR introduz uma abordagem diferente. Em vez de depender de uma violação "espacial", na qual a previsão direciona um branch para outro destino, o ataque explora uma alteração "temporal": o branch e o endereço de destino podem permanecer iguais, enquanto o código existente naquele endereço muda.


O ataque pressupõe que o invasor consiga executar código sem privilégios em um ambiente com JIT. Primeiro, ele induz o mecanismo a alocar uma região de treinamento e força o branch da vítima a saltar para ela, criando uma entrada correspondente no BTB.


Em seguida, o atacante provoca a liberação dessa região e faz com que outro bloco de código seja alocado reutilizando parcialmente o mesmo endereço. Quando o branch indireto é executado novamente, o processador pode utilizar a entrada antiga que permaneceu no BTB e saltar especulativamente para o antigo ponto de entrada, que agora contém código com significado diferente.


Para que o ataque funcione, a entrada antiga precisa sobreviver à liberação da região de treinamento e continuar sendo escolhida pelo mecanismo de previsão. Nessas condições, o fluxo especulativo pode ser desviado para um ponto arquiteturalmente inválido, permitindo contornar proteções contra Spectre ou executar instruções desalinhadas para extrair dados.


Segundo Cristiano Giuffrida, o BTR representa o primeiro exemplo prático de um ataque Spectre-v2 "in-place", no qual o mesmo branch indireto é utilizado tanto para treinamento quanto para exploração. A descoberta contraria a suposição de que ataques desse tipo exigiriam necessariamente a manipulação de diferentes destinos.


A nova variante também consegue comprometer pressupostos de mitigações existentes contra Spectre-v2, incluindo técnicas relacionadas ao Training Solo, associado às vulnerabilidades CVE-2024-28956 e CVE-2025-24495. A principal limitação do BTR é depender de ambientes que executam mecanismos JIT.


Esse requisito, porém, não restringe o problema aos navegadores. Kernels modernos também podem executar compiladores JIT, como ocorre com o cBPF no Linux, ampliando a superfície potencial de ataque.


Após a divulgação coordenada, mitigações específicas para o BTR foram incorporadas ao kernel Linux e receberam os identificadores CVE-2026-64507 e CVE-2026-64508. No caso do cBPF, a proteção utiliza o IBPB (Indirect Branch Predictor Barrier), mecanismo destinado a impedir que estados anteriores do preditor de branches sejam reutilizados em determinados contextos.


O GraalVM reduz a possibilidade de reutilização das mesmas regiões ao randomizar a localização do cache de código JIT. A Mozilla avaliou mitigações baseadas em IBPB, mas, segundo os pesquisadores, está priorizando a conclusão e implantação de isolamento por site no Firefox.


A pesquisa também aponta uma questão mais ampla na arquitetura dos processadores modernos. CPUs possuem mecanismos para sincronizar estruturas microarquiteturais, como caches de instruções e dados, quando código é modificado. O BTR demonstra, porém, que o estado relacionado à previsão de branches pode continuar desatualizado depois dessas alterações.


Sincronizar todas essas estruturas sempre que um código JIT for reescrito pode impor custos significativos de desempenho, o que dificulta uma solução abrangente no hardware. Para os pesquisadores, essa característica indica que comportamentos semelhantes ao BTR podem surgir em futuras investigações sobre execução especulativa.


A divulgação ocorre cerca de dois meses depois de pesquisadores do MIT CSAIL apresentarem o Interrupt Injection, outra técnica de execução especulativa capaz de contornar defesas contra Spectre v2 e vazar conteúdo arbitrário da memória do kernel em sistemas Linux baseados em processadores Intel e AMD.

 
 
image.png
Cópia de Cyber Security Brazil_edited.jpg

Cyber Security Brazil desde 2021, atuamos como referência nacional em segurança digital, oferecendo informação confiável, conteúdo especializado e fortalecendo o ecossistema de cibersegurança no Brasil.

Institucional

(11) 93937-9007

INSCREVA SEU EMAIL PARA RECEBER

ATUALIZAÇÕES, POSTS E NOVIDADES

  • RSS
  • Instagram
  • LinkedIn

© 2025 Todos os direitos reservados a Cyber Security Brazil

bottom of page