Nova vulnerabilidade de hardware em processadores Intel é detectada

Uma breve explicação em linguagem simples de um método avançado de roubo de dados usando recursos das CPUs atuais.

Pesquisadores da Universidade de Maryland, nos EUA, e da Universidade de Tsinghua, na China, publicaram um artigo científico documentando um novo método de ataque de canal lateral que explora uma vulnerabilidade de hardware anteriormente desconhecida nos processadores Intel. Embora a vulnerabilidade pareça afetar os processadores mais recentes do fabricante de chips, ela é mais eficaz para atacar modelos mais antigos que também estão expostos à vulnerabilidade Meltdown. O artigo provavelmente seria de interesse puramente científico, não fosse por um aspecto: os invasores roubam informações confidenciais alterando os dados do registro de status.

Em português, por favor

As vulnerabilidades do processador de hardware ligadas à execução especulativa de instruções têm sido objeto de muita pesquisa por mais de cinco anos. Para simplificar ao máximo, todos os ataques propostos podem ser resumidos da seguinte forma: a CPU é de alguma forma forçada a ler dados aos quais o usuário não deveria ter acesso. Imagine este cenário teórico: o programa do invasor não tem acesso à chave de criptografia usada para proteger dados confidenciais. Se instruirmos a CPU a “ler a chave de criptografia em um determinado endereço”, a instrução simplesmente não será seguida. A ajuda chega (ao invasor) na forma de execução especulativa de instruções – uma característica importante das CPUs dos dias de hoje, que existe há quase três décadas: para acelerar, em vez de esperar que uma instrução termine, o processador executa a seguinte em paralelo.

Se a primeira instrução verificar os direitos de acesso a informações confidenciais, ela não deve, em teoria, permitir a execução da instrução seguinte para ler essas informações. Mas aí é tarde demais: a seguinte instrução está sendo executada especulativamente. Observe que ainda não temos acesso a esses dados – mas a CPU tem. No caso de vulnerabilidades conhecidas, como Spectre, os dados são carregados temporariamente no cache da CPU, mas não podem ser lidos assim. No entanto, podem ser lidos pelos canais laterais; por exemplo, executando repetidamente uma instrução – cujo tempo de processamento varia dependendo dos dados no cache. Repetir essa operação muitas (milhares!) de vezes permite que os invasores recuperem dados apenas observando a rapidez ou a lentidão com que algum comando aparentemente inofensivo é executado.

Percebemos que essa descrição “simples” ainda soa complicada. O novo artigo é ainda mais desconcertante, especialmente porque os autores decidiram não perder tempo com uma descrição detalhada do ataque. O diagrama abaixo faz a descrição completa do caso:

Visão geral de execução transitória de canal lateral temporal.

Visão geral de execução transitória de canal lateral temporal. Fonte.

Vamos tentar entender. EFLAGS é um registrador de flags no processador Intel que rastreia o status operacional da CPU. Ele pode armazenar o resultado dos cálculos, em particular se for igual a zero (o chamado zero flag ou ZF, em inglês). Em seguida, vem a mágica: imagine que um colega seu pense em um número de 1 a 10 e seja instruído a guardá-lo para si. Você continua chamando os números de 1 a 10 (procurando por quaisquer sinais que possam denunciar seu colega), mas ele não quer compartilhar a resposta correta e responde a cada vez com a palavra “crisântemo”. No entanto, quando você pronuncia o número correto, ele demora um pouco mais para dizer “crisântemo” em comparação com outras vezes.

Algo semelhante acontece neste novo ataque: realizamos inúmeros cálculos com dados sensíveis. Todos eles são feitos especulativamente. O resultado é escrito no flag ZF (igual ou diferente de zero). Não podemos saber diretamente o status desse sinalizador. Mas então executamos uma instrução JCC um tanto inútil (especificamente a instrução JZ – “jump if zero“), que roda um pouco mais devagar se a adivinharmos corretamente! E é esse atraso mensurável na resposta que constitui a vulnerabilidade.

Não é um problema (ainda)

O aspecto mais interessante desse ataque é que ele não funciona sozinho. Para garantir que a execução especulativa das instruções necessárias seja possível, os bandidos precisam explorar mais uma vulnerabilidade. O artigo que estamos discutindo usa a vulnerabilidade Meltdown, descoberta em 2018, que felizmente fornece acesso a informações que estão fora do alcance de pessoas leigas. Como resultado, dados confidenciais foram lidos com 100% de confiabilidade em todas as CPUs antigas afetadas por essa vulnerabilidade (o estudo usou um Intel Core i7 de sexta e sétima geração). Embora o experimento tenha falhado em CPUs de décima geração, eles também experimentaram algum atraso ao executar uma determinada instrução do conjunto JCC.

Na realidade, tipos de ataques ainda mais versáteis, como o Spectre, que roubam informações do cache da CPU, têm uma aplicação bastante restrita. Mas, pelo menos no caso deles, era óbvio que algo precisava ser feito: a probabilidade de um ataque avançado direcionado a dados críticos era diferente de zero. Quanto ao novo artigo, estamos lidando mais com uma ideia de que, se funcionar, se aplica a processadores Intel mais antigos.

Mas a notícia em si é significativa: agora existe um novo mecanismo de canal lateral para extrair dados usando o status do registro de flag. Não se pode descartar que no futuro essa abordagem, combinada com alguma outra vulnerabilidade, também afetará as novas CPUs. Ou talvez tudo seja resolvido antes de vermos um novo ataque: afinal, a dependência do tempo de execução da instrução em relação aos dados é um problema bastante sério. Existe toda uma subdisciplina de criptografia que lida com a proteção de algoritmos de criptografia contra ataques de temporização.

De qualquer forma, a pesquisa sobre as especificidades das CPUs mais novas está em andamento. Felizmente, executar ataques a vulnerabilidades de hardware é tão difícil quanto entendê-los. E, embora ainda não tenhamos visto nada que possa ser aplicado em grande escala, os especialistas de segurança da informação em empresas que lidam com dados altamente confidenciais devendo levar em consideração essas ameaças e, no mínimo, monitorar sua evolução.

Dicas