SGX-wanware: hoe skurke die nuwe Intel-tegnologie ontgin vir ander doeleindes as waarvoor dit bedink is

Soos u weet, is die kode wat in die enklawe uitgevoer word, ernstig beperk in sy funksionaliteit. Dit kan nie stelseloproepe maak nie. Dit kan nie I/O-bewerkings uitvoer nie. Dit ken nie die basisadres van die gasheertoepassing se kodesegment nie. Dit kan nie gasheertoepassingskode jmp of oproep nie. Dit het geen idee oor die adresruimtestruktuur wat die gasheertoepassing beheer nie (byvoorbeeld watter bladsye gekarteer is of watter soort data op daardie bladsye geleë is). Dit kan nie die bedryfstelsel vra om 'n stuk van die gasheertoepassing se geheue daarop te karteer nie (byvoorbeeld deur /proc/pid/maps). Naïewe pogings om blindelings 'n arbitrêre geheuegebied van 'n gasheertoepassing te lees, om nie eens te praat van pogings om te skryf nie, sal vroeër of later (heel waarskynlik eersgenoemde) lei tot die gedwonge beëindiging van die enklaweprogram. Dit gebeur wanneer die virtuele adresruimtegebied wat deur die enklawe aangevra is, ontoeganklik is vir die gasheertoepassing.

Gegewe sulke harde realiteite, sal 'n virusskrywer SGX-enklaves kan gebruik om sy kwaadwillige doelwitte te bereik?

– Hack om adresse te ondersoek om te sien of dit gelees kan word
– Hack om adresse te ondersoek vir skryfbaarheid
- Hack om beheervloei te herlei
– Wat gee die drie hacks wat hierbo gelys is vir die skurk?
- Hoe die skurk hierdie hacks gebruik om ranzowari te skep

SGX-wanware: hoe skurke die nuwe Intel-tegnologie ontgin vir ander doeleindes as waarvoor dit bedink is

Op grond van al die bogenoemde, word dit algemeen aanvaar dat 'n enklawe slegs in staat is om die gasheertoepassing te dien, en dat die enklawe nie sy eie inisiatief kan uitoefen nie, insluitend kwaadwillige. Dit beteken dat enklaves geen praktiese waarde het vir virusskrywers nie. Hierdie oorhaastige aanname is een van die redes waarom SGX-beskerming asimmetries is: gasheertoepassingskode kan nie toegang tot enklaafgeheue kry nie, terwyl enklawekode kan lees en skryf na enige gasheertoepassingsgeheueadres.

As kwaadwillige enklawekode dus in staat was om arbitrêre stelseloproepe namens die gasheertoepassing te maak, arbitrêre kode namens hom uit te voer, die gasheertoepassing se geheue te skandeer en misbruikbare ROP-kettings daarin te vind, kan dit volle beheer oor die gasheertoepassing verkry, in stealth-modus. Dit kan nie net gebruikerslêers steel en enkripteer nie, maar ook namens die gebruiker optree. Stuur byvoorbeeld uitvissing-e-posse namens hom of voer DoS-aanvalle uit. Sonder vrees vir selfs die mees moderne beskermingsmeganismes, soos stapelkanaries en spreek sanitasie aan.

Ons sal jou 'n paar hacks wys wat aanvallers gebruik om die beperkings wat hierbo beskryf word te oorkom om voordeel te trek uit SGX vir hul eie kwaadwillige doeleindes: ROP-aanvalle. Óf om arbitrêre kode uit te voer wat as 'n gasheertoepassingsproses vermom is (soortgelyk aan prosesuithol, wat dikwels deur wanware gebruik word), óf om 'n klaargemaakte wanware te vermom (om sy wanware te red van vervolging deur antivirusse en ander verdedigingsmeganismes).

Hack om adresse te ondersoek om te sien of hulle gelees kan word

Aangesien die enklawe nie weet watter reekse van die virtuele adresruimte toeganklik is vir die gasheertoepassing nie, en aangesien die enklawe gedwing word om te beëindig wanneer hy probeer om 'n ontoeganklike adres te lees, staan ​​die aanvaller voor die taak om 'n manier te vind om fout- skandeer die adresspasie verdraagsaam. Vind 'n manier om beskikbare virtuele adresse te karteer. Die skurk los hierdie probleem op deur Intel se TSX-tegnologie te misbruik. Gebruik een van TSX se newe-effekte: as die geheuetoegangsfunksie in 'n TSX-transaksie geplaas word, word uitsonderings wat voortspruit uit toegang tot ongeldige adresse deur TSX onderdruk sonder om die bedryfstelsel te bereik. As 'n poging aangewend word om toegang tot 'n ongeldige geheue-adres te verkry, word slegs die huidige transaksie geaborteer, nie die hele enklaweprogram nie. Daardie. TSX laat 'n enklawe toe om veilige toegang tot enige adres van binne 'n transaksie te verkry - sonder die risiko van ineenstorting.

As die gespesifiseerde adres is beskikbaar gasheertoepassing, is die TSX-transaksie meestal suksesvol. In seldsame gevalle kan dit misluk as gevolg van eksterne invloede soos onderbrekings (soos skeduleerder-onderbrekings), kas-uitsettings of gelyktydige wysiging van 'n geheue-ligging deur verskeie prosesse. In hierdie seldsame gevalle gee die TSX 'n foutkode terug wat aandui dat die mislukking tydelik is. In hierdie gevalle moet u net die transaksie herbegin.

As die gespesifiseerde adres is nie beskikbaar nie gasheertoepassing, onderdruk TSX die uitsondering wat plaasgevind het (die bedryfstelsel word nie in kennis gestel nie) en staak die transaksie. 'n Foutkode word na die enklawe-kode teruggestuur sodat dit kan reageer op die feit dat die transaksie gekanselleer is. Hierdie foutkodes dui aan dat die betrokke adres nie vir die gasheertoepassing beskikbaar is nie.

SGX-wanware: hoe skurke die nuwe Intel-tegnologie ontgin vir ander doeleindes as waarvoor dit bedink is

SGX-wanware: hoe skurke die nuwe Intel-tegnologie ontgin vir ander doeleindes as waarvoor dit bedink is

Hierdie manipulasie van TSX van binne die enklawe het 'n goeie kenmerk vir die skurk: aangesien die meeste hardeware prestasie tellers nie opgedateer word op die tydstip dat die enklawe-kode uitgevoer word nie, is dit onmoontlik om TSX-transaksies op te spoor wat binne die enklawe uitgevoer is. Dus, kwaadwillige manipulasie van die TSX bly heeltemal onsigbaar vir die bedryfstelsel.

Daarbenewens, aangesien die bogenoemde hack nie op enige stelseloproepe staatmaak nie, kan dit nie opgespoor of voorkom word deur bloot stelseloproepe te blokkeer nie; wat gewoonlik 'n positiewe uitslag gee in die stryd teen eierjag.

Die skurk gebruik die hack wat hierbo beskryf word om die gasheertoepassingskode te soek vir toestelle wat geskik is om 'n ROP-ketting te vorm. Terselfdertyd hoef hy nie elke adres te ondersoek nie. Dit is genoeg om een ​​adres van elke bladsy van die virtuele adresruimte te ondersoek. Om al 16 gigagrepe geheue te ondersoek, neem ongeveer 45 minute (op 'n Intel i7-6700K). Gevolglik ontvang die skurk 'n lys van uitvoerbare bladsye wat geskik is vir die bou van 'n ROP-ketting.

Hack om adresse te ondersoek vir skryfbaarheid

Om 'n enklawe-weergawe van 'n ROP-aanval uit te voer, moet 'n aanvaller kan soek vir skryfbare ongebruikte geheue-areas van die gasheertoepassing. Die aanvaller gebruik hierdie geheue-liggings om 'n vals stapelraam in te spuit en 'n loonvrag (shellcode) in te spuit. Die slotsom is dat 'n kwaadwillige enklawe nie in staat is om die gasheertoepassing te vereis om geheue vir homself toe te ken nie, maar eerder geheue kan misbruik wat reeds deur die gasheertoepassing toegewys is. As hy dit natuurlik regkry om sulke gebiede te vind sonder om die enklawe ineen te stort.

Die skurk voer hierdie soektog uit deur 'n ander newe-effek van TSX te ontgin. Eerstens, soos in die vorige geval, ondersoek dit die adres vir sy bestaan, en kyk dan of die bladsy wat met hierdie adres ooreenstem, skryfbaar is. Om dit te doen, gebruik die skurk die volgende hack: hy plaas 'n skryffunksie in 'n TSX-transaksie, en nadat dit voltooi is, maar voordat dit voltooi is, staak hy die transaksie met geweld (eksplisiete aborteer).

Deur na die terugkeerkode van 'n TSX-transaksie te kyk, verstaan ​​die aanvaller of dit skryfbaar is. As dit ’n “eksplisiete aborsie” is, verstaan ​​die skurk dat die opname suksesvol sou gewees het as hy dit opgevolg het. As die bladsy leesalleen is, eindig die transaksie met 'n ander fout as "eksplisiete afbreek".

SGX-wanware: hoe skurke die nuwe Intel-tegnologie ontgin vir ander doeleindes as waarvoor dit bedink is

Hierdie manipulasie van TSX het nog 'n kenmerk wat vir die skurk lekker is (behalwe die onmoontlikheid om deur hardeware-werkverrigtingtellers op te spoor): aangesien alle geheueskryfopdragte slegs gepleeg word as die transaksie suksesvol is, verseker die transaksie om te voltooi dat die ondersoekde geheuesel bly onveranderd.

Hack om beheervloei te herlei

Wanneer 'n ROP-aanval vanuit 'n enklawe uitgevoer word - anders as tradisionele ROP-aanvalle - kan die aanvaller beheer oor die RIP-register verkry sonder om enige foute in die aangevale program (bufferoorloop of iets dergeliks) uit te buit. 'n Aanvaller kan die waarde van die RIP-register wat op die stapel gestoor is, direk oorskryf. Dit kan veral die waarde van hierdie register vervang met sy eie ROP-ketting.

As die ROP-ketting egter lank is, kan die oorskryf van 'n groot deel van die gasheertoepassing se stapel tot datakorrupsie en onverwagte programgedrag lei. Die skurk, wat poog om sy aanval heimlik uit te voer, is nie tevrede met hierdie toedrag van sake nie. Daarom skep dit 'n vals tydelike stapelraam vir homself en stoor sy ROP-ketting daarin. Die vals stapelraam word in 'n ewekansige skryfbare geheue plek geplaas, wat die regte stapel ongeskonde laat.

SGX-wanware: hoe skurke die nuwe Intel-tegnologie ontgin vir ander doeleindes as waarvoor dit bedink is

Wat gee die drie hacks hierbo gelys vir die skurk?

(1) Eerstens, die kwaadwillige enklave deur hack om adresse te ondersoek om te sien of hulle gelees kan word, – soek die gasheertoepassing vir misbruikbare ROP-toestelle.

SGX-wanware: hoe skurke die nuwe Intel-tegnologie ontgin vir ander doeleindes as waarvoor dit bedink is

(2) Toe deur hack om adresse te ondersoek vir skryfbaarheid, – 'n kwaadwillige enklawe identifiseer areas in die gasheertoepassing se geheue wat geskik is vir die inspuit van 'n loonvrag.

SGX-wanware: hoe skurke die nuwe Intel-tegnologie ontgin vir ander doeleindes as waarvoor dit bedink is

(3) Vervolgens skep die enklawe 'n ROP-ketting uit die gadgets wat in stap (1) ontdek is en spuit hierdie ketting in die gasheertoepassingsstapel.

SGX-wanware: hoe skurke die nuwe Intel-tegnologie ontgin vir ander doeleindes as waarvoor dit bedink is

(4) Laastens, wanneer die gasheertoepassing die ROP-ketting teëkom wat in die vorige stap geskep is, begin die kwaadwillige loonvrag uitvoer - met die voorregte van die gasheertoepassing en die vermoë om stelseloproepe te maak.

Hoe 'n skurk hierdie hacks gebruik om ranzowari te skep

Nadat die gasheertoepassing beheer na die enklawe oorgedra het deur een van die ECALL'e (sonder om te vermoed dat hierdie enklawe kwaadwillig is), soek die kwaadwillige enklawe na vrye spasie in die geheue van die gasheertoepassing vir die inspuit van kode (met die vrye spasies van daardie reekse selle) wat met nulle gevul is). Toe deur hack om adresse te ondersoek om te sien of hulle gelees kan word, – die enklawe soek vir uitvoerbare bladsye in die gasheertoepassing en genereer 'n ROP-ketting wat 'n nuwe lêer met die naam "RANSOM" in die huidige gids skep (in 'n regte aanval enkripteer die enklawe bestaande gebruikerlêers) en vertoon 'n losprysboodskap. Terselfdertyd glo die gasheertoepassing naïef dat die enklawe eenvoudig twee nommers byvoeg. Hoe lyk dit in kode?

Vir gemak van persepsie, laat ons 'n paar mnemonics bekendstel deur die definisies:

SGX-wanware: hoe skurke die nuwe Intel-tegnologie ontgin vir ander doeleindes as waarvoor dit bedink is

Ons stoor die oorspronklike waardes van die RSP- en RBP-registers om die normale werking van die gasheertoepassing te herstel nadat die loonvrag uitgevoer is:

SGX-wanware: hoe skurke die nuwe Intel-tegnologie ontgin vir ander doeleindes as waarvoor dit bedink is

Ons is op soek na 'n geskikte stapelraam (sien die kode uit die afdeling "hack vir die herleiding van beheervloei").

Soek geskikte ROP-toestelle:

SGX-wanware: hoe skurke die nuwe Intel-tegnologie ontgin vir ander doeleindes as waarvoor dit bedink is

Vind 'n plek om die loonvrag in te spuit:

SGX-wanware: hoe skurke die nuwe Intel-tegnologie ontgin vir ander doeleindes as waarvoor dit bedink is

Ons bou 'n ROP-ketting:

SGX-wanware: hoe skurke die nuwe Intel-tegnologie ontgin vir ander doeleindes as waarvoor dit bedink is

Dit is hoe Intel se SGX-tegnologie, wat ontwerp is om kwaadwillige programme teë te werk, deur skurke uitgebuit word om teenoorgestelde doelwitte te bereik.

Bron: will.com

Voeg 'n opmerking