Vulnerabilidade nos processadores Intel levando ao vazamento de dados por meio de canais de terceiros

Um grupo de pesquisadores de universidades chinesas e americanas identificou uma nova vulnerabilidade nos processadores Intel que leva ao vazamento de informações sobre o resultado de operações especulativas por meio de canais de terceiros, que podem ser usados, por exemplo, para organizar um canal de comunicação oculto entre processos ou detectar vazamentos durante ataques Meltdown.

A essência da vulnerabilidade é que uma alteração no registro do processador EFLAGS, que ocorreu como resultado da execução especulativa de instruções, afeta o tempo de execução subsequente das instruções JCC (salto quando as condições especificadas são atendidas). As operações especulativas não são concluídas e o resultado é descartado, mas a mudança EFLAGS descartada pode ser determinada analisando o tempo de execução das instruções JCC. Operações de comparação pré-salto executadas especulativamente, se a comparação for bem-sucedida, resultam em um pequeno atraso que pode ser medido e usado como um recurso para corresponder ao conteúdo.

Vulnerabilidade nos processadores Intel levando ao vazamento de dados por meio de canais de terceiros

Ao contrário de outros ataques semelhantes por canais de terceiros, o novo método não analisa a mudança no tempo de acesso aos dados em cache e não em cache e não requer a etapa de redefinição do registro EFLAGS para o estado inicial, o que dificulta a detectar e bloquear o ataque. Como demonstração, os pesquisadores implementaram uma variante do ataque Meltdown, utilizando nele um novo método para obter informações sobre o resultado de uma operação especulativa. O funcionamento do método para organizar o vazamento de informações durante um ataque Meltdown foi demonstrado com sucesso em sistemas com CPUs Intel Core i7-6700 e i7-7700 em um ambiente com Ubuntu 22.04 e kernel Linux 5.15. Em um sistema com uma CPU Intel i9-10980XE, o ataque foi apenas parcialmente bem-sucedido.

A vulnerabilidade Meltdown baseia-se no fato de que durante a execução especulativa de instruções, o processador pode acessar uma área privada de dados e, em seguida, descartar o resultado, pois os privilégios definidos proíbem esse acesso do processo do usuário. Em um programa, um bloco executado especulativamente é separado do código principal por um salto condicional, que em condições reais sempre dispara, mas devido ao fato de a instrução condicional usar um valor calculado que o processador não conhece durante o código preventivo execução, todas as opções de ramificação são executadas especulativamente.

Na versão clássica do Meltdown, uma vez que o mesmo cache é usado para operações executadas especulativamente como para instruções executadas normalmente, é possível durante a execução especulativa definir marcadores no cache que refletem o conteúdo de bits individuais em uma área de memória fechada e, em seguida, no código normalmente executado para determinar seu significado por meio da análise do tempo de acesso aos dados armazenados em cache e não armazenados em cache. A nova variante usa a alteração no registro EFLAGS como um marcador para um vazamento. Na demonstração do Covert Channel, um processo modulou os dados enviados para alterar o conteúdo do registro EFLAGS e outro processo analisou a alteração no tempo de execução da instrução JCC para recriar os dados enviados pelo primeiro processo.

Fonte: opennet.ru

Adicionar um comentário