O código foi apagado. O processador continuou apontando para ele

Pesquisadores da VU Amsterdam e da Scuola Superiore Sant'Anna mostraram que a CPU guarda o alvo de um desvio indireto mesmo depois de o código ter sido liberado e substituído por outro no mesmo endereço. Com isso extraíram o hash da senha de root de um Linux em três a cinco minutos. O comportamento apareceu em todos os processadores testados, de três fabricantes.

O que aconteceu: o grupo VUSec, da Vrije Universiteit Amsterdam, e a Scuola Superiore Sant'Anna divulgaram em 29 de setembro o Branch Target Reuse, uma variante do Spectre v2 aceita para a conferência CCS 2026. O ataque explora o fato de que o processador restaura a coerência do código depois de uma modificação, mas não invalida necessariamente as entradas antigas de previsão de desvio indireto. O efeito é um primitivo de execução especulativa sobre código já liberado: quem treina a previsão, libera o bloco e ocupa o mesmo endereço passa a escolher o que o processador vai especular. A demonstração no Linux usa BPF clássico sem privilégio, vaza oito bytes por segundo e reconstrói o hash da senha de root em três a cinco minutos. As correções no kernel receberam CVE-2026-64507 e CVE-2026-64508.

Spectre completa oito anos e continua produzindo trabalho novo, o que por si só diz alguma coisa sobre a natureza do problema. Não é um defeito que alguém esqueceu de corrigir. É uma consequência de como o processador ganha velocidade, e cada rodada de pesquisa encontra um caminho diferente de transformar essa velocidade em vazamento.

O trabalho que saiu nesta terça-feira tem uma característica que as rodadas anteriores nem sempre tiveram. Ele é curto de executar. Entre iniciar o ataque e ter na mão o hash da senha de root de uma máquina Linux passam-se de três a cinco minutos, em média. Não é um número de laboratório com condição artificial: é o tempo medido em duas gerações da Intel, a Raptor Cove e a Lion Cove.

O que o processador esquece de esquecer

Código que se reescreve em tempo de execução é a regra, não a exceção. Todo motor JIT faz isso. O navegador compila JavaScript, a máquina virtual Java compila bytecode, o kernel do Linux compila um filtro BPF. O bloco compilado vive num cache e, quando deixa de ser necessário, aquela memória volta para o pool e recebe outro bloco.

A parte arquitetural dessa troca funciona. O processador percebe a modificação e restaura a coerência do código. A parte especulativa é que não acompanha. As entradas de previsão de desvio indireto associadas ao endereço antigo continuam onde estavam, apontando para um deslocamento que pertencia ao código anterior.

Os pesquisadores chamam o resultado de execução especulativa depois da liberação, por analogia com o uso de memória já devolvida. A lógica é a mesma. Alguém treina a previsão com um código, libera esse código, coloca outro no mesmo endereço, e o processador continua especulando em direção ao alvo antigo. Só que agora o conteúdo naquele endereço é o que o atacante escolheu colocar lá.

Por que o BPF é o caminho mais curto

A prova de conceito mais completa usa o BPF clássico do Linux, sem privilégio nenhum. Um programa cBPF é compilado e treina a previsão. Em seguida ele é liberado e um segundo programa ocupa a mesma região de memória. A partir daí o atacante dirige a especulação para onde quiser e percorre a memória do kernel por encadeamento de ponteiros até chegar à estrutura que guarda o hash.

A taxa medida é de oito bytes por segundo. Parece pouco, e é exatamente esse o ponto. Oito bytes por segundo basta quando se sabe onde procurar. O objetivo nunca foi ler o kernel inteiro. Foi ler um campo.

Há uma segunda versão do ataque que pesa mais do que a primeira. O Linux já tinha uma defesa contra o plantio de instruções no código gerado, o constant blinding, que embaralha constantes justamente para impedir que o atacante escolha o que vai ser executado. Os pesquisadores adaptaram o ataque para contornar essa defesa e ainda assim ficaram dentro dos cinco minutos.

A superfície não termina no kernel

Onde o ataque foi demonstradoQuem gera o códigoOnde isso aparece na prática
cBPF do Linuxcompilador BPF do kernelseccomp, Docker, Chrome, filtragem de pacote
Oracle GraalVMcompilação de bytecode em execuçãoserviço Java em contêiner
SpiderMonkey, do FirefoxJavaScript e WebAssemblynavegador, só em prova de conceito

A entrada pelo cBPF é a que preocupa em servidor, porque o seccomp está presente em praticamente todo contêiner e o Docker aplica filtro de chamada de sistema por padrão. A entrada pelo navegador ficou em prova de conceito e depende de o isolamento por site não estar cumprindo o papel dele.

O que já existe de correção

