Ataque ao Intel SGX para extrair dados confidenciais ou executar código em um enclave

Pesquisadores da Universidade de Ciência e Tecnologia de Defesa do Exército de Libertação Popular, da Universidade Nacional de Cingapura e da ETH Zurique desenvolveram um novo método de ataque a enclaves isolados Intel SGX (Software Guard eXtensions). O ataque é chamado SmashEx e é causado por problemas de reentrada ao lidar com situações de exceção durante a operação de componentes de tempo de execução do Intel SGX. O método de ataque proposto permite, caso você tenha controle sobre o sistema operacional, determinar dados confidenciais localizados no enclave, ou organizar a cópia do seu código para a memória do enclave e sua execução.

Protótipos de exploração foram preparados para enclaves com tempo de execução baseado no Intel SGX SDK (CVE-2021-0186) e Microsoft Open Enclave (CVE-2021-33767). No primeiro caso, foi demonstrada a capacidade de extrair uma chave RSA utilizada em um servidor web para HTTPS e, no segundo, foi possível determinar o conteúdo obtido pelo utilitário cURL rodando dentro do enclave. A vulnerabilidade já foi abordada programaticamente nas versões do Intel SGX SDK 2.13 e Open Enclave 0.17.1. Além do Intel SGX SDK e do Microsoft Open Enclave, a vulnerabilidade também aparece no Google Asylo SDK, EdgelessRT, Apache Teaclave, Rust SGX SDK, SGX-LKL, CoSMIX e Veracruz.

Lembremos que a tecnologia SGX (Software Guard Extensions) apareceu nos processadores Intel Core de sexta geração (Skylake) e oferece uma série de instruções que permitem que aplicativos de nível de usuário aloquem áreas fechadas de memória - enclaves, cujo conteúdo não pode ser lido e modificado até mesmo pelo kernel e pelo código executado nos modos ring0, SMM e VMM. É impossível transferir o controle para o código no enclave usando funções de salto tradicionais e manipulações com registros e pilha - novas instruções especialmente criadas EENTER, EEXIT e ERESUME são usadas para transferir o controle para o enclave, que realiza verificações de autoridade. Neste caso, o código colocado no enclave pode usar métodos de chamada clássicos para acessar funções dentro do enclave e instruções especiais para chamar funções externas. A criptografia de memória enclave é usada para proteger contra ataques de hardware, como a conexão a um módulo DRAM.

Ataque ao Intel SGX para extrair dados confidenciais ou executar código em um enclave

O problema é que a tecnologia SGX permite que o sistema operacional aborte um enclave lançando uma exceção de hardware, e os enclaves não implementam adequadamente primitivas para lidar atomicamente com tais exceções. Ao contrário do kernel do sistema operacional e dos aplicativos regulares, o código dentro dos enclaves não tem acesso a primitivos para organizar ações atômicas ao lidar com exceções lançadas de forma assíncrona. Sem as primitivas atômicas especificadas, o enclave pode ser interrompido a qualquer momento e retornado à execução, mesmo nos momentos em que o enclave está executando seções críticas e está em um estado inseguro (por exemplo, quando os registros da CPU não são salvos/restaurados).

Ataque ao Intel SGX para extrair dados confidenciais ou executar código em um enclave

Para operação normal, a tecnologia SGX permite que a execução do enclave seja interrompida por exceções de hardware configuráveis. Esse recurso permite que ambientes de tempo de execução de enclave implementem manipulação de exceções intra-enclave ou processamento de sinal, mas também pode causar erros reentrantes. O ataque SmashEx é baseado na exploração de falhas no SDK devido às quais a situação de nova chamada do manipulador de exceções não é tratada adequadamente. É importante que para explorar a vulnerabilidade, o invasor seja capaz de interromper a execução do enclave, ou seja, deve controlar a operação do ambiente do sistema.

Após lançar uma exceção, o invasor recebe uma pequena janela de tempo durante a qual o thread de execução pode ser interceptado através da manipulação dos parâmetros de entrada. Em particular, se você tiver acesso ao sistema (ambiente fora do enclave), poderá criar uma nova exceção imediatamente após executar a instrução de entrada do enclave (EENTER), que retornará o controle ao sistema em um estágio em que a configuração da pilha para o o enclave ainda não foi concluído, no qual o estado dos registros da CPU também é salvo.

O sistema pode então retornar o controle ao enclave, mas como a pilha do enclave não estava configurada no momento da interrupção, o enclave será executado com a pilha residente na memória do sistema, que pode ser usada para empregar programação orientada a retorno (ROP). ) técnicas de exploração.Programação Orientada). Ao utilizar a técnica ROP, o invasor não tenta colocar seu código na memória, mas opera em pedaços de instruções de máquina já disponíveis nas bibliotecas carregadas, terminando com uma instrução de retorno de controle (via de regra, são os fins das funções da biblioteca) . O trabalho do exploit se resume a construir uma cadeia de chamadas para blocos semelhantes (“gadgets”) para obter a funcionalidade desejada.

Ataque ao Intel SGX para extrair dados confidenciais ou executar código em um enclave
Ataque ao Intel SGX para extrair dados confidenciais ou executar código em um enclave


Fonte: opennet.ru

Adicionar um comentário