Aanval op Intel SGX om sensitiewe data te onttrek of kode in 'n enklawe uit te voer

Navorsers van die People's Liberation Army Defence Science and Technology University, die National University of Singapore en ETH Zurich het 'n nuwe metode ontwikkel om geïsoleerde enklawes Intel SGX (Software Guard eXtensions) aan te val. Die aanval word SmashEx genoem en word veroorsaak deur probleme met hertoegang by die hantering van uitsonderingsituasies tydens die werking van runtime-komponente vir Intel SGX. Die voorgestelde aanvalmetode maak dit moontlik om, as jy beheer oor die bedryfstelsel het, vertroulike data wat in die enklawe geleë is te bepaal, of om die kopiëring van jou kode in die enklawe se geheue en die uitvoering daarvan te organiseer.

Ontginningsprototipes is voorberei vir enklawes met looptyd gebaseer op die Intel SGX SDK (CVE-2021-0186) en Microsoft Open Enclave (CVE-2021-33767). In die eerste geval is die vermoë om 'n RSA-sleutel wat op 'n webbediener vir HTTPS gebruik word, gedemonstreer, en in die tweede geval was dit moontlik om die inhoud te bepaal wat verkry is deur die cURL-hulpprogram wat binne die enklawe loop. Die kwesbaarheid is reeds programmaties aangespreek in die vrystellings van Intel SGX SDK 2.13 en Open Enclave 0.17.1. Benewens die Intel SGX SDK en Microsoft Open Enclave, verskyn die kwesbaarheid ook in die Google Asylo SDK, EdgelessRT, Apache Teaclave, Rust SGX SDK, SGX-LKL, CoSMIX en Veracruz.

Laat ons onthou dat SGX (Software Guard Extensions)-tegnologie in die sesde generasie Intel Core-verwerkers (Skylake) verskyn het en 'n reeks instruksies bied wat gebruikersvlaktoepassings toelaat om geslote geheue-areas toe te ken - enklawes, waarvan die inhoud nie gelees kan word nie en verander selfs deur die kern en die kode uitgevoer in ring0, SMM en VMM modes. Dit is onmoontlik om beheer na die kode in die enklawe oor te dra deur gebruik te maak van tradisionele sprongfunksies en manipulasies met registers en die stapel - spesiaal geskepte nuwe instruksies EENTER, EEXIT en ERESUME word gebruik om beheer na die enklawe oor te dra, wat gesagskontroles uitvoer. In hierdie geval kan die kode wat in die enklawe geplaas word, klassieke oproepmetodes gebruik om toegang tot funksies binne die enklawe te verkry en spesiale instruksies om eksterne funksies te roep. Enklavegeheue-enkripsie word gebruik om teen hardeware-aanvalle te beskerm, soos om aan 'n DRAM-module te koppel.

Aanval op Intel SGX om sensitiewe data te onttrek of kode in 'n enklawe uit te voer

Die probleem is dat SGX-tegnologie die bedryfstelsel toelaat om 'n enklawe te staak deur 'n hardeware-uitsondering te gooi, en enklawes implementeer nie die primitiewe behoorlik om sulke uitsonderings atoom te hanteer nie. Anders as die bedryfstelselkern en gewone toepassings, het kode binne enklawes nie toegang tot primitiewe om atoomaksies te organiseer wanneer asynchronies gegooide uitsonderings hanteer word nie. Sonder die gespesifiseerde atomiese primitiewe kan die enklawe te eniger tyd onderbreek word en na uitvoering teruggekeer word, selfs op tye wanneer die enklawe besig is om kritieke afdelings uit te voer en in 'n onveilige toestand is (byvoorbeeld wanneer SVE-registers nie gestoor/herstel word nie).

Aanval op Intel SGX om sensitiewe data te onttrek of kode in 'n enklawe uit te voer

Vir normale werking laat SGX-tegnologie toe dat die uitvoering van die enklawe deur konfigureerbare hardeware-uitsonderings onderbreek word. Hierdie kenmerk laat enklawe-looptyd-omgewings toe om intra-enklawe-uitsonderingshantering of seinverwerking te implementeer, maar dit kan ook reentrant-foute veroorsaak. Die SmashEx-aanval is gebaseer op die ontginning van foute in die SDK, waardeur die situasie om die uitsonderingshanteerder te herroep nie behoorlik hanteer word nie. Dit is belangrik dat om die kwesbaarheid te ontgin, die aanvaller in staat moet wees om die uitvoering van die enklawe te onderbreek, m.a.w. moet die werking van die stelselomgewing beheer.

Nadat 'n uitsondering gegooi is, ontvang die aanvaller 'n klein tydvenster waartydens die uitvoerdraad onderskep kan word deur manipulasie van die invoerparameters. In die besonder, as u toegang het tot die stelsel (omgewing buite die enklawe), kan u 'n nuwe uitsondering skep onmiddellik nadat u die enklawe-inskrywingsinstruksie (EENTER) uitgevoer het, wat beheer na die stelsel sal teruggee op 'n stadium wanneer die stapelopstelling vir die enklawe is nog nie voltooi nie, waarin die toestand van die SVE-registers ook gestoor word.

Die stelsel kan dan beheer terugstuur na die enklawe, maar aangesien die enklawe se stapel nie gekonfigureer was ten tyde van die onderbreking nie, sal die enklawe uitgevoer word met die stapel wat in die stelselgeheue woon, wat gebruik kan word om terugkeer-georiënteerde programmering te gebruik (ROP) ) ontginningstegnieke. Georiënteerde programmering). Wanneer die ROP-tegniek gebruik word, probeer die aanvaller nie om sy kode in die geheue te plaas nie, maar werk op stukke masjieninstruksies wat reeds in gelaaide biblioteke beskikbaar is, wat eindig met 'n kontrole-terugstuur-instruksie (as 'n reël is dit die eindes van biblioteekfunksies) . Die werk van die ontginning kom daarop neer om 'n ketting oproepe na soortgelyke blokke ("gadgets") te bou om die gewenste funksionaliteit te verkry.

Aanval op Intel SGX om sensitiewe data te onttrek of kode in 'n enklawe uit te voer
Aanval op Intel SGX om sensitiewe data te onttrek of kode in 'n enklawe uit te voer


Bron: opennet.ru

Voeg 'n opmerking