Uma nova técnica de ataque de side-channel que afeta diversas gerações de processadores Intel foi descoberta, permitindo que dados vazem através do registro EFLAGS.
A nova técnica foi descoberta por pesquisadores da Universidade Tsinghua, da Universidade de Maryland e de um laboratório de computação (BUPT) gerido pelo Ministério da Educação da China, e é diferente de muitos outros ataques de side-channel.
Em vez de depender do sistema de cache como muitos outros ataques de side-channel, este novo ataque utiliza uma falha na execução transitória que torna possível extrair dados secretos do espaço de memória do usuário através de análise de tempo.
O ataque funciona como um side-channel para o Meltdown, uma falha crítica de segurança descoberta em 2018 que afeta muitos microprocessadores baseados em x86.
O Meltdown explora uma característica de otimização de desempenho chamada "execução especulativa" para permitir que os atacantes ignorem os mecanismos de isolamento de memória e acessem segredos armazenados na memória do kernel, como senhas, chaves de criptografia e outros dados privados.
O Meltdown foi amplamente mitigado por meio de correções de software, atualizações de microcódigo e redesenhos de hardware; no entanto, nenhuma solução abordou o problema 100%, e o método de ataque mais recente pode funcionar mesmo em sistemas totalmente corrigidos, dependendo da configuração de hardware, software e correção.
O novo ataque de side-channel apresentado em um artigo técnico publicado em Arxiv.org descreve uma falha na mudança do registro EFLAGS na execução transitória, afetando o tempo das instruções JCC (salto em código de condição).
O registro EFLAGS é um registro da CPU que contém várias flags relacionadas ao estado do processador, enquanto a instrução JCC é uma instrução da CPU que permite o salto condicional com base no conteúdo do registro EFLAGS.
O ataque é realizado em duas fases, sendo a primeira para desencadear a execução transitória e codificar dados secretos por meio do registro EFLAGS, e a segunda para medir o tempo de execução da instrução KCC para decodificar os dados.
Os dados experimentais mostraram que o ataque alcançou 100% de recuperação de dados (vazamento) para o Intel i7-6700 e o Intel i7-7700 e teve algum sucesso contra o mais recente CPU Intel i9-10980XE.
O experimento foi realizado no Ubuntu 22.04 jammy com a versão do kernel Linux 5.15.0.
No entanto, os pesquisadores observam que este ataque de tempo não é tão confiável quanto os métodos de side-channel do estado do cache, e para obter melhores resultados em chips recentes, o ataque teria que ser repetido milhares de vezes.
"Em nosso experimento, descobrimos que a influência do registro EFLAGS no tempo de execução da instrução Jcc não é tão persistente quanto o estado do cache", diz a parte sobre a avaliação dos dados experimentais.
"Por cerca de 6-9 ciclos após a execução transitória, o tempo de execução do Jcc não será capaz de construir um side-channel.
Empiricamente, o ataque precisa ser repetido milhares de vezes para obter maior precisão." Os pesquisadores admitem que as causas fundamentais do ataque ainda são elusivas e hipotetizam que há um buffer na unidade de execução do CPU Intel, que precisa de tempo para reverter se a execução deve ser retirada, um processo que causa uma parada se a instrução subsequente depender do alvo do buffer.
No entanto, eles ainda propõem algumas mitigação não triviais, como alterar a implementação da instrução JCC para tornar a medição de execução adversária impossível em qualquer condição, ou reescrever o EFLAGS após a execução transitória para reduzir sua influência sobre a instrução JCC.
Publicidade
O curso Python Básico da Solyd oferece uma rápida aproximação à linguagem Python com diversos projetos práticos. Indo do zero absoluto até a construção de suas primeiras ferramentas. Tenha também suporte e certificado gratuitos. Saiba mais...