- Uma nova vulnerabilidade de segurança no Intel CPU, chamada Branch Privilege Injection, foi descoberta devido a uma condição de corrida no preditor de branches
- Esse ataque se torna possível por causa de atualizações assíncronas e sincronização insuficiente entre domínios de segurança
- Mitigações de hardware existentes, como eIBRS e IBPB, tornam-se ineficazes diante dessa condição de corrida
- A Intel mitiga essa vulnerabilidade com uma atualização de microcódigo, com impacto de desempenho
- A vulnerabilidade afeta todos os CPUs Intel a partir da 9ª geração e ocorre independentemente do sistema operacional
Visão geral do ataque Branch Privilege Injection
- Branch Privilege Injection é uma vulnerabilidade de segurança que revive os ataques de injeção de alvo de branch da família Spectre-BTI de uma nova forma
- As defesas de hardware contra Spectre na Intel CPU funcionaram por 6 anos, mas esta pesquisa comprovou que elas podem ser contornadas por meio de uma condição de corrida (race condition)
- O preditor de branches opera de forma assíncrona em relação ao fluxo de instruções, o que faz com que, em certas situações, ocorram atualizações com atraso de dezenas ou centenas de ciclos
- Quando uma atualização do preditor de branches está em andamento e ocorre uma transição de privilégio (por exemplo, usuário-kernel, convidado-hypervisor) ou um IBPB, essa atualização pode ser associada incorretamente ao novo modo de privilégio
- Isso foi denominado Branch Predictor Race Condition, e pode levar ao vazamento de informações sensíveis da memória
Demonstração do ataque e impacto
- Com esse método de ataque, a taxa de vazamento arbitrário de memória em Ubuntu 24.04 (com os patches mais recentes e as mitigações padrão aplicadas) chegou a 5.6KiB/s
- Há uma demonstração em vídeo do sucesso do ataque em uma Intel Raptor Lake (13ª geração)
Mitigações afetadas
- eIBRS: mecanismo de segurança introduzido nos CPUs Intel desde a 9ª geração (Coffee Lake Refresh), que separa a predição de branches indiretos por domínio de segurança.
- IBPB: como o eIBRS bloqueia apenas ataques entre domínios de segurança de hardware, o IBPB oferece uma função de invalidar toda a predição de branches indiretos para cobrir zonas adicionais de segurança, como máquinas virtuais não confiáveis
- Ambos são mitigações recomendadas como padrão de segurança nos ambientes designados
Análise detalhada da Branch Predictor Race Condition
- Quando ocorre uma condição de corrida no preditor de branches, as garantias de segurança do eIBRS e do IBPB deixam de valer
- Quando uma transição de privilégio acontece durante a execução de instruções, uma atualização de predição de branch em andamento pode ser atribuída incorretamente ao novo domínio de segurança
- Mesmo ao executar IBPB, atualizações de predição que estavam em andamento não são limpas e permanecem no preditor, gerando problemas de segurança
Mitigações para a Branch Predictor Race Condition
- A Intel desenvolveu uma atualização de microcódigo para processadores vulneráveis e confirmou experimentalmente o bloqueio do ataque em Alder Lake
- Com essa mitigação aplicada, houve perda de desempenho de até 2.7% em Alder Lake
- Estratégias alternativas de mitigação em software também foram avaliadas, com overhead de desempenho medido entre 1.6% (Coffee Lake Refresh) e 8.3% (Rocket Lake)
- Mais detalhes estão disponíveis no artigo
Materiais adicionais
- O principal artigo de pesquisa sobre Branch Privilege Injection está previsto para ser apresentado na USENIX Security 2025
- Também está prevista uma apresentação focada em detecção da vulnerabilidade e exploit na Black Hat USA 2025
- O código-fonte do ataque e dos experimentos foi publicado no github
FAQ
1. Meu computador é afetado?
- Todos os processadores Intel a partir da 9ª geração (Coffee Lake Refresh) são afetados pela Branch Privilege Injection
- A neutralização do IBPB também foi confirmada em produtos até a 7ª geração (Kaby Lake)
2. CPUs não-Intel também são afetados?
- Segundo a análise, esse problema não foi encontrado em sistemas AMD e ARM
3. Só o Linux é afetado?
- O PoC é para Linux, mas o problema fundamental está no hardware
- Todos os sistemas operacionais executados nesse hardware são vulneráveis
4. Qual é a recomendação?
- Recomenda-se instalar as atualizações mais recentes do sistema operacional e da BIOS
1 comentários
Comentários do Hacker News
Em um texto publicado por Harvard, foi usada uma metáfora espirituosa dizendo que, para azar de John, os branches fizeram um pacto com Satanás e com a mecânica quântica e lançaram uma magia nociva sobre futuras gerações de processadores, magia que acabou ficando conhecida por nomes como “vazamento de tensão causado pelo escalonamento” ou “aumento de calor desperdiçado”
Comentário de que os textos de James Mickens são sempre divertidos, junto com a citação de uma piada de que o Mossad encarregado de segurança não se preocupa com coisas como HTTPS; se eles precisarem dos dados, simplesmente trocam seu celular por uma réplica de urânio com um drone e, no fim, compram seus pertences em uma venda de espólio para ver as fotos pessoalmente
Opinião de que a parte que menciona inúmeras matrizes traz um pouco de esperança, e relato de que o irmão de John descobriu como ensinar essas matrizes a falar como pessoas
Compartilhamento do blog dos pesquisadores e do link para o artigo
Feedback dizendo que o link acima foi trocado do comunicado de imprensa da universidade para o post de blog dos pesquisadores
Sobre o impacto da nova vulnerabilidade, um pesquisador explica que é possível ler repetidamente todo o conteúdo da memória da CPU, chegando a 5.000 bytes por segundo, e que, no fim, se o ataque tiver sucesso, todas as informações da CPU podem vazar
Desejo de que a URL do título fosse trocada pelo link do blog
Resumo de como o branch predictor funciona
Satisfação em ver que o professor Kaveh Razavi já ensinou um curso de segurança de hardware em sua universidade, e que o curso foi realmente muito legal
Comentário de que alguns anos atrás tentou verificar esse curso e outra aula sobre malware, mas quase não havia informações públicas, junto com a pergunta se existem gravações oficiais ou notas online
Pergunta se alguém conhece a relação entre o ataque Training Solo e esta vulnerabilidade
Dúvida sobre o fato de a explicação do patch de microcódigo do chipset mencionar apenas Windows, perguntando o que acontece com usuários de Linux
Explicação de que o kernel Linux também oferece suporte ao carregamento de microcódigo há muito tempo, mas a Intel precisa distribuir os arquivos de microcódigo para que cada distribuição possa atualizá-los, e isso precisa entrar nas atualizações do sistema
Explicação de que a Intel publica atualizações de microcódigo para Linux no GitHub, então cada distribuição pega de lá automaticamente e faz a distribuição; quanto a saber se essa vulnerabilidade específica já foi corrigida, a pessoa diz que não tem certeza por não ser especialista
Compartilhamento do link para o aviso oficial de segurança da Intel
Opinião perguntando se CPUs da AMD também têm uma vulnerabilidade parecida, apontando que mecanismos técnicos como branch prediction são a causa fundamental de vulnerabilidades de segurança em CPUs, e questionando como a AMD evita esse tipo de problema
Resposta, com base no resumo do blog dos pesquisadores, de que esta vulnerabilidade Branch Privilege Injection não afeta sistemas AMD nem ARM
Essência de que a AMD não escapou completamente desse tipo de problema; assim como em Spectre e Meltdown, o escopo varia conforme a vulnerabilidade, e esta é limitada à Intel, mas a AMD também já esteve exposta a vulnerabilidades da mesma família, como Spectre
Explicação um pouco mais detalhada enfatizando que execução especulativa em si não é a vulnerabilidade, mas um mecanismo necessário em CPUs modernas; como os defeitos internos são tão complexos que é difícil descobri-los, é possível que AMD e ARM também tenham bugs semelhantes; preocupação de que a única forma de corrigir completamente seria reconhecer que o isolamento de código é impossível em sistemas modernos, algo fatal para o modelo de negócios de algumas grandes empresas
Como contramedida para essa vulnerabilidade, sugestão de que, no momento da atualização da predição de branch, o nível de privilégio poderia ser armazenado como um snapshot e transmitido junto, o que parece uma solução semelhante a problemas vistos em software
Observação bem-humorada de que seria fácil prevenir isso se o preditor de branches da CPU pudesse verificar diretamente os limites do buffer e as informações de privilégio do código, mas isso exigiria adicionar informações importantes aos ponteiros
Opinião de que é preciso entender com mais clareza o escopo do problema, mas ataques de vulnerabilidade via execução especulativa realmente exigem uma preparação enorme e não significam muito sem permissão para executar código diretamente; não é possível vazar informações arbitrárias a partir de código JS arbitrário no navegador, e a pessoa diz que desativa todas as mitigações por ganho de desempenho
Recomendação da arquitetura CHERI
Observação de que não basta mudar apenas a estrutura dos ponteiros; menciona-se o antigo esquema de segmentação x86 (80286), que de fato atribuía informações de limite de endereço a cada acesso de memória no hardware, mas mesmo esses sistemas exigiam que o software tratasse corretamente as informações de limite e acabavam tendo a mesma limitação
Pergunta se, neste momento, todos os principais sistemas operacionais já têm patches aplicados para essa vulnerabilidade (ou o microcódigo relacionado)
Resposta: sim, o embargo de divulgação terminou hoje (13 de maio)