Beveik prieš ketverius metus informacinių technologijų mokslininkai pradėjo eksperimentuoti su elektroninio įsilaužimo metodu, pavadintu „Rowhammer“ – jis leidžia įveikti praktiškai bet kokio kompiuterio apsaugas manipuliuojant fiziniais elektriniais krūviais atminties lustuose ir pakeisti duomenis nenumatytais būdais, rašo wired.com
Kadangi šis metodas paveikia pačias fundamentaliausias kompiuterinės įrangos savybes, nuo jų neįmanoma pilnai apsisaugoti jokiais programiniais būdais. O dabar mokslininkai-programišiai sugalvojo, kaip pasinaudojant „Rowhammer“ nuotoliniu būdu užgrobti „Android“ telefonus.
Ketvirtadienį Amsterdamo Vrije universiteto VUSec tyrimų grupės mokslininkai publikavo mokslinį darbą, kuriame detaliai aprašo naują „Rowhammer“ atakos formą, kurią jie pavadino „GLitch“. Kaip ir ankstesnėse šios atakos formose, mokslininkai sugebėjo labai tikslingai sukelti elektrinius nuotėkius įrenginio atmintyje taip, kad dvejetainėse duomenų saugojimo sistemose 0 virstų 1 ir atvirkščiai (tai vadinama bitų apvertimu, arba „bit-flip“).
Naujasis metodas išskirtinis tuo, kad jį galima realizuoti paprasčiausiose interneto svetainėse, kuriose apsilankę kai kurių „Android“ įrenginių naudotojai būtų „išlaužiami“. Tad tai yra pirmas į išmaniuosius telefonus nutaikytas nuotoliniu būdu veikiantis „Rowhammer“ atakos būdas.
„Norėjome patikrinti, ar „Android“ telefonai yra jautrūs nuotolinėms „Rowhammer“ atakoms ir žinojome, kad įprastiniai atakos būdai neveiktų. Sukeldami bitų apsivertimus labai specifiniu būdu mes iš tiesų sugebėjome perimti naršyklės telefone valdymą. Sugebėjome telefone nuotoliniu būdu atlikti kodo vykdymą“, – sakė vienas iš šio tiriamojo darbo autorių, Pietro Frigo.
Išmanusis kūjis
„Rowhammer“ atakos vykdomos išnaudojant ne šiaip įprastas abstrakčias klaidas programinėje įrangoje, o fundamentalius fizikos dėsnius, nuo kurių priklauso kompiuterių veikimas. Kuomet procesorius gauna prieigą prie miniatiūrinių celių, kuriose laikomi elektriniai krūviai, koduojantys duomenis nulių ir vienetų pavidalu, dalis šių elektrinių krūvių kartkartėmis gali nutekėti į gretimas eilutes ir sukelti bitų apsivertimą jose. Pakartotinai prašant prieigos („kalant“) prie atminties eilių abipus eilutės, į kurią konkrečiai nusitaikyta, kartais galima gauti specifinę, iš anksto numatytą apverstų bitų seką, suteikiančią gilesnę prieigą į telefono sistemą. Vėliau šią prieigą galima išnaudoti siekiant didesnės apimties įrenginio valdymo.
Mokslininkai jau anksčiau vykdė sėkmingas „Rowhammer“ atakas prieš kompiuterius su „Linux“ ir „Windows“ operacinėmis sistemomis, o ganėtinai neseniai VUSec specialistai parodė, kad teoriškai tie patys metodai turėtų veikti ir prieš „Android“, tačiau tik po to, kai užpuolikas telefone jau būna įdiegęs piktybinį programinį kodą. Tačiau „Android“ telefonuose naudojami ARM architektūros procesoriai turi tam tikrą spartinančiosios atminties (angl. cache) tipą – nedidelę atminties sritį pačiame procesoriuje, į kurią, siekiant efektyvesnio darbo, dažnai kreipiasi procesorius. Dėl to gauti tikslingą prieigą prie konkrečių atminties eilučių yra ganėtinai sudėtinga.
Norint įveikti šią kliūtį, Vrije universiteto mokslininkai sugalvojo eiti aplinkiniu keliu: per grafikos procesorių, kurio spartinančiąją atmintį suvaldyti be trukdančių procesoriaus kreipinių yra paprasčiau. „Visi absoliučiai ignoravo vaizdo procesorius, o mes sugebėjome jais pasinaudodami sukurti ganėtinai greitą nuotolinį „Rowhammer“ išnaudojimo būdą ARM įrenginiuose, kuomet buvo tikima, jog tai yra neįmanoma“, – sakė P. Frigo.
Nuo apverstų bitų iki užvaldytų telefonų
Mokslininkų sukurto galybių patikrinimui skirto atakos būdo vykdymas trunka apie dvi minutes nuo „JavaScipt“ kodo įkrovimo iš piktybinės svetainės į telefoną iki kodo vykdymo aukos telefone. Tiesa, piktybinis kodas gali būti vykdomas tik naršyklei suteiktų privilegijų ribose. Tai reiškia, kad jis gali pavogti prisijungimo duomenis arba stebėti naršymo įpročius, tačiau negali gauti gilesnės prieigos nepasinaudojant kitomis telefono programinės įrangos saugumo spragomis.
O svarbiausia tai, kad šiame etape mokslininkai sugebėjo įveikti tik telefonus, kuriuose naudojama „Firefox“ naršyklė, o procesorius yra arba „Qualcomm Snapdragon 800“, arba „Snapdragon 801“ – tokiose sistemose ir pagrindinis, ir grafikos procesoriai yra viename luste. Tai reiškia, kad toks įsilaužimo metodas užtikrintai veikia tik senesniuose „Android“ telefonuose, tokiuose, kaip „LG Nexus 5“, „HTC One M8“ ar „LG G2“ – naujausias iš šių telefonų yra pristatytas jau prieš ketverius metus.
Galėtų atrodyti, kad tokie apribojimai smarkiai susiaurina atakos taikymo galimybes, tačiau P. Frigo tvirtina, jog mokslininkai tyrime senesnius telefonus naudojo tik dėl to, kad jų laboratorijoje praėjusių metų vasarė, kuomet ir buvo pradėti tokio įsilaužimo tyrimai, turėta daugiausiai. Be to, remdamiesi ankstesne „Rowhammer“ naudojimo prieš „Android“ įrenginius patirtimi, jie žinojo, kad bitų pervertimas tuose aparatuose yra įmanomas. P. Frigo tvirtina, kad nors jų atakos kodą reikėtų pakoreguoti norint, kad jis veiktų kitokioms telefonų architektūroms, jis tikisi, kad skyrus šiek tiek laiko atvirkštinės inžinerijos darbams būtų įmanoma tokiu būdu įsilaužti ir į naujesnius „Android“ telefonus, ir pritaikyti ataką kitoms išmaniųjų įrenginių naršyklėms.
„Norint tai išsiaiškinti reikia įdėti šiek tiek darbo. Galbūt su kitokia architektūra ir kita programine įranga šis atakos kodas neveiktų, o gal kaip tik veiktų net geriau“, – sakė mokslininkas-programišius. Kad įsilaužtų į telefoną per grafikos procesorių, mokslininkai visų pirma turėjo aptikti būdą apversti bitus grafikos procesoriuje, o vėliau pasinaudojus gauta prieiga įsibrukti giliau į telefoną. Tą jie sugebėjo padaryti per populiarią naršyklės pagrindu veikiančią grafikos kodų biblioteką „WebGL“ (dėl to ir įsilaužimo įrankis pavadintas „GLitch“).
Modifikuotas į „WebGL“ besikreipiantis kodas, kartu su tikslia laiko skaičiavimo įranga, buvo įdiegtas piktybinėje interneto svetainėje – pagal atsako laukimo trukmę programišiai sugebėdavo nustatyti, į kurią tiksliai atminties vietą kreipiasi procesorius, o tuomet pakartotinai užkrovinėdavo tam tikras grafikos tekstūras, kurios „kaldavo“ tam tikras atminties eilutes.
Tuomet mokslininkai pasinaudojo viena įdomia „Firefox“ ypatybe: ši naršyklė atmintyje saugomus skaičius, užkoduotus tam tikra tvarka, vertina ne kaip paprasčiausius duomenis, o kaip į nuorodas į kitus „objektus“ – talpyklas, kuriose yra programišių kontroliuojami duomenys – kitose atminties vietose. Taigi, paprasčiausiai vartydami bitus vaizdo procesoriaus atmintyje programišiai skaičius keitė nuorodomis į jų valdomus duomenis, tokiu būdu suteikdami sau galimybę vykdyti norimas užduotis naršyklėje, peržengiant paprastai ribotas „JavaScript“ kodų vykdymo galimybes.
„Google“ ėmėsi priemonių
„Google“, reaguodami į olandų mokslininkų paskelbtą darbą, komentavo, kad visų pirma, konkrečiai ši ataka nekelia praktinės grėsmės didžiajai daliai „Android“ įrenginių naudotojų, mat praktiškai visi įsilaužimai į „Android“ įvyksta per piktybines programėles, kurias vartotojai įsidiegia sąmoningai, dažniausiai net ne iš „Google Play Store“ programėlių parduotuvės. Tokie itin didelio sudėtingumo įsilaužimai, kaip „Rowhammer“ metodų naudojimas, yra retenybė.
Antra, „Google“ technikai išbandė olandiškus metodus su naujesniais „Android“ įrenginių modeliais ir išaiškėjo, kad jie „GLitch“ atakoms yra gerokai atsparesni. Kita vertus, programišiai tikina, kad sugebėjo apversti bitus ir „Google Pixel“ serijos telefonuose. Ir nors kol kas jie neturi pilnai darbui parengto atakos kodų rinkinio, dabartinės žinios leidžia manyti, kad tai yra įmanoma. Ir nors įsilaužimo kodų naujiems telefonams bei kitoms naršyklėms kol kas nėra, „Google“ jau pakoregavo „Chrome“ naršyklę taip, kad ji blokuotų „GLitch“ ar panašių atakos įrankių panaudojimą prieš pačių „Google“ sukurtą naršyklę.
„Nors ši saugumo spraga praktiniu požiūriu grėsmės didžiajai daliai vartotojų nekelia, vertiname pastangas juos apsaugoti ir išplėsti kibernetinio saugumo tyrimų srities žinias. Mums nėra žinoma apie piktybinį spragos išnaudojimo įrankį, tačiau tyrėjų pateiktas veikimo principų įrodymas parodo, kad naršyklės gali tapti tokių „Rowhammer“ pagrindo atakų vektoriumi. Šį vektorių „Chrome“ naršyklėje pašalinome dar kovo 13 dieną, bendradarbiaujame ir su kitų naršyklių kūrėjais, kad jie įdiegtų panašias apsaugas“, – savo komentare „Wired“ žurnalistams rašė „Google“.
„Mozilla“ fondo atstovai taip pat informavo, kad naujausioje „Firefox“ versijoje pataisė vieną elementą, kuris apsunkina duomenų buvimo vietos atmintyje nustatymą – nors tai neužtikrino visiškos apsaugos nuo „GLitch“ poveikio, „Mozilla“ planuoja imtis ir kitų priemonių, kurios bus įdiegtos jau ateinančią savaitę. Ir nors mokslininkai neatskleidė visų duomenų apie „GLitch“ veikimą, mokslininkai, taip pat tiriantys mikroarchitektūros pagrindo atakas prieš techninę įrangą, tvirtina, kad tai yra didelis žingsnis pirmyn verčiant „Rowhammer“ praktiniam naudojimui tinkamu įsilaužimo į telefonus įrankiu.
„Šis mokslinis darbas yra reikšminga ir labai gudri demonstracija to, kaip „Rowhammer“ saugumo spraga gali tapti kitos atakos pagrindu. Žinoma, tik laikas parodys, kaip išplis šis konkretus atakos būdas“, – sakė Carnegie Mellon universiteto tyrėjas Onuras Mutlu, vienas iš pirmųjų „Rowhammer“ principus 2014 metais aprašiusių mokslininkų.
„Šis mokslinis darbas smarkiai sumažino barjerus vykdyti šio tipo atakas ir kitėtina, kad ateityje susidursime su atakomis, vykdomomis būtent šio tyrimo pagrindu. Labai tikėtina, kad šio tipo atakoms jautri labai didelė „Android“ įrenginių dalis“, – sakė „GDATA Advanced Analytics“ vyriausiasis tyrėjas Andersas Foghas, pirmasis atradęs „Meltdown“ ir „Spectre“ saugumo spragas.
Programinės pataisos nepadės
Programinės įrangos kūrėjai galėtų sumažinti „Rowhammer“ atakų efektyvumą ribodami „WebGL“ kodo kreipimąsi į atmintį, tačiau, kadangi bitų vartymo veiksmai yra susiję su kur kas gilesne technine telefonų įranga, programišiai vis vien sugebės atrasti naujus kelius ir pralįsti pro neužkemšamą spragą, tvirtina P. Frigo. Anot jo, vienintelis patikimas tokios spragos užkimšimo būdas turėtų būti aparatūrinio lygio.
Naujesnio tipo išmaniųjų telefonų atmintis (DDR4) jau turi saugiklius, kurie dažniau „atnaujina“ atminties celių krūvį, taip apsaugodama nuo elektros nuotėkių ir bitų apsivertimo. Tačiau P. Frigo nurodo, kad „Pixel“ telefonai, kuriuos jis su kolegomis universitete sėkmingai „nulaužė“, jau buvo su DDR4 tipo atmintimi. O tai iš esmės reiškia, kad aparatūrinės įrangos gamintojai taip pat turi neatsilikti nuo naujausių kibernetinių atakų formų stebėjimo, ypač kai programinės pataisos neturi galimybių ilgam užkimšti saugumo spragų.
„Kaskart, kai kas nors pasiūlo naują apsisaugojimo nuo „Rowhammer“ būdą, kas nors kitas suranda būdą įveikti naują apsaugą. O jei jau telefonas yra pažeidžiamas „Rowhammer“, tai jis ir bus pažeidžiamas tol, kol telefono neišmesite“, – sakė P. Frigo.