Ranjivost Janus omogućuje napadačima da modificiraju aplikacije bez utjecaja na njihove potpise. Otkrio ga je GuardSquare, a Google ga je popravio.
Android je instaliran na ogromnom broju uređaja, što ga čini metom zlonamjernih napadača. Ranjivosti u Googleovom mobilnom operativnom sustavu i dalje se otkrivaju svakog mjeseca, ali dobra je vijest da Google obično ih marljivo popravlja u redovitim sigurnosnim zakrpama koje se zatim nude proizvođačima originalne opreme, koji ih zatim šalju uređaja.
Nedavno su sigurnosni istraživači otkrili ranjivost koji je prevario korisnike da dopuste napadačima da snime zaslon njihovog uređaja. Taj konkretan exploit je popravljen u Androidu Oreo, ali analitičari GuardSquare nedavno je izvijestio o još jednoj ozbiljnoj ranjivosti koja utječe na Android aplikacije potpisane starijim shemama potpisa.
GuardSquareizvješće navodi da je Janusranjivost (CVE-2017-13156) u Androidu omogućuje napadačima da modificiraju kod u aplikacijama bez utjecaja na njihove potpise. Izvješće dalje kaže da je korijen ranjivosti to što datoteka može biti važeća APK datoteka i važeća DEX datoteka u isto vrijeme.
Janus iskorištava činjenicu da dodatni bajtovi ostaju nezapaženi u APK datotekama i DEX datotekama. The GuardSquare izvješće objašnjava da je APK datoteka ZIP arhiva koja može sadržavati proizvoljne bajtove na početku, prije i između svojih ZIP unosa. JAR shema potpisa uzima u obzir samo ZIP unose, zanemarujući sve dodatne bajtove prilikom izračunavanja ili provjere potpisa aplikacije.
Dalje se objašnjava da DEX datoteka, s druge strane, može sadržavati proizvoljne bajtove na kraju - nakon uobičajenih odjeljaka nizova, klasa, definicija metoda itd. Stoga datoteka može biti važeća APK datoteka i važeća DEX datoteka u isto vrijeme.
GuardSquare također spominje da je ključni element ranjivosti "bezopasna" značajka Dalvik/ART virtualnog stroja. Izvješće navodi da u teoriji, Android runtime učitava APK datoteku, ekstrahira njenu DEX datoteku i zatim pokreće njen kod. Međutim, u praksi, virtualni stroj (VM) može učitati i izvršiti i APK datoteke i DEX datoteke. Problem je u tome što kada VM dobije APK datoteku, još uvijek gleda čarobne bajtove u zaglavlju kako bi odlučio koja je to vrsta datoteke: DEX ili APK. Kada pronađe DEX zaglavlje, učitava datoteku kao DEX datoteku. Ako ne pronađe zaglavlje, učitava datoteku kao APK datoteku koja sadrži zip unos s DEX datotekom. Stoga može pogrešno protumačiti dvostruke DEX/APK datoteke.
GuardSquare kaže da napadač može iskoristiti ovu dualnu značajku VM-a za dodavanje zlonamjerne DEX datoteke normalnoj APK datoteci bez utjecaja na njen potpis. Android runtime će prihvatiti APK datoteku kao valjano ažuriranje legitimne ranije verzije aplikacije, ali Dalvik VM će učitati kod iz DEX datoteke, u koju je umetnut zlonamjerni kod.
Obično kad god korisnik instalira ažuriranu verziju aplikacije, Android runtime provjerava potpis aplikacije kako bi se osiguralo da se podudara sa starijom verzijom. Kada je provjera pozitivna, ažurirana aplikacija dobiva dopuštenja koja su dodijeljena izvornoj aplikaciji. Na taj način napadači mogu iskoristiti Janusovu ranjivost kako bi zaobišli proces provjere potpisa i dobili neprovjereni kod instaliran na uređaje korisnika koji ništa ne sumnjaju.
Ono što je još gore jest da bi ovaj neprovjereni kod mogao dobiti pristup moćnim dozvolama. To stvara ozbiljne mogućnosti. GuardSquare Države:
"Napadač može zamijeniti aplikaciju od povjerenja s visokim privilegijama (na primjer, aplikaciju sustava) modificiranim ažuriranjem kako bi zlorabio njezina dopuštenja. Ovisno o ciljanoj aplikaciji, to bi hakeru moglo omogućiti pristup osjetljivim informacijama pohranjenim na uređaju ili čak potpuno preuzimanje uređaja. Alternativno, napadač može proslijediti modificirani klon osjetljive aplikacije kao legitimno ažuriranje [koje] može izgledati i ponašati se kao izvorna aplikacija, ali ubaciti zlonamjerno ponašanje."
Tvrtka je dodala da do sada nisu vidjeli nijednu aplikaciju koja iskorištava Janus u prirodi. Druga dobra vijest je da ranjivost zahtijeva od korisnika da instalira zlonamjerno ažuriranje iz izvora izvan trgovine Google Play. Stoga su zaštićeni korisnici koji ograniče instaliranje aplikacije na Trgovinu Play.
Ranjivost Janus utječe na uređaje sa sustavom Android 5.0+. Zahvaćene su aplikacije koje su potpisane APK shemom potpisa v1. APK-ovi potpisani shemom potpisa v2 zaštićeni su od ranjivosti. To zahtijeva da se APK-ovi izvode na uređajima koji podržavaju najnoviju shemu potpisa (Android 7.0 i noviji). Shema v2 zaštićena je jer za razliku od sheme v1 uzima u obzir sve bajtove u APK datoteci.
"Starije verzije aplikacija i novije aplikacije koje rade na starijim uređajima i dalje su osjetljive. Programeri bi trebali barem uvijek primjenjivati shemu potpisa v2," GuardSquare Države.
GuardSquare prijavio je ovaj problem Googleu 31. srpnja 2017. i primio potvrdu istog dana. Izvješće tvrtke kaže da je Google izdao zakrpu svojim partnerima u studenom, a objavio bug (CVE-2017-13156) u Android Security Bulletin 4. prosinca 2017. Ranjivost ima popravljeno u sigurnosnoj zakrpi za Android iz prosinca 2017. Zasebno, F-Droid aplikacije iz njihovog službenog repozitorija potvrđene su kao sigurne. Na kraju, potvrđeno je da je ranjivost zakrpana APK Mirror.
Izvor: GuardSquare