Atac a Intel SGX per extreure dades sensibles o executar codi en un enclavament

Investigadors de la Universitat de Ciència i Tecnologia de Defensa de l'Exèrcit d'Alliberament del Poble, la Universitat Nacional de Singapur i ETH Zurich han desenvolupat un nou mètode per atacar enclavaments aïllats Intel SGX (Software Guard eXtensions). L'atac s'anomena SmashEx i és causat per problemes amb la reentrada quan es gestionen situacions d'excepció durant el funcionament dels components en temps d'execució per a Intel SGX. El mètode d'atac proposat permet, si teniu control sobre el sistema operatiu, determinar dades confidencials situades a l'enclavament o organitzar la còpia del vostre codi a la memòria de l'enclavament i la seva execució.

S'han preparat prototips d'explotació per a enclavaments amb temps d'execució basats en Intel SGX SDK (CVE-2021-0186) i Microsoft Open Enclave (CVE-2021-33767). En el primer cas, es va demostrar la capacitat d'extreure una clau RSA utilitzada en un servidor web per HTTPS, i en el segon, es va poder determinar el contingut obtingut per la utilitat cURL que s'executa dins de l'enclavament. La vulnerabilitat ja s'ha solucionat amb programació a les versions d'Intel SGX SDK 2.13 i Open Enclave 0.17.1. A més de l'SDK Intel SGX i Microsoft Open Enclave, la vulnerabilitat també apareix a Google Asylo SDK, EdgelessRT, Apache Teaclave, Rust SGX SDK, SGX-LKL, CoSMIX i Veracruz.

Recordem que la tecnologia SGX (Software Guard Extensions) va aparèixer als processadors Intel Core de sisena generació (Skylake) i ofereix una sèrie d'instruccions que permeten que les aplicacions a nivell d'usuari assignin àrees de memòria tancades, enclavaments, el contingut dels quals no es pot llegir i modificat fins i tot pel nucli i el codi executat en els modes ring0, SMM i VMM. És impossible transferir el control al codi a l'enclavament mitjançant funcions de salt tradicionals i manipulacions amb registres i la pila: les noves instruccions EENTER, EEXIT i ERESUME creades especialment s'utilitzen per transferir el control a l'enclavament, que realitzen comprovacions d'autoritat. En aquest cas, el codi col·locat a l'enclavament pot utilitzar mètodes de trucada clàssics per accedir a funcions dins de l'enclavament i instruccions especials per cridar funcions externes. El xifratge de memòria Enclave s'utilitza per protegir-se d'atacs de maquinari, com ara la connexió a un mòdul DRAM.

Atac a Intel SGX per extreure dades sensibles o executar codi en un enclavament

El problema és que la tecnologia SGX permet que el sistema operatiu avorti un enclavament llançant una excepció de maquinari, i els enclavaments no implementen correctament primitives per gestionar atòmicament aquestes excepcions. A diferència del nucli del sistema operatiu i les aplicacions normals, el codi dins dels enclavaments no té accés a les primitives per organitzar accions atòmiques quan es gestionen excepcions llançades de manera asíncrona. Sense les primitives atòmiques especificades, l'enclavament es pot interrompre en qualsevol moment i tornar a l'execució, fins i tot en moments en què l'enclavament està executant seccions crítiques i es troba en un estat insegur (per exemple, quan els registres de la CPU no es guarden/restauren).

Atac a Intel SGX per extreure dades sensibles o executar codi en un enclavament

Per al funcionament normal, la tecnologia SGX permet que l'execució de l'enclavament s'interrompi per excepcions de maquinari configurables. Aquesta característica permet als entorns d'execució d'enclavament implementar el tractament d'excepcions o el processament de senyals dins de l'enclavament, però també pot provocar errors de reentrada. L'atac SmashEx es basa en l'explotació de defectes de l'SDK a causa dels quals la situació de tornar a trucar el controlador d'excepcions no es gestiona correctament. És important que per explotar la vulnerabilitat, l'atacant hagi de poder interrompre l'execució de l'enclavament, és a dir. ha de controlar el funcionament de l'entorn del sistema.

Després de llançar una excepció, l'atacant rep una petita finestra de temps durant la qual es pot interceptar el fil d'execució mitjançant la manipulació dels paràmetres d'entrada. En particular, si teniu accés al sistema (entorn fora de l'enclavament), podeu crear una nova excepció immediatament després d'executar la instrucció d'entrada de l'enclavament (EENTER), que retornarà el control al sistema en una etapa en què la configuració de la pila per al l'enclavament encara no s'ha completat, en el qual també es guarda l'estat dels registres de la CPU.

Aleshores, el sistema pot tornar el control a l'enclavament, però com que la pila de l'enclavament no estava configurada en el moment de la interrupció, l'enclavament s'executarà amb la pila residint a la memòria del sistema, que es pot utilitzar per utilitzar programació orientada al retorn (ROP). ) tècniques d'explotació.Programació Orientada). Quan utilitza la tècnica ROP, l'atacant no intenta col·locar el seu codi a la memòria, sinó que opera amb peces d'instruccions de màquina que ja estan disponibles a les biblioteques carregades, acabant amb una instrucció de retorn de control (per regla general, aquests són els extrems de les funcions de la biblioteca). . El treball de l'explotació es redueix a construir una cadena de trucades a blocs similars ("gadgets") per obtenir la funcionalitat desitjada.

Atac a Intel SGX per extreure dades sensibles o executar codi en un enclavament
Atac a Intel SGX per extreure dades sensibles o executar codi en un enclavament


Font: opennet.ru

Afegeix comentari