Teatud Marshmallow seadmed on vastuvõtlikud koputusele, kus rakendus katab kasutaja petmiseks loadialoogi peal teksti.
Kuigi paljudel meist voolab sülg Nexuse seadmetele mõeldud äsja välja antud Android Nougati pärast, kasutab valdav enamus kasutajaid endiselt Android Marshmallow'd. Ärakasutamine, mille olemasolu on sellest ajast alates dokumenteeritud vähemalt 2015. aasta keskel mõjutab endiselt paljusid kaasaegseid Android-seadmeid.
Pahatahtlikud rakendused on võimelised tapjack oma tegevust arvesse võtta andes neile loa, mida te pole kunagi selgesõnaliselt andnud. Siin on, kuidas ärakasutamine töötab.
Tapjackingu tagasitulek
Kujutage ette, et avate Instagrami ja proovite jagada hiljuti puhkuse ajal tehtud pilti. Kui valite oma galeriis pildi sirvimise, palub Instagram teil anda talle luba juurdepääsuks teie salvestusruumile. Kui aga puudutate "jah", kuvatakse teile veateade.
Te ei saa Instagramile salvestusluba anda, kuna teil on sisse lülitatud aktiivne ekraaniülekate antud juhul üks paljudest rakendustest, mis toonivad teie ekraani, et saaksite telefoni öösel pimestamata kasutada ise. See on Androidi lubade süsteemi juhtum
töötab nii nagu ette nähtud: rakendusele tundliku loa andmiseks peate keelama kõik oma seadme ekraanikatted.Rakendused, millel on võimalus ekraanile joonistada, võivad teid petta, et anda sellele tundlikke andmeid. Näiteks võib ekraani ülekate asetada võltsparooli sisendi tegeliku sisselogimiskuva peale, et teie paroole koguda. Sellist ärakasutamist nimetatakse 'koputuse röövimine' ning seda on aastate jooksul erinevates Androidi versioonides hüpatud ja paigatud üks halvimaid näiteid, mis kestab kuni Android 4.0.3. Kuid hiljuti tuli ärakasutamine tagasi Android Marshmallow käitusaja lubade mudel.
Arendaja nimega Iwo Banaś lõi an rakendus ärakasutamise demonstreerimine. See toimib üsna lihtsalt – kui rakendus kuvab lubade dialoogi, siis pahatahtlik rakendus installitud kuvab süsteemi ülekatte, mis katab lubade dialoogi tekstiploki mis tahes tekstiga tahab. Tahtmatu kasutaja, kes klõpsab lubade dialoogiboksis käsul „Luba”, meelitatakse andma luba, mida talt küsiti, kuid mille taotlus oli kasutaja vaate eest peidetud. Selline ärakasutamine rikub täielikult Android Marshmallow loasüsteemi eesmärki, kuna uus mudel pidi tagama, et kasutajad saavad ainult neid õigusi, millega nad on selgesõnaliselt nõus.
Nüüd ma tean, millest sa mõtled. Kui Android tuvastaks süsteemi ülekatte ja takistaks mul Instagrami salvestuslubasid andmast, kas see ei takistaks seda ärakasutamist? Vastus on eitav, minu testimisel ilmnes, et teatud seadmetes, mis kuvavad lubade dialoogi kohal teksti ülekatte, ei käivita turvamehhanismi. Kontseptsiooni tõestamise koputamise rakenduse arendaja väidab, et ärakasutamine on tõhus, kuna see sõltub sellest, et kasutaja installib teisese pahatahtliku rakenduse, mis sihib API taset 22 ja madalamat (vahukommi eel). See on tingitud asjaolust, et enne Android Marshmallow't antakse installimise ajal kõigile rakendustele load.
Olgu, nii et kui kasutate Marshmallow't, peate lihtsalt vältima selliste rakenduste installimist, mida te ei usalda ja mis nõuavad ülekatte joonistamiseks luba, eks? Kui Androidi loa mudel töötaks algselt kavandatud viisil, oleks teil õigus. Kuid alates selle ärakasutamise avastamisest isegi rakendused, mis sihivad API taset 23 (Marshmallow), kes taotlevad ülekatte luba, on potentsiaalne oht.
Kas loamudelis on lünk?
Kui olete üks paljudest miljonitest inimestest, kes kasutavad Facebook Messengerit oma sõpradega vestlemiseks, siis olete kohanud Androidi üht parimat funktsiooni – rakenduste võimalust üksteise peale joonistada ekraanid. Kui lahe on see, et saate oma lemmik Facebooki grupivestluses jälgida kasutajat mis tahes rakenduses, mille ta avab? Kuigi Facebooki Messenger tõi "ujuvate rakenduste" idee peavoolu, on see kontseptsioon Androidis juba mõnda aega eksisteerinud. Tänu nende olemasolule on rakendused saanud mõnda aega teie rakendustele ülekatteid luua TYPE_SYSTEM_OVERLAY Androidi WindowManageris.
Enne Android Marshmallow'd peaksid rakendused taotlema luba SYSTEM_ALERT_WINDOW installimise ajal, enne kui see kuvab teie ekraani ülaosas ülekatteid. Kuid see muutus 6.0 granuleeritud käitusaja lubade mudeli kasutuselevõtuga. Kasutajad peaksid nüüd rakenduse tegelikul käitamisel rakendustele õigusi andma, mis loodetavasti ergutaks keskmist kasutajat kaitsma oma privaatseid andmeid rakenduste eest, mis kahtlaselt taotlevad näiliselt funktsionaalselt mitteseotud load.
SYSTEM_ALERT_WINDOW ei sarnane siiski muude lubadega. Arendajad ei saa kuvada dialoogi, et taotleda programmiliselt lõppkasutaja luba, nagu enamik muid Marshmallow'd sihtivate rakenduste lubasid. Selle asemel peate käsitsi navigeerima seadete ekraanile ja lubama ise loa. Muidugi aitavad mõned rakendused, näiteks Facebook Messenger, teid protsessis.
Google nõuab seda arendajatelt, kuna nad on pidanud loa "eriti tundlikud."
Eriload
On paar luba, mis ei käitu nagu tavalised ja ohtlikud load. SYSTEM_ALERT_WINDOW ja WRITE_SETTINGS on eriti tundlikud, nii et enamik rakendusi ei tohiks neid kasutada. Kui rakendus vajab üht neist lubadest, peab see luba deklareerima manifestis ja saatma kasutaja volitust taotleva kavatsuse. Süsteem reageerib kavatsusele, näidates kasutajale üksikasjalikku halduskuva.
Arvestades seda, mida me koputamise kohta eespool teame, on see mõistlik. Aga siin on asi. Google ei järgi isegi oma reegleid. Kas Facebook Messengeri ekraanipildid juhatavad teid läbi selle SYSTEM_ALERT_WINDOW loa andmise protsessi, mida ma teile ülal näitasin? See juhtub ainult siis, kui installite APK väljaspool Google Play poodi. Kui installite rakenduse Google Play poest, SYSTEM_ALERT_WINDOW luba antakse automaatselt.
Google on ohverdanud ohutuse mugavuse nimel
Pikka aega enne Android Marshmallow'd peeti SYSTEM_ALERT_WINDOWohtlik"luba. Android Marshmallow 6.0 puhul muudeti luba signatuur|süsteem|rakendus See on see, mis algselt nõudis arendajatelt, et nad juhiksid kasutaja loa andmiseks seadete ekraanile. Kuid Androidi versiooniga 6.0.1 SYSTEM_ALERT_WINDOW muudeti nii et Google Play pood saaks loa automaatselt andakasutajat teavitamata. Miks Google selle muudatuse tegi, on meile ebaselge. Google ise pole välja tulnud ega öelnud, miks nad selle muudatuse tegid, mis on eriti veider, arvestades SYSTEM_ALERT_WINDOW keelt, mis nende veebilehtedel ikka veel eksisteerib.
Võimalik, et piisavalt arendajaid vihastas SYSTEM_ALERT_WINDOW esialgsete muudatustega, mis nõudsid kasutajatelt käsitsi loa andmist, mille Google vaikselt andis, ja andis selle lihtsalt igale seda taotlenud rakendusele. Kuid seda tehes on Google ohverdanud ohutuse mugavuse nimel. On põhjus, miks Google ise pidas luba kõige kauem ohtlikuks, sest nii see on. Ja Marshmallow loa koputamise ärakasutamise olemasolu on piisav tõend igale rakendusele selle loa automaatse andmisega kaasnevatest ohtudest.
Sellele koputamise ärakasutamisele juhiti meie tähelepanu alles hiljuti, kuigi see on eksisteerinud juba mitu kuud. Meie XDA portaali meeskonna seadmete sisetestimisel oleme seda kinnitanud ärakasutamine töötab paljudes kaasaegsetes seadmetes, kus töötab Android Marshmallow. Siin on kiire ülevaade seadmetest, mida testisime iga vastava seadme uusimate saadaolevate tarkvaraversioonidega ja kas koputamise ärakasutamine töötab või mitte. Seadmed, mis on märgistatud "Haavatavad", on vastuvõtlikud koputamise ärakasutamisele, samas kui seadmed, millel on märge "Ei ole". haavatavad" suudavad tuvastada ülekatte kuvava rakenduse ja taotleda selle enne keelamist jätkates.
- Nextbit Robin – Android 6.0.1 juuni turvapaikadega – Haavatav
- Moto X Pure – Android 6.0 maikuu turvapaikadega – Haavatav
- Honor 8 – Android 6.0.1 juuli turvapaikadega – Haavatav
- Motorola G4 – Android 6.0.1 maikuu turvapaikadega – Haavatav
- OnePlus 2 – juunikuu turvapaikadega Android 6.0.1 – Ei ole haavatav
- Samsung Galaxy Note 7 – Android 6.0.1 juuli turvapaikadega – Ei ole haavatav
- Google Nexus 6 – Android 6.0.1 augusti turvapaikadega – Ei ole haavatav
- Google Nexus 6P – Android 7.0 augusti turvapaikadega – Ei ole haavatav
Siiani on need kõik seadmed, mida sain meeskonna testima panna. Ma ei leidnud korrelatsiooni turvapaiga versiooni ja ärakasutamise vahel. Nagu võite öelda meie viimane arutelu Androidi turvavärskenduste kohta, ei kasuta paljud inimesed niikuinii uusimate turvapaikadega ja on seega selle ärakasutamise ja muude lehtedel kirjeldatud ärakasutamise suhtes haavatavad. Androidi turvabülletään.
Edasi liikuma
Soovitame tungivalt testida seda ärakasutamist oma seadmes ise, et näha, kas olete haavatav. Oleme koostanud APK-d saidilt ülal lingitud lähtekood (saate seda ka ise teha) ja olete need AndroidFileHosti üles laadinud. Kasutamise testimiseks peate installima mõlemad peamine koputamise rakendus samuti selle abistaja teenus. Seejärel käivitage lihtsalt põhirakendus ja klõpsake nuppu "testida". Kui lubade dialoogi kohal hõljub tekstikast ja kui klõpsate nupul „Luba”, kuvatakse teie seadme kontaktide loend, siis on teie seade koputamise suhtes haavatav. Ärge muretsege selle pärast, et ujuv tekstikast ei kata täielikult lubade dialoogi, see kontseptsiooni tõestamise rakendus pole eesmärk on suurepäraselt demonstreerida, kuidas lubade dialoogi korralikult kaaperdada, vaid pigem tõestada, et see nii on võimalik.
Loodame, et võetakse kasutusele parandus, mis parandab selle ärakasutamise kõigis Marshmallow seadmetes ja et originaalseadmete tootjad värskendavad kõiki oma seadmeid uusimale turvapaigale. Kuna tegelikkus on see, et enamikul panditud seadmetel kulub Nougati hankimiseks mitu kuud, seega on enamiku jaoks ainus viis kasutajad, et vältida kahju, on installida uusimad turvapaigad või võtta monitorirakenduste load ise. Kuid Google'i otsusega anda automaatselt potentsiaalselt ohtlikule süsteemile SYSTEM_ALERT_WINDOW luba, on paljud kasutajad kasutavad teadmatult rakendusi, mis võivad potentsiaalselt kaaperdada nende telefone, et anda üha ohtlikumaks load.