As correções do kernel foram integradas e receberam dois identificadores. A CVE-2026-64507 cuida de disparar o descarte da previsão, o IBPB, quando uma região de JIT do BPF é alocada de novo. A CVE-2026-64508 endurece o BPF contra o plantio de instruções. Oracle e Mozilla publicaram mitigações parciais, e no Firefox a defesa principal continua sendo o isolamento por site.

Vale registrar o que os autores dizem sobre a origem do problema, porque isso muda o horizonte da conversa. A Lion Cove é a geração mais antiga da Intel em que eles não encontraram a condição de corrida que facilita o ataque. Não significa que ela esteja imune, porque o reuso de alvo continua possível em outras condições. Significa que a correção definitiva não está num pacote de atualização. Está no silício das próximas gerações, e isso é um calendário de anos.

A frase dos pesquisadores que resume o alcance é seca: o comportamento foi confirmado em todos os processadores testados, entre Intel, AMD e Arm.

O que muda para quem opera no Brasil

  • O cenário que interessa é o de máquina compartilhada. Vazar oito bytes por segundo exige código rodando na máquina. Em servidor dedicado com aplicação própria, isso é um agravante de um comprometimento que já aconteceu. Em VPS, em cluster de contêiner multiusuário e em ambiente de execução de código de cliente, é a diferença entre isolar e não isolar vizinhos.
  • O kernel do parque não se atualiza sozinho. A correção existe, e o levantamento que importa agora é outro: quantas máquinas estão em distribuição com suporte ativo, quantas dependem de kernel travado por causa de driver ou de appliance, e quem no contrato responde pela janela de reinício.
  • A conta de desempenho vai aparecer na reunião seguinte. Descarte de previsão custa ciclo, e mitigação de Spectre tem histórico de custar mais em carga com muita chamada de sistema. Quem administra base de dados e fila de mensagem deve medir antes e depois, com número próprio, porque a discussão sobre desligar mitigação sempre volta e é melhor que ela volte com medição.
  • Provedor de nuvem e de hospedagem entra na conversa por escrito. A pergunta útil não é se o fornecedor está ciente. É em que versão de kernel está o host, se a mitigação de reuso de JIT está ativa e qual o efeito medido dela no plano contratado. Provedor nacional de médio porte costuma responder isso rápido quando a pergunta chega objetiva.

Leitura LATAMSEC

Três perguntas, na ordem em que fazem diferença.

Para quem opera infraestrutura: onde na empresa roda código de terceiro na mesma máquina que roda código nosso? A lista costuma ser maior do que a memória sugere. Entram plataforma de integração, ambiente de construção compartilhado, execução de função sem servidor em plano compartilhado e qualquer produto que aceite script de cliente.

Para o time de plataforma: qual é hoje a distância média entre a publicação de uma correção de kernel e a aplicação dela no parque? Se a resposta passar de semanas, esta pesquisa não muda nada no curto prazo e o esforço rende mais em encurtar essa distância do que em discutir este ataque específico.

Para quem decide orçamento: a renovação de hardware do próximo ciclo já considera que parte dessa classe de falha só se resolve em geração nova de processador? É um argumento que raramente aparece na planilha de substituição de servidor, e ele pertence a ela.

Outros sinais do dia

  • Criptografia

    OpenSSL e wolfSSL corrigem cerca de uma dezena de falhas cada

    As duas bibliotecas publicaram correções de severidade alta no mesmo dia. Vale checar o que no parque compila contra elas em vez do pacote da distribuição.

  • Espionagem

    Star Blizzard usa a cadeia RedFlick para entregar o backdoor CosmicPulse

    O grupo russo passou a operar campanhas de phishing em escala maior do que a habitual, com alvo mantido em organizações civis e de política externa.

  • Infraestrutura

    África do Sul pede ajuda após ataque ao controle de tráfego aéreo

    Ferramenta de resgate foi encontrada em rede operacional de controle aéreo. É o tipo de ambiente em que a janela de manutenção compete com a operação.

  • Mensageria

    Signal conclui o backup local cifrado no iOS e no desktop

    A versão 8.30 fecha a distribuição do recurso em todos os sistemas suportados. Backup local muda o desenho de recuperação de conta em uso corporativo.

Fontes e aprofundamento

  1. VUSec · Branch Target Reuse: Spectre-v2 Attacks in JIT Engines, com o primitivo de execução especulativa sobre código liberado, os alvos demonstrados e as mitigações recomendadas.
  2. BleepingComputer · New Spectre v2 attack variant leaks Linux root password hash in minutes, com os tempos medidos em Raptor Cove e Lion Cove e a variante que contorna o constant blinding.
  3. Phoronix · Branch Target Reuse, BTR: New Spectre V2 Attack Targeting JIT Compilers, com a leitura do lado do kernel depois da queda do embargo.
Esse risco está no radar do seu conselho? O diagnóstico traduz o tema do dia em prioridade, dono e prazo para a sua empresa. Solicitar diagnóstico.