Atako al Intel SGX por ĉerpi sentemajn datumojn aŭ ekzekuti kodon en enklavo

Esploristoj de la Popola Liberiga Armeo Defenda Scienca kaj Teknologia Universitato, la Nacia Universitato de Singapuro kaj ETH Zuriko evoluigis novan metodon por ataki izolitaj enklavoj Intel SGX (Software Guard eXtensions). La atako nomiĝas SmashEx kaj estas kaŭzita de problemoj kun reeniro dum pritraktado de esceptaj situacioj dum funkciado de rultempaj komponantoj por Intel SGX. La proponita atakmetodo ebligas, se vi havas kontrolon super la operaciumo, determini konfidencajn datumojn situantajn en la enklavo, aŭ organizi la kopiadon de via kodo en la memoron de la enklavo kaj ĝian ekzekuton.

Ekspluato-prototipoj estis preparitaj por enklavoj kun rultempo bazita sur la Intel SGX SDK (CVE-2021-0186) kaj Microsoft Open Enclave (CVE-2021-33767). En la unua kazo, la kapablo ĉerpi RSA-ŝlosilon uzatan en retservilo por HTTPS estis pruvita, kaj en la dua, eblis determini la enhavon akiritan de la cURL-utilo funkcianta ene de la enklavo. La vundebleco jam estis traktita programe en la eldonoj de Intel SGX SDK 2.13 kaj Open Enclave 0.17.1. Krom la Intel SGX SDK kaj Microsoft Open Enclave, la vundebleco ankaŭ aperas en la Google Asylo SDK, EdgelessRT, Apache Teaclave, Rust SGX SDK, SGX-LKL, CoSMIX kaj Veracruz.

Ni rememoru, ke la teknologio SGX (Software Guard Extensions) aperis en la sesa-generaciaj procesoroj Intel Core (Skylake) kaj ofertas serion da instrukcioj, kiuj permesas al uzantnivelaj aplikoj asigni fermitajn memorareojn - enklavojn, kies enhavon ne legeblas kaj modifita eĉ de la kerno kaj la kodo efektivigita en ring0, SMM kaj VMM-reĝimoj. Estas neeble transdoni kontrolon al la kodo en la enklavo uzante tradiciajn saltajn funkciojn kaj manipuladojn kun registroj kaj la stako - speciale kreitaj novaj instrukcioj EENTER, EEXIT kaj ERESUME estas uzataj por transdoni kontrolon al la enklavo, kiuj plenumas aŭtoritatkontrolojn. En ĉi tiu kazo, la kodo metita en la enklavon povas uzi klasikajn vokmetodojn por aliri funkciojn ene de la enklavo kaj specialajn instrukciojn por voki eksterajn funkciojn. Enklava memorĉifrado estas uzata por protekti kontraŭ aparataj atakoj kiel ligado al DRAM-modulo.

Atako al Intel SGX por ĉerpi sentemajn datumojn aŭ ekzekuti kodon en enklavo

La problemo estas, ke SGX-teknologio permesas al la operaciumo ĉesigi enklavon ĵetante aparatar-escepton, kaj enklavoj ne taŭge efektivigas primitivulojn por atome pritrakti tiajn esceptojn. Male al la operaciumo-kerno kaj regulaj aplikoj, kodo ene de enklavoj ne havas aliron al primitivuloj por organizi atomajn agojn dum pritraktado de nesinkrone ĵetitaj esceptoj. Sen la precizigitaj atomaj primitivuloj, la enklavo povas esti interrompita iam ajn kaj resendita al ekzekuto, eĉ en tempoj kiam la enklavo efektivigas kritikajn sekciojn kaj estas en nesekura ŝtato (ekzemple, kiam CPU-registroj ne estas konservitaj/reestigitaj).

Atako al Intel SGX por ĉerpi sentemajn datumojn aŭ ekzekuti kodon en enklavo

Por normala operacio, SGX-teknologio permesas la ekzekuton de la enklavo esti interrompita per agordeblaj hardvaresceptoj. Ĉi tiu funkcio permesas al enklavaj rultempaj medioj efektivigi intra-enklavan escepttraktadon aŭ signaltraktadon, sed ĝi ankaŭ povas kaŭzi reenirajn erarojn. La SmashEx-atako baziĝas sur ekspluatado de difektoj en la SDK, pro kiuj la situacio de revoko de la esceptotraktilo ne estas konvene pritraktita. Gravas, ke por ekspluati la vundeblecon, la atakanto devas povi interrompi la ekzekuton de la enklavo, t.e. devas kontroli la funkciadon de la sistema medio.

Post ĵetado de escepto, la atakanto ricevas malgrandan tempofenestron dum kiu la ekzekutfadeno povas esti kaptita per manipulado de la eniga parametroj. Precipe, se vi havas aliron al la sistemo (medio ekster la enklavo), vi povas krei novan escepton tuj post ekzekuto de la enklava enira instrukcio (ENENTER), kiu redonos kontrolon al la sistemo en etapo kiam la stako agordas por la enklavo ankoraŭ ne estis finita, en kiu La stato de la CPU-registroj ankaŭ estas konservita.

La sistemo tiam povas resendi kontrolon reen al la enklavo, sed ĉar la stako de la enklavo ne estis agordita dum la interrompo, la enklavo efektiviĝos kun la stako loĝanta en sistemmemoro, kiu povas esti uzita por utiligi reven-orientitan programadon (ROP). ) ekspluatteknikoj.Orientita Programado). Kiam oni uzas la ROP-teknikon, la atakanto ne provas meti sian kodon en memoron, sed operacias sur pecoj de maŝinaj instrukcioj jam disponeblaj en ŝarĝitaj bibliotekoj, finiĝante per kontrolo-revena instrukcio (kiel regulo, ĉi tiuj estas la finoj de bibliotekfunkcioj) . La laboro de la ekspluato konsistas en konstruado de ĉeno de alvokoj al similaj blokoj ("aparatoj") por akiri la deziratan funkciecon.

Atako al Intel SGX por ĉerpi sentemajn datumojn aŭ ekzekuti kodon en enklavo
Atako al Intel SGX por ĉerpi sentemajn datumojn aŭ ekzekuti kodon en enklavo


fonto: opennet.ru

Aldoni komenton