Tam tikri „Marshmallow“ įrenginiai yra jautrūs palietimui, kai programa perdengia tekstą leidimo dialogo lango viršuje, kad apgautų vartotoją.
Nors daugelis iš mūsų seilę vargina dėl naujai išleisto „Android Nougat“, skirto „Nexus“ įrenginiams, didžioji dauguma vartotojų vis dar naudojasi „Android Marshmallow“. Išnaudojimas, kurio egzistavimas nuo tada buvo užfiksuotas dokumentais bent 2015 metų viduryje vis dar veikia daugelį šiuolaikinių „Android“ įrenginių.
Kenkėjiškos programos gali tapjack į savo veiksmus suteikiant jiems leidimą, kurio niekada aiškiai nesuteikėte. Štai kaip veikia išnaudojimas.
Tapjacking sugrįžimas
Įsivaizduokite, kad atidarote „Instagram“ ir bandote pasidalinti nuotrauka, kurią neseniai padarėte atostogų metu. Kai pasirenkate naršyti savo galeriją ir ieškoti nuotraukos, „Instagram“ prašo suteikti jai leidimą pasiekti jūsų saugyklą. Bet kai paliesite „taip“, pamatysite klaidos pranešimą.
Negalite suteikti „Instagram“ saugyklos leidimo, nes įjungta aktyvi ekrano perdanga šiuo atveju tai viena iš daugelio programų, kurios tamsina ekraną, kad galėtumėte naudotis telefonu naktį be akinimo save. Tai yra „Android“ leidimų sistemos atvejis
Programos, kurios gali piešti per ekraną, gali apgauti jus ir pateikti jam neskelbtinus duomenis. Pavyzdžiui, ekrano perdanga gali įdėti netikrą slaptažodžio įvestį tikro prisijungimo ekrano viršuje, kad būtų surinkti jūsų slaptažodžiai. Toks išnaudojimas vadinamas "sriegimas" ir daugelį metų buvo įdiegtas ir pataisytas įvairiose „Android“ versijose, su vienas iš blogiausių pavyzdžių, trunkantis iki Android 4.0.3. Tačiau neseniai išnaudojimas sugrįžo „Android Marshmallow“ vykdymo laiko leidimo modelis.
Kūrėjas vardu Iwo Banaś sukūrė an taikymas demonstruodamas išnaudojimą. Tai veikia gana paprastai – kai programa rodo leidimo dialogo langą, kenkėjiška programa Jūs įdiegėte, bus rodoma sistemos perdanga, kad uždengtų leidimo dialogo teksto bloką bet kokiu tekstu nori. Nesąmoningas vartotojas, leidimo dialogo lange spustelėjęs „leisti“, bus apgautas, kad suteiktų leidimą, kurio buvo prašoma, tačiau užklausa buvo paslėpta nuo vartotojo žvilgsnio. Toks išnaudojimas visiškai pažeidžia „Android Marshmallow“ leidimų sistemos tikslą, nes buvo įdiegta naujasis modelis turėjo užtikrinti, kad vartotojai gautų tik tuos leidimus, su kuriais jie aiškiai sutiko.
Dabar aš žinau, apie ką tu galvoji. Jei „Android“ aptiktų sistemos perdangą ir neleistų man suteikti „Instagram“ saugyklos leidimų, ar tai netrukdys šiam išnaudojimui? Atsakymas yra ne, mano bandymo metu atrodo, kad tam tikruose įrenginiuose, rodančius teksto perdangą leidimo dialogo lango viršuje, saugos mechanizmas neįjungiamas. Koncepcinio palietimo programos kūrėjas teigia, kad išnaudojimas yra efektyvus, nes jis priklauso nuo to, ar vartotojas įdiegs antrinę kenkėjišką programą, kuri taikoma 22 ir žemesnio API lygio (pre-Marshmallow). Taip yra dėl to, kad prieš Android Marshmallow visoms programoms suteikiami leidimai diegimo metu.
Gerai, jei naudojate Marshmallow, tereikia neįdiegti jokių programų, kuriomis nepasitikite ir kurios prašo leidimo nupiešti perdangą, tiesa? Jei „Android“ leidimo modelis veiktų taip, kaip buvo nustatyta iš pradžių, būtumėte teisūs. Tačiau nuo šio išnaudojimo atradimo, net programos, taikomos 23 API lygiui (Marshmallow), kurie prašo perdangos leidimo, yra galima rizika.
Leidimų modelio spraga?
Jei esate vienas iš daugelio milijonų žmonių, kurie naudojasi „Facebook Messenger“ pokalbiams su draugais, tada susidūrėte su viena geriausių „Android“ funkcijų – programų galimybe piešti ant kitų ekranai. Kaip šaunu, kad galite turėti burbulą naudodami mėgstamą „Facebook“ grupės pokalbį ir sekti vartotoją bet kurioje atidarytoje programoje? Nors „Facebook Messenger“ iškėlė „plaukiojančių programų“ idėją į pagrindinį srautą, ši koncepcija jau kurį laiką egzistuoja „Android“. Programos jau kurį laiką galėjo kurti perdangas ant jūsų programų, nes egzistuoja TYPE_SYSTEM_OVERLAY „Android“ „WindowManager“.
Prieš „Android Marshmallow“ programoms reikės prašyti leidimo SYSTEM_ALERT_WINDOW diegiant, kol ekrano viršuje gali būti rodomos perdangos. Tačiau tai pasikeitė pristačius 6.0 granuliuotą vykdymo laiko leidimo modelį. Dabar vartotojai turės suteikti leidimus programoms, kai iš tikrųjų paleis programą, o tai, tikimės, paskatins vidurkį vartotojas gali apsaugoti savo asmeninius duomenis nuo programų, kurios įtartinai prašo, atrodo, funkciškai nesusijusių leidimai.
Tačiau SYSTEM_ALERT_WINDOW nėra kaip kiti leidimai. Kūrėjai negali rodyti dialogo lango, kuriame programiškai prašoma galutinio naudotojo suteikti leidimą, kaip ir dauguma kitų leidimų bet kurioje programoje, taikomoje pagal Marshmallow. Vietoj to turite rankiniu būdu pereiti į nustatymų ekraną ir patys įgalinti leidimą. Žinoma, kai kurios programos, pvz., „Facebook Messenger“, padės jums atlikti šį procesą.
„Google“ to reikalauja iš kūrėjų, nes jie manė, kad leidimas yra „ypač jautrus."
Specialūs leidimai
Yra keletas leidimų, kurie neveikia kaip įprasti ir pavojingi leidimai. SYSTEM_ALERT_WINDOW ir WRITE_SETTINGS yra ypač jautrūs, todėl dauguma programų neturėtų jų naudoti. Jei programai reikia vieno iš šių leidimų, ji turi deklaruoti leidimą manifeste ir išsiųsti ketinimą, prašydama suteikti naudotojo įgaliojimą. Sistema reaguoja į ketinimą parodydama vartotojui išsamų valdymo ekraną.
Atsižvelgiant į tai, ką žinome apie sriegimą, tai prasminga. Bet štai kas. Google net nesilaiko savo taisyklių. Ar „Facebook Messenger“ ekrano kopijos padės jums suteikti jai SYSTEM_ALERT_WINDOW leidimą, kurį parodžiau aukščiau? Taip atsitinka tik tuo atveju, jei APK įdiegiate ne iš „Google Play“ parduotuvės. Jei įdiegiate programą iš „Google Play“ parduotuvės, SYSTEM_ALERT_WINDOW leidimas suteikiamas automatiškai.
„Google“ paaukojo saugumą dėl patogumo
Ilgą laiką prieš Android Marshmallow SYSTEM_ALERT_WINDOW buvo laikoma "pavojingas“ leidimas. Naudojant „Android Marshmallow 6.0“, leidimas buvo pakeistas į parašas|sistema|programėlė Tai iš pradžių reikalavo, kad kūrėjai nukreiptų vartotoją į nustatymų ekraną, kad suteiktų leidimą. Tačiau naudojant „Android“ 6.0.1 versiją, SYSTEM_ALERT_WINDOW buvo pakeistas kad „Google Play“ parduotuvė gali automatiškai suteikti leidimąnepranešęs vartotojui. Kodėl „Google“ padarė šį pakeitimą, mums neaišku. Pati „Google“ nenurodė, kodėl padarė šį pakeitimą, o tai ypač keista, atsižvelgiant į SYSTEM_ALERT_WINDOW kalbą, kuri vis dar egzistuoja jų tinklalapiuose.
Gali būti, kad pakankamai kūrėjai buvo supykę pradiniais SYSTEM_ALERT_WINDOW pakeitimais, pagal kuriuos naudotojai turėjo rankiniu būdu suteikti leidimą, kurį „Google“ tyliai suteikė, ir tiesiog suteikė jį bet kuriai programai, kuri to paprašė. Tačiau tai darydama „Google“. dėl patogumo paaukojo saugumą. Yra priežastis, kodėl pati „Google“ leidimą laikė pavojingu ilgiausiai, nes taip yra. O Marshmallow leidimo išnaudojimo išnaudojimas yra pakankamas įrodymas, kad automatiškai suteikiant šį leidimą bet kuriai programai kyla pavojus.
Į šį pasikėsinimo išnaudojimą mūsų dėmesys buvo atkreiptas visai neseniai, nors jis egzistuoja jau daug mėnesių. Atlikdami vidinį XDA portalo komandos įrenginių testavimą, mes tai patvirtinome išnaudojimas veikia daugelyje šiuolaikinių įrenginių, kuriuose veikia „Android Marshmallow“.. Čia pateikiama trumpa informacija apie įrenginius, kuriuos išbandėme naudodami naujausias turimas kiekvieno atitinkamo įrenginio programinės įrangos versijas, ir tai, ar išnaudojimas palietimu veikia, ar ne. Įrenginiai, pažymėti „Pažeidžiami“, yra jautrūs išnaudojimui, o įrenginiai, pažymėti „Ne Pažeidžiami“ gali aptikti programą, kurioje rodoma perdanga, ir paprašyti prieš tai ją išjungti tęsiant.
- „Nextbit Robin“ – „Android 6.0.1“ su birželio mėnesio saugos pataisomis – Pažeidžiamas
- „Moto X Pure“ – „Android 6.0“ su gegužės mėnesio saugos pataisomis – Pažeidžiamas
- „Honor 8“ – „Android 6.0.1“ su liepos mėnesio saugos pataisomis – Pažeidžiamas
- Motorola G4 – Android 6.0.1 su gegužės mėnesio saugos pataisomis – Pažeidžiamas
- „OnePlus 2“ – „Android 6.0.1“ su birželio mėnesio saugos pataisomis – Nepažeidžiamas
- „Samsung Galaxy Note 7“ – „Android 6.0.1“ su liepos mėnesio saugos pataisomis – Nepažeidžiamas
- „Google Nexus 6“ – „Android 6.0.1“ su rugpjūčio mėnesio saugos pataisomis – Nepažeidžiamas
- „Google Nexus 6P“ – „Android 7.0“ su rugpjūčio mėnesio saugos pataisomis – Nepažeidžiamas
Iki šiol tai yra visi įrenginiai, kuriuos man pavyko priversti komandai išbandyti. Neradau jokios sąsajos tarp saugos pataisos versijos ir išnaudojimo. Kaip galite suprasti iš mūsų naujausia diskusija apie „Android“ saugos naujinimus, daugelis žmonių vis tiek nenaudoja naujausių saugos pataisų, todėl gali būti pažeidžiami dėl šio išnaudojimo ir kitų, aprašytų Android saugos biuletenis.
Judeti i prieki
Raginame patys išbandyti šį išnaudojimą savo įrenginyje, kad pamatytumėte, ar nesate pažeidžiami. Sudarėme APK iš pirmiau susietas šaltinio kodas (taip pat galite tai padaryti patys) ir įkėlėte juos į AndroidFileHost. Norėdami išbandyti išnaudojimą, turite įdiegti abu pagrindinė sriegimo programa taip pat jos pagalbininko paslauga. Tada tiesiog paleiskite pagrindinę programą ir spustelėkite mygtuką „testuoti“. Jei teksto laukelis plūduriuoja leidimo dialogo lango viršuje ir spustelėjus „leisti“, parodomas įrenginio kontaktų sąrašas, vadinasi, įrenginys gali būti pažeidžiamas. Nesijaudinkite, kad slankusis teksto laukelis visiškai neuždengia leidimo dialogo lango, ši koncepcijos įrodymo programa nėra skirtas puikiai parodyti, kaip tvarkingai užgrobti leidimų dialogo langą, bet veikiau įrodyti, kad taip yra galima.
Tikimės, kad bus pateikta pataisa, pataisanti šį išnaudojimą visuose „Marshmallow“ įrenginiuose, o originalios įrangos gamintojai atnaujins visus savo įrenginius į naujausią saugos pataisą. Kadangi realybė yra tokia, kad prireiks daug mėnesių, kol dauguma įkeistų įrenginių gaus „Nugat“, taigi tai vienintelis būdas daugeliui vartotojai, norėdami apsisaugoti nuo žalos, yra įdiegti naujausias saugos pataisas arba gauti monitoriaus programos leidimus patys. Tačiau „Google“ nusprendus automatiškai suteikti potencialiai pavojingą SYSTEM_ALERT_WINDOW leidimą, daugelis vartotojai nesąmoningai naudoja programas, kurios gali potencialiai užgrobti jų telefonus, kad suteiktų vis pavojingesnių leidimai.