Ataque ao Intel SGX, permitindo a extração de dados confidenciais ou a execução de código no enclave

Pesquisadores da Universidade de Defesa da Academia Militar do Exército de Libertação Popular da China, da Universidade Nacional de Cingapura e do Instituto Federal de Tecnologia de Zurique desenvolveram um novo método de ataque a enclaves isolados do Intel SGX (Software Guard eXtensions). O ataque foi denominado SmashEx e é causado por problemas de reentrância durante o tratamento de exceções no funcionamento dos componentes runtime do Intel SGX. O método de ataque proposto permite, com controle sobre o sistema operacional, identificar dados confidenciais armazenados no enclave ou organizar a cópia do próprio código na memória do enclave e sua execução.

Protótipos de exploits foram preparados para enclaves com runtime baseado no Intel SGX SDK (CVE-2021-0186) e Microsoft Open Enclave (CVE-2021-33767). No primeiro caso, foi demonstrada a possibilidade de extração de uma chave RSA, utilizada em um servidor da web para HTTPS, enquanto no segundo, foi possível identificar o conteúdo obtido pela ferramenta cURL, executada dentro do enclave. A vulnerabilidade já foi corrigida por meio de software nas versões do Intel SGX SDK 2.13 e Open Enclave 0.17.1. Além dos pacotes Intel SGX SDK e Microsoft Open Enclave, a vulnerabilidade também se manifesta no SDK do Google Asylo, EdgelessRT, Apache Teaclave, Rust SGX SDK, SGX-LKL, CoSMIX e Veracruz.

Vale lembrar que a tecnologia SGX (Software Guard Extensions) surgiu nos processadores Intel Core da sexta geração (Skylake) e oferece uma série de instruções que permitem que aplicativos de nível do usuário aloque áreas de memória protegidas — enclaves — cujo conteúdo não pode ser lido ou modificado nem mesmo pelo kernel e pelo código executado em modos ring0, SMM e VMM. Transmitir o controle para o código no enclave não é possível por meio de funções de transferência tradicionais e manipulações de registradores e pilhas — para transferir o controle para o enclave, são usadas novas instruções criadas, EENTER, EEXIT e ERESUME, que realizam a verificação de permissões. O código inserido no enclave pode utilizar métodos clássicos de chamada para acessar funções dentro do enclave e uma instrução especial para chamar funções externas. Para proteção contra ataques de hardware, como o acesso ao módulo DRAM, é utilizado o criptografia da memória do enclave.

Ataque ao Intel SGX, permitindo a extração de dados confidenciais ou a execução de código no enclave

O problema está relacionado com o fato de que a tecnologia SGX permite ao sistema operacional interromper a execução do enclave através da geração de uma exceção de hardware, enquanto que nos enclaves não são implementados adequadamente os primitivos para o processamento atômico dessas exceções. Diferentemente do núcleo do sistema operacional e dos aplicativos comuns, o código dentro dos enclaves não tem acesso aos primitivos para organizar ações atômicas durante o manuseio de exceções que surgem de forma assíncrona. Sem os primitivos atômicos mencionados, o enclave pode ser interrompido a qualquer momento e retornado à execução, mesmo em momentos em que se executem seções críticas e este se encontre em um estado inseguro (por exemplo, quando os registradores da CPU não estão salvos/restaurados).

Ataque ao Intel SGX, permitindo a extração de dados confidenciais ou a execução de código no enclave

Para o funcionamento adequado, a tecnologia SGX permite interromper a execução do enclave por meio de exceções de hardware configuráveis. Essa característica permite que os ambientes de runtime dos enclaves implementem o manuseio de exceções internas do enclave ou de sinais, mas também pode provocar erros de reentrância. O ataque SmashEx baseia-se na exploração de falhas no SDK que não tratam adequadamente a situação de chamada repetida do manipulador de exceção. É importante ressaltar que, para explorar a vulnerabilidade, o atacante deve ter a capacidade de interromper a execução do enclave, ou seja, deve controlar a operação do ambiente do sistema.

Após a geração da exceção, o atacante recebe uma pequena janela temporal durante a qual pode interceptar o fluxo de execução manipulando os parâmetros de entrada. Em particular, ao ter acesso ao sistema (ambiente fora do enclave), é possível criar uma nova exceção logo após a execução da instrução de entrada no enclave (EENTER), o que fará com que o controle seja devolvido ao sistema em um estágio no qual ainda não foi concluída a configuração da pilha para o enclave, na qual se preserva também o estado dos registradores da CPU.

O sistema pode então retornar o controle para o enclave, mas como a pilha do enclave não foi configurada durante a interrupção, o enclave será executado com a pilha que está na memória do sistema, o que pode ser utilizado para aplicar métodos de exploração baseados em programação orientada a retorno (ROP - Return-Oriented Programming). Ao usar a técnica ROP, o atacante não tenta inserir seu código na memória, mas opera com pedaços de instruções de máquina já existentes nas bibliotecas carregadas, que terminam com uma instrução de retorno de controle (geralmente, estas são o final das funções bibliotecárias). A funcionalidade do exploit consiste em construir uma cadeia de chamadas a esses blocos (“gadgets”) para obter a funcionalidade desejada.

Ataque ao Intel SGX, permitindo a extração de dados confidenciais ou a execução de código no enclave
Ataque ao Intel SGX, permitindo a extração de dados confidenciais ou a execução de código no enclave


Fonte: opennet.ru
Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster