====== Sažetak ====== Sustav za višezadaćnost operativnog sustava Android pruža bogate značajke za poboljšanje korisničkog iskustva i nudi veliku fleksibilnost za programere aplikacija za promicanje personalizacije aplikacija. Međutim, sigurnosne implikacije Androidovog sustav za višezadaćnost ostaje nedovoljno istražena. Pojedina istraživanja su pokazala nedostatke u dizajnu Androidovog sustav za višezadaćnost koji sve nedavne verzije Androida čine ranjivim na napade otmica zadataka. Jedna od ovih ranjivosti je i ranjivost nazvana StrandHogg koja omogućuje zlonamjernoj aplikaciji da traži dopuštenja, pretvarajući se da je legitimna aplikacija. Napadač može zatražiti pristup bilo kojem odobrenju, uključujući SMS, fotografije, mikrofon i GPS, omogućujući napadaču da čita poruke, pregledava fotografije, prisluškuje i prati kretanja žrtve. U vrijeme pisanja ovog rada Android tim je obaviješten o ranjivosti ali još nisu popravili sustav za višezadaćnost kako bi bio otporan na ovaj napad. Keywords: Android; višezadaćnost; ranjivost; activity ===== Uvod ===== U svijetu računala, računalno višezadaćnost znači da se višestruki procesi izvode u istom vremenu. Međutim, u Android sustavima je višezadaćnost jedinstven i posve drugačiji koncept, kako je definirano u Androidovoj dokumentaciji: "Zadatak(engl. task) je skup aktivnosti(engl. activity) s kojima korisnici reagiraju u određenom poslu". Drugim riječima, zadatak sadrži aktivnosti, koje su ujedno i UI komponente, koje mogu pripadati jednoj ili više aplikacija, a svaka se aplikacija može pokrenuti u jednom ili u više procesa. Jedinstveni dizajn višezadaćnog sistema u operativnom sustavu Android pomaže korisnicima da organiziraju korisničke sesije putem naknadnih zadataka i pruža bogate značajke kao što su prikladno prebacivanje aplikacije, održavanje stanja aplikacije u pozadini, glatka navigacija kroz zadatke pomoću gumba "natrag" itd. Unatoč svojim prednostima, otkriveno je da upravo taj mehanizam ima ozbiljne sigurnosne rizike. Kada se zloupotrijebe, ove praktične značajke za obavljanje više zadataka mogu pokrenuti imati i mnogo neželjenih posljedica i pokrenuti širok spektar napada otimanja zadataka a jedan od takvih je i StrandHogg. ===== Opis sustava za višezadaćnost ===== Kako bi opisao napad potrebno je prvo reći nešto malo o sustavu Android i kako radi sustav za višezadaćnost. Osnovne komponente su: * Activity(engl. //Activity//): Aktivnost je vrsta komponente aplikacije. Instanca aktivnosti pruža grafički korisničko sučelje na ekranu. Tipično ima više aktivnosti za različite korisničke interakcije, poput biranja telefonskih brojeva i čitanja popisa kontakata. Sve aktivnosti moraju biti definirane u manifest datoteci aplikacije. * Namjera(engl. //Intent//): Kako bi aktivnost prešla granice procesa i omogućila komunikaciju između komponenti aplikacije, Android pruža interkomponentnu komunikaciju podržanu IPC mehanizmom koji se zove vezivo(engl. //binder//). Za izvođenje ICC-a s drugim komponentama, komponenta koristi namjeru, apstraktni opis operacija koje treba izvesti. Namjenski objekt je objekt koji se koristi za zahtijevanje radnje od druge komponente, npr. pokretanje instance aktivnosti pozivanjem funkcije ''startActivity()''. Imamo dvije vrste namjera: eksplicitna namjera određuje komponentu po imenu dok implicitna namjera umjesto toga određuje opću vrstu akcije, kategoriju ili podatke za komponentu koju ta komponenta treba obraditi. Sustav će pokrenuti komponentu sposobnu za rukovanje ovom namjerom a ako u sustavu postoji više ciljnih aktivnosti, od korisnika će se zatražiti da odabere željenu aktivnost. * Usluga upravitelja aktivnosti (engl. //Activity Manager Service//): AMS je Android sustav koji nadgleda sve instance aktivnosti koje se izvode u sustavu i kontrolira njihove životne cikluse (stvaranje, pauziranje, nastavak i uništavanje). Dok WMS(Window Manager Service) upravlja svim prozorima u sustavu i šalje korisničke unose iz prozora, AMS organizira sve aktivnosti u sustavu u zadatke i odgovoran je za upravljanje zadacima i podržavanje funkcija više zadataka. Osim toga, AMS je zadužen za nadzor nad uslugama(engl. services), usmjervanjem namjera, emiterima(engl. broadcasters), pristupa dobavljačima sadržaja(engl. content providers), upravljanje procesima, itd. što čini AMS jednu od najkritičnijih sistemskih usluga u sustavu Android. {{ https://developer.android.com/images/fundamentals/diagram_backstack.png?nolink&617x195 |Standarno ponašanje sustava za višezadaćnost}} Kao što vidimo na slici iznad očekivano ponašanje sustava koji dodaje aktivnosti jednu na drugu unatar istog zadatka. Programerima, kako bi imali više kontrole nad ovim postupkom, Android sustav daje par načina za izmjenu ovog procesa. * Način pokretanja (engl. //launch mode//) i zastavice namjene(engl. //intent flags//) - načini pokretanja i zastavice poput ''NEW_TASK'', ''SINGLE_TOP'',''CLEAR_TOP'', itd. daju programerima mogućnost da mijenaju zadanu povezanost aktivnosti sa svojim zadatkom i način na koji se aktivnosti kreiraju * Događaji(engl. //events//) - ako se programer odluči može implementirati funkciju ''onBackPressed()'' koja će mu omogućiti da preduhitri taj događaj i tako utječe na aktivnost ===== Mogućnosti napada ===== StrandHogg je jedinstven jer omogućuje sofisticirane napade bez potrebe za tzv. "root" uređajem, koristi slabost u sustavu višezadaćnosti kako bi izveo napade koji omogućuje zlonamjernim aplikacijama da se maskiraju kao i bilo koja druga aplikacija na uređaju. Taj se rad temelji na Androidovoj kontrolnoj postavci pod nazivom taskAffinity koja omogućava bilo kojoj aplikaciji, uključujući zlonamjernoj, da slobodno preuzme bilo koji identitet u sustavu višezadaćnosti koji želi. Tvrtka Promon je provela istraživanje i pronašala je svih 500 najpopularnijih aplikacija u riziku, a sve verzije Androida su pogođene od prve pa do najnovijeg Androida 10. Ovo istraživanje je znatno proširenje na istraživanje koje je 2015. provelo Sveučilište Penn, gdje su istraživači teoretski opisali određene aspekte ranjivosti. Google je tada odbacio ozbiljnost ranjivosti, ali kako su daljnja istraživanja pokazala hakeri iskorištavaju StrandHogg kako bi dobili pristup uređajima i aplikacijama. Utjecaj: * Sve inačice Androida, uključujući i Android 10 * Svih 500 najpopularnijih aplikacija * Identificirano je 36 zlonamjernih aplikacija koje koriste ranjivost * Ranjivost se može iskoristiti bez pristupa root-u Mogućnosti napadača: * Može slušati putem mikrofona * Fotografiranje kroz kameru * Čitanje i slanje SMS poruka * Uspostavljanje ili snimanje telefonskih razgovora * Login podatci * Pristup svim privatnim fotografijama i datotekama na uređaju * Pristup podatcima o lokaciji i GPS-u * Pristup popisu kontakata * Pristup telefonskim zapisnicima ===== Kako izvesti napad ===== Kako bi napravili malware dovoljno je u manifestu zloćudne aplikacije moramo postavi ''taskAffinity'' na jednoj ili više aktivnosti kako bi odgovarala imenu paketa(engl. //package name//) bilo koje aplikacije treće strane. Zatim kombiniranjem s ''allowTaskReparenting="true"'' u manifestu ili pokretanjem aktivnosti s zastavicom namjere ''Intent.FLAG_ACTIVITY_NEW_TASK'' zlonamjerna aktivnost bit će smještena unutar i na vrh zadatka cilja. Tako zlonamjerna aktivnost otima zadatak cilja. Sljedeći put kad se ciljna aplikacija pokrene iz launchera, "oteti" zadatak će biti naprijed i zlonamjerna aktivnost bit će vidljiva korisniku. Tada je dovoljno da zlonamjerna aplikacija izgleda kao ciljana aplikacija kako bi se uspješno pokrenuli napadi na korisnika. Moguće je oteti takav zadatak prije nego je ciljna aplikacija uopće instalirana. Ono što posebno čini ovaj napad još učinkovitijim je da napadač može steći značajnu kontrolu nad žrtvinim zadatkom kombinirajući s ''Intent.FLAG_ACTIVITY_NEW_TASK'' i ''Intent.FLAG_ACTIVITY_CLEAR_TASK'', napadač prvo briše ciljani zadatak, a zatim se lansira u njega. Ta aktivnost tada može dovršiti ciljani zadatak pomoću funkcije ''android.app.Activity.finishAndRemoveTask'' i pokrenuti novi zadatak s istim afinitetom s ''Intent.FLAG_ACTIVITY_NEW_TASK'' i ''Intent.FLAG_ACTIVITY_MULTIPLE_TASK'' i tako stvoriti novi ciljni zadatak za koji je zajamčeno da će biti pod kontrolom napadača. Nakon toga napadač može pokrenuti stvarnu aktivnost ciljane aplikacije i pustiti aplikaciju da pokrene svoj put kao i obično. U međuvremenu, budući da napadač i dalje zadržava kontrolu nad zadaćom žrtve, sada ima puno više informacija o stanju mete. Tada može presresti i ubrizgati phishing aktivnosti duboko u tok ciljane aplikacije, na mjesto koje je prirodnije za korisnika i protok ciljane aplikacije. ===== Zaključak ===== Dizajn Androidovog mehanizma upravljanja zadacima ima velike pogreške u smislu sigurnosti. Trenutno on ostavlja napadaču obilje mogućnosti otmice zadataka za izvođenje različitih napada koji mogu prouzrokovati ozbiljne sigurnosne posljedice. Kako ove opasnosti po sigurnost mogu utjecati na sve nedavne verzije Androida, čini se da rješenje nije trivijalno i da bi vjerovatno trebalo doći do potpunog zaokreta u pristupanju mehanizma za upravljanje zadatcima. Tim s Pennsylvania State Sveučilišta je testirala više od 6,8 milijuna aplikacija i utvrdili da postoji rizik preuzimanja zadataka kod velike većine kao što je i ustvrdilo naknadno istraživanje tvrtke Promon. Za sada jedina mogućnost korisnicima je da pažljivo instaliraju apliakcije od provjerenih tvrtki i sa službene trgovine aplikacijama. ===== Izvori ===== [1] [[https://www.usenix.org/system/files/conference/usenixsecurity15/sec15-paper-ren-chuangang.pdf|Chuangang Ren, Yulong Zhang, Hui Xue, Tao Wei, Peng Liu. Towards Discovering and Understanding Task Hijacking in Android The Pennsylvania State University, 2015.]] [2] [[https://promon.co/security-news/strandhogg/|StrandHogg: Serious Android vulnerability leaves most apps vulnerable to attacks.]] [3] [[https://developer.android.com/guide/components/activities/tasks-and-back-stack|Understand Tasks and Back Stack | Android Developers]]