SGX-malware: kiel fiuloj ekspluatas la novan Intel-teknologion por aliaj celoj ol tiuj por kiuj ĝi estis koncipita

Kiel vi scias, la kodo efektivigita en la enklavo estas grave limigita en sia funkcieco. Ĝi ne povas fari sistemajn vokojn. Ĝi ne povas fari I/O operaciojn. Ĝi ne konas la bazan adreson de la kodsegmento de la gastiga aplikaĵo. Ĝi ne povas jmp aŭ voki gastigan aplikaĵkodon. Ĝi ne havas ideon pri la adresspaca strukturo kiu regas la gastigan aplikaĵon (ekzemple, kiuj paĝoj estas mapitaj aŭ kiaj datumoj troviĝas sur tiuj paĝoj). Ĝi ne povas peti al la operaciumo mapi pecon de la memoro de la gastiga aplikaĵo al ĝi (ekzemple, tra /proc/pid/maps). Naivaj provoj blinde legi arbitran memorregionon de gastiga aplikaĵo, sen mencii provojn skribi, baldaŭ aŭ malfrue (plej verŝajne la unua) kondukos al la devigita ĉesigo de la enklava programo. Ĉi tio okazas kiam ajn la virtuala adresspaca regiono petita de la enklavo estas neatingebla por la gastiga aplikaĵo.

Konsiderante tiajn severajn realaĵojn, ĉu virusverkisto povos uzi SGX-enklavojn por atingi siajn malicajn celojn?

– Haki por sondi adresojn por vidi ĉu ili povas esti legitaj
– Haki por sondi adresojn pri skribebleco
– Haki alidirekti kontrolon de fluo
– Kion donas la tri hakoj supre listigitaj al la fiulo?
– Kiel la fiulo uzas ĉi tiujn hakojn por krei ranzowari

SGX-malware: kiel fiuloj ekspluatas la novan Intel-teknologion por aliaj celoj ol tiuj por kiuj ĝi estis koncipita

Surbaze de ĉio ĉi-supra, estas ĝenerale akceptite, ke enklavo nur kapablas servi la gastigan aplikaĵon, kaj ke la enklavo ne povas ekzerci sian propran iniciaton, inkluzive de malicaj. Ĉi tio signifas, ke enklavoj ne havas praktikan valoron por virusistoj. Tiu rapida supozo estas unu el la kialoj kial SGX-protekto estas nesimetria: gastiga aplikaĵa kodo ne povas aliri enklavmemoron, dum enklavkodo povas legi kaj skribi al iu gastiga aplikaĵa memoradreso.

Tial, se malica enklavkodo povis fari arbitrajn sistemvokojn nome de la gastiga aplikaĵo, efektivigi arbitran kodon en ĝia nomo, skani la memoron de la gastiga aplikaĵo kaj trovi misuzeblajn ROP-ĉenojn en ĝi, ĝi povus kapti kompletan kontrolon de gastiga aplikaĵo, en kaŝreĝimo. Ĝi povas ne nur ŝteli kaj ĉifri uzantdosierojn, sed ankaŭ agi nome de la uzanto. Ekzemple, sendu phishing retpoŝtojn en lia nomo aŭ fari DoS atakoj. Sen timo eĉ de la plej modernaj protektaj mekanismoj, kiel stakigi kanariojn kaj trakti sanigon.

Ni montros al vi kelkajn hakojn, kiujn atakantoj uzas por venki la limojn priskribitajn supre por utiligi SGX por siaj propraj malicaj celoj: ROP-atakoj. Aŭ por ekzekuti arbitran kodon kaŝvestitan kiel gastigan aplikan procezon (simila al proceza kavigado, kiu estas ofte uzata de malware), aŭ por kaŝvesti pretan malbonvaron (por savi ĝian malbonvaron de persekuto de antivirusoj kaj aliaj defendaj mekanismoj).

Haki por sondi adresojn por vidi ĉu ili povas esti legitaj

Ĉar la enklavo ne scias kiuj intervaloj de la virtuala adrespaco estas alireblaj por la mastro-aplikaĵo, kaj ĉar la enklavo estas devigita finiĝi dum provado legi nealireblan adreson, la atakanto estas alfrontita kun la tasko trovi manieron kulpigi- tolere skani la adresspacon. Trovu manieron mapi disponeblajn virtualajn adresojn. La fiulo solvas ĉi tiun problemon misuzante la TSX-teknologion de Intel. Uzas unu el la kromefikoj de TSX: se la memoralirfunkcio estas metita en TSX-transakcion, tiam esceptoj ekestiĝantaj de alirado de nevalidaj adresoj estas subpremitaj de TSX sen atingado de la operaciumo. Se oni provos aliri nevalidan memoradreson, nur la nuna transakcio estas ĉesigita, ne la tuta enklava programo. Tio. TSX permesas al enklavo sekure aliri ajnan adreson de ene de transakcio - sen la risko de kolapso.

se la specifita adreso disponeblas gastiga aplikaĵo, la transakcio TSX plej ofte sukcesas. En maloftaj kazoj, ĝi povas malsukcesi pro eksteraj influoj kiel ekzemple interrompoj (kiel ekzemple planigaj interrompoj), kaŝmemoreldomigoj, aŭ samtempa modifo de memorloko per multoblaj procezoj. En ĉi tiuj maloftaj kazoj, la TSX resendas erarkodon indikante, ke la fiasko estas provizora. En ĉi tiuj kazoj, vi nur bezonas rekomenci la transakcion.

se la specifita adreso ne estas disponebla gastiga aplikaĵo, TSX subpremas la escepton kiu okazis (la OS ne estas sciigita) kaj ĉesigas la transakcion. Erarkodo estas resendita al la enklava kodo por ke ĝi povu reagi al la fakto, ke la transakcio estis nuligita. Ĉi tiuj erarkodoj indikas, ke la koncerna adreso ne estas disponebla por la gastiga aplikaĵo.

SGX-malware: kiel fiuloj ekspluatas la novan Intel-teknologion por aliaj celoj ol tiuj por kiuj ĝi estis koncipita

SGX-malware: kiel fiuloj ekspluatas la novan Intel-teknologion por aliaj celoj ol tiuj por kiuj ĝi estis koncipita

Ĉi tiu manipulado de TSX de ene de la enklavo havas belan trajton por la fiulo: ĉar la plej multaj aparataj rendimentokalkuliloj ne estas ĝisdatigitaj kiam la enklavokodo estas efektivigita, estas maleble spuri TSX-transakciojn efektivigitajn ene de la enklavo. Tiel, malica manipulado de la TSX restas tute nevidebla por la operaciumo.

Aldone, ĉar la ĉi-supra hako ne dependas de iuj sistemvokoj, ĝi povas nek esti detektita nek malhelpita per simple blokado de sistemaj vokoj; kiu kutime donas pozitivan rezulton en la batalo kontraŭ ovoĉasado.

La fiulo uzas la hakon priskribitan supre por serĉi la gastigan aplikaĵkodon por aparatoj taŭgaj por formi ROP-ĉenon. Samtempe, li ne bezonas sondi ĉiun adreson. Sufiĉas sondi unu adreson el ĉiu paĝo de la virtuala adresspaco. Sondado de ĉiuj 16 gigabajtoj da memoro daŭras ĉirkaŭ 45 minutojn (sur Intel i7-6700K). Kiel rezulto, la fiulo ricevas liston de ruleblaj paĝoj, kiuj taŭgas por konstrui ROP-ĉenon.

Hako por sondi adresojn pri skribebleco

Por efektivigi enklavversion de ROP-atako, atakanto devas povi serĉi skribeblajn neuzatajn memorareojn de la gastiga aplikaĵo. La atakanto uzas ĉi tiujn memorlokojn por injekti falsan stakkadron kaj por injekti utilan ŝarĝon (ŝelkodo). La fundo estas, ke malica enklavo ne povas postuli la gastigan aplikaĵon asigni memoron por si mem, sed anstataŭe povas misuzi memoron jam asignitan de la gastiga aplikaĵo. Se, kompreneble, li sukcesas trovi tiajn areojn sen kolapsigi la enklavon.

La fiulo faras ĉi tiun serĉon ekspluatante alian kromefikon de TSX. Unue, kiel en la antaŭa kazo, ĝi sondas la adreson pri ĝia ekzisto, kaj poste kontrolas ĉu la paĝo responda al tiu ĉi adreso estas skribebla. Por fari tion, la fiulo uzas la sekvan hakon: li metas skribfunkcion en TSX-transakcio, kaj post kiam ĝi finiĝis, sed antaŭ ol ĝi finiĝis, li perforte ĉesigas la transakcion (eksplicita abortigo).

Rigardante la revenkodon de TSX-transakcio, la atakanto komprenas ĉu ĝi estas skribebla. Se ĝi estas "eksplicita aborto", la fiulo komprenas ke la registrado estus sukcesa se li sekvis tra ĝi. Se la paĝo estas nurlegebla, tiam la transakcio finiĝas per eraro krom "eksplicita ĉesigo".

SGX-malware: kiel fiuloj ekspluatas la novan Intel-teknologion por aliaj celoj ol tiuj por kiuj ĝi estis koncipita

Ĉi tiu manipulado de TSX havas alian trajton, kiu estas agrabla por la fiulo (krom la malebleco spuri per aparataj rendimentokalkuliloj): ĉar ĉiuj memor-skribaj komandoj estas faritaj nur se la transakcio sukcesas, devigi la transakcion finiĝi certigas, ke la sondita memorĉelo. restas senŝanĝa.

Haki alidirekti kontrolon de fluo

Dum elfarado de ROP-atako de enklavo - male al tradiciaj ROP-atakoj - la atakanto povas akiri kontrolon de la RIP-registro sen ekspluati iujn ajn cimojn en la atakita programo (bufrosuperfluo aŭ io simila). Atakanto povas rekte anstataŭigi la valoron de la RIP-registro stokita sur la stako. Aparte, ĝi povas anstataŭigi la valoron de ĉi tiu registro per sia propra ROP-ĉeno.

Tamen, se la ROP-ĉeno estas longa, tiam anstataŭi grandan parton de la stako de la gastiga aplikaĵo povas konduki al datuma korupto kaj neatendita programkonduto. La fiulo, kiu celas fari sian atakon kaŝe, ne estas kontenta pri ĉi tiu stato de aferoj. Tial, ĝi kreas falsan provizoran stakkadron por si kaj stokas sian ROP-ĉenon en ĝi. La falsa stakkadro estas metita en hazardan skribeblan memorlokon, lasante la realan stakon sendifekta.

SGX-malware: kiel fiuloj ekspluatas la novan Intel-teknologion por aliaj celoj ol tiuj por kiuj ĝi estis koncipita

Kion la tri hakoj listigitaj supre donas al la fiulo?

(1) Unue, la malica enklavo tra haki por sondi adresojn por vidi ĉu ili povas esti legitaj, – serĉas la gastigan aplikaĵon por misuzeblaj ROP-aparatoj.

SGX-malware: kiel fiuloj ekspluatas la novan Intel-teknologion por aliaj celoj ol tiuj por kiuj ĝi estis koncipita

(2) Tiam per hako por sondi adresojn pri skribebleco, – malica enklavo identigas areojn en la memoro de la gastiga aplikaĵo kiuj taŭgas por injekti utilan ŝarĝon.

SGX-malware: kiel fiuloj ekspluatas la novan Intel-teknologion por aliaj celoj ol tiuj por kiuj ĝi estis koncipita

(3) Poste, la enklavo kreas ROP-ĉenon de la aparatoj malkovritaj en paŝo (1) kaj injektas ĉi tiun ĉenon en la gastigan aplikaĵan stakon.

SGX-malware: kiel fiuloj ekspluatas la novan Intel-teknologion por aliaj celoj ol tiuj por kiuj ĝi estis koncipita

(4) Fine, kiam la gastiga aplikaĵo renkontas la ROP-ĉenon kreitan en la antaŭa paŝo, la malica utila ŝarĝo komencas ekzekuti - kun la privilegioj de la gastiga aplikaĵo kaj la kapablo fari sistemajn vokojn.

Kiel fiulo uzas ĉi tiujn hakojn por krei ranzowari

Post kiam la gastiga aplikaĵo transdonas kontrolon al la enklavo per unu el la ECALLoj (sen suspekti ke tiu ĉi enklavo estas malica), la malica enklavo serĉas liberan spacon en la memoro de la gastiga aplikaĵo por injekti kodon (prenante kiel liberajn spacojn tiujn sekvencojn de ĉeloj. kiu plenigis per nuloj). Tiam tra haki por sondi adresojn por vidi ĉu ili povas esti legitaj, – la enklavo serĉas ruleblajn paĝojn en la gastiga aplikaĵo kaj generas ROP-ĉenon, kiu kreas novan dosieron nomitan "RANSOM" en la nuna dosierujo (en reala atako, la enklavo ĉifras ekzistantajn uzantdosierojn) kaj montras elaĉetomonan mesaĝon. Samtempe, la gastiga aplikaĵo naive kredas, ke la enklavo simple aldonas du nombrojn. Kiel ĉi tio aspektas en kodo?

Por facileco de percepto, ni enkonduku kelkajn mnemonikojn per la difinoj:

SGX-malware: kiel fiuloj ekspluatas la novan Intel-teknologion por aliaj celoj ol tiuj por kiuj ĝi estis koncipita

Ni konservas la originalajn valorojn de la registroj RSP kaj RBP por restarigi la normalan funkciadon de la gastiga aplikaĵo post ekzekuto de la utila ŝarĝo:

SGX-malware: kiel fiuloj ekspluatas la novan Intel-teknologion por aliaj celoj ol tiuj por kiuj ĝi estis koncipita

Ni serĉas taŭgan stakan kadron (vidu la kodon el la sekcio "hako por alidirektado de kontrolo-fluo").

Trovi taŭgajn ROP-aparatojn:

SGX-malware: kiel fiuloj ekspluatas la novan Intel-teknologion por aliaj celoj ol tiuj por kiuj ĝi estis koncipita

Trovi lokon por injekti la utilan ŝarĝon:

SGX-malware: kiel fiuloj ekspluatas la novan Intel-teknologion por aliaj celoj ol tiuj por kiuj ĝi estis koncipita

Ni konstruas ROP-ĉenon:

SGX-malware: kiel fiuloj ekspluatas la novan Intel-teknologion por aliaj celoj ol tiuj por kiuj ĝi estis koncipita

Tiel la SGX-teknologio de Intel, dizajnita por kontraŭstari malicajn programojn, estas ekspluatata de fiuloj por atingi kontraŭajn celojn.

fonto: www.habr.com

Aldoni komenton