Kar smo si pri XDA nekoč zamislili kot dokaz koncepta varnostne ranljivosti, so zdaj potrdili računalniški znanstveniki na Georgia Institute of Technology v Atlanti. Ekipa podrobno opisuje, kako se imenuje "plašč in bodalo" podvige, ki lahko prevzamejo uporabniški vmesnik večine različic Androida (vključno s 7.1.2). Glede na njegovo naravo ga je težko popraviti in tudi težko odkriti.
Cloak and Dagger je izkoriščanje, ki izkorišča dve dovoljenji za prevzem nadzora nad uporabniškim vmesnikom, ne da bi uporabnik opazil zlonamerno dejavnost. Napad uporablja dve dovoljenji: SYSTEM_ALERT_WINDOW ("nariši na vrhu") in BIND_ACCESSIBILITY_SERVICE ("a11y«), ki se zelo pogosto uporabljajo v aplikacijah za Android.
Imamo to začrtal v preteklosti, toda tisto, zaradi česar je ta ranljivost tako pereča, je dejstvo, da aplikacije, ki zahtevajo SYSTEM_ALERT_WINDOW, samodejno pridobijo to dovoljenje, ko so nameščene prek trgovine Google Play. Kar zadeva omogočanje storitve dostopnosti, je zlonamerna aplikacija sposobna preprosto družbeno načrtovati uporabnika, da jo odobri. Zlonamerna aplikacija je lahko celo nastavljena tako, da uporablja storitev dostopnosti za napol zakonite namene, kot je spremljanje, kdaj so določene aplikacije odprte za spreminjanje določenih nastavitev.
Ko sta ti dve dovoljenji podeljeni, je število napadov, do katerih lahko pride, ogromno. Možna je kraja kode PIN, žetonov dvofaktorske avtentikacije, gesel ali celo napadi z zavrnitvijo storitve. To je posledica kombinacije prekrivnih elementov, ki uporabnika zavedejo, da misli, da je v interakciji z zakonita aplikacija in storitev dostopnosti, ki se uporablja za prestrezanje besedila in vnosa na dotik (ali posredovanje lastnega vnos).
Nekaj mesecev nazaj smo teoretizirali o takšni ranljivosti, v kateri bi ustvarili aplikacijo za dokaz koncepta, ki uporablja SYSTEM_ALERT_WINDOW in BIND_ACCESSIBILITY_SERVICE, da narišete prekrivko nad zaslonom za vnos gesla v aplikaciji XDA Labs in prestrežete vnos tipk za vlečenje gesla. Ta aplikacija, ki smo si jo zamislili, bi bila aplikacija za upravljanje samodejnega vrtenja, ki bi uporabljala prekrivanje za namene risanja nevidnega polja na zaslonu za nadzor vrtenja (namesto zahteve WRITE_SETTINGS, ki bi dvignila zastavice) in storitev dostopnosti, ki uporabniku omogoča nadzor samodejnega vrtenja profilov v posamezni aplikaciji osnova. Teoretično bi bil to en primer aplikacije, ki uporablja "plašč in bodalo". Vendar nihče iz naše ekipe ni bil pripravljen tvegati svojega račune razvijalcev tako, da izzovejo Googlove avtomatizirane sisteme za pregledovanje aplikacij, da ugotovijo, ali bo naše izkoriščanje dokazov o konceptu dovoljeno v Play Trgovina.
V vsakem primeru so ti raziskovalci opravili delo in predložili testne aplikacije, da bi dokazali, da je uporaba teh dveh dovoljenj res lahko velika varnostna težava:
Kot lahko vidite, so napadi uporabnikom nevidni in omogočajo popoln nadzor nad napravo. Trenutno so vse različice Androida od Androida 5.1.1 do Androida 7.1.2 ranljive za to exploit, glede na dejstvo, da izkorišča dve dovoljenji, ki se sicer uporabljajo za povsem legitimno namene.
Ne pričakujte, da bo resnična rešitev te težave kmalu prišla v vašo napravo, čeprav je treba opozoriti, da spremembe v SYSTEM_ALERT_WINDOW v sistemu Android O bo delno odpravilo to napako tako, da bo zlonamernim aplikacijam onemogočilo popolno risanje po celotnem zaslonu. Poleg tega Android O zdaj z obvestilom opozori, če aplikacija aktivno riše prekrivanje. S tema dvema spremembama je manj verjetno, da bi se zlonamerna aplikacija izognila napadu če je uporabnik pozoren.
Kako se zaščitite na različicah pred Androidom O? Kot vedno namestite samo aplikacije, ki jim zaupate, iz virov, ki jim zaupate. Prepričajte se, da so dovoljenja, ki jih zahtevajo, v skladu s tem, kar pričakujete.
Glede na stotine milijonov rednih uporabnikov tam zunaj, po besedah Googlovega tiskovnega predstavnika Play Store Protect bo zagotovil tudi potrebne popravke za preprečevanje napadov s plaščem in bodalom. Kako natančno bo to dosegel, ni jasno, vendar upajmo, da vključuje nek način zaznavanja, kdaj se ti dve dovoljenji uporabljata zlonamerno. Dvomim, da bi lahko zaznal vse take primere, zato je v vsakem primeru najbolje, da spremljate, katera dovoljenja so dodeljena vsaki aplikaciji, ki jo namestite.