Niektoré zariadenia Marshmallow sú náchylné na tapjacking, keď aplikácia prekryje text v hornej časti dialógového okna povolenia, aby oklamala používateľa.
Zatiaľ čo mnohí z nás slintajú nad novovydaným Androidom Nougat pre zariadenia Nexus, drvivá väčšina používateľov stále používa Android Marshmallow. Exploatácia, ktorej existencia je zdokumentovaná od r minimálne v polovici roka 2015 stále ovplyvňuje mnoho moderných zariadení so systémom Android.
Škodlivé aplikácie sú schopné tapjack do svojich akcií udeliť im povolenie, ktoré ste nikdy výslovne neudelili. Tu je návod, ako exploit funguje.
Návrat tapjackingu
Predstavte si, že si otvoríte Instagram a pokúsite sa zdieľať fotku, ktorú ste nedávno odfotili na dovolenke. Keď vyberiete možnosť prehľadávať galériu a nájsť obrázok, Instagram vás požiada, aby ste mu udelili povolenie na prístup k vášmu úložisku. Keď však klepnete na „áno“, zobrazí sa chybové hlásenie.
Nemôžete udeliť povolenie na ukladanie pre Instagram, pretože máte povolené aktívne prekrytie obrazovky - in toto puzdro, jedna z mnohých aplikácií, ktoré zafarbia vašu obrazovku, aby ste mohli používať telefón v noci bez oslepovania seba. Toto je prípad systému povolení Android
pracuje podľa plánu: ak chcete aplikácii udeliť citlivé povolenie, musíte zakázať všetky prekrytia obrazovky, ktoré máte na svojom zariadení.Aplikácie, ktoré majú schopnosť kresliť cez vašu obrazovku, by vás mohli oklamať, aby ste jej poskytli citlivé údaje. Napríklad prekrytie obrazovky môže umiestniť falošné heslo na hornú časť skutočnej prihlasovacej obrazovky, aby bolo možné zhromaždiť vaše heslá. Takýto exploit sa nazýva 'tapjacking' a v priebehu rokov sa objavil a bol opravený na rôznych verziách systému Android, s jeden z najhorších príkladov trvajúci až do Androidu 4.0.3. Ale nedávno sa exploit vrátil s Model povolení pri spustení systému Android Marshmallow.
Vývojár podľa mena Iwo Banaś vytvoril an aplikácie demonštrovanie exploitu. Spôsob, akým to funguje, je pomerne jednoduchý – keď aplikácia zobrazí dialógové okno s povolením, škodlivá aplikácia nainštalovaný zobrazí systémové prekrytie, ktoré zakryje textový blok dialógového okna s ľubovoľným textom chce. Nevedomý používateľ, ktorý klikne na „povoliť“ v dialógovom okne povolenia, bude oklamaný, aby udelil povolenie, o ktoré bol požiadaný, ale pre ktoré bola žiadosť pred zrakom používateľa skrytá. Takýto exploit úplne porušuje účel systému povolení Android Marshmallow od zavedenia nový model mal zabezpečiť, že používatelia budú mať iba povolenia, s ktorými výslovne súhlasia.
Teraz už viem, na čo myslíš. Ak by Android rozpoznal prekrytie systému a zabránil mi udeliť povolenia na ukladanie na Instagrame, nezabránilo by to tomuto zneužitiu? Odpoveď je nie, pri mojom testovaní sa zdá, že na niektorých zariadeniach zobrazenie textového prekrytia nad dialógovým oknom povolenia nespustí bezpečnostný mechanizmus. Vývojár aplikácie proof-of-concept tapjacking uvádza, že exploit je efektívny, pretože je spolieha na to, že používateľ si nainštaluje sekundárnu škodlivú aplikáciu, ktorá sa zameriava na úroveň API 22 a nižšiu (pred Marshmallow). Je to spôsobené tým, že pred Androidom Marshmallow sú všetkým aplikáciám udelené povolenia počas inštalácie.
Dobre, takže ak používate Marshmallow, všetko, čo musíte urobiť, je vyhnúť sa inštalácii aplikácií, ktorým nedôverujete a ktoré žiadajú povolenie na kreslenie prekrytia, však? Ak by model povolení systému Android fungoval tak, ako bol pôvodne stanovený, mali by ste pravdu. Ale od objavenia tohto exploitu, dokonca aj aplikácie zacielené na úroveň API 23 (Marshmallow), ktoré požadujú povolenie na prekrytie, predstavujú potenciálne riziko.
Medzera v modeli povolení?
Ak ste jedným z mnohých miliónov ľudí, ktorí používajú Facebook Messenger na chatovanie so svojimi priateľmi, potom ste narazili na jednu z najlepších funkcií systému Android – schopnosť aplikácií kresliť na seba obrazovky. Aké skvelé je, že môžete mať bublinu so svojím obľúbeným skupinovým chatom na Facebooku a sledovať používateľa nad ľubovoľnou aplikáciou, ktorú otvorí? Hoci Messenger od Facebooku priniesol myšlienku „plávajúcich aplikácií“ do hlavného prúdu, tento koncept už nejaký čas existuje v systéme Android. Aplikácie už nejaký čas dokážu vytvárať prekrytia nad vašimi aplikáciami vďaka existencii TYPE_SYSTEM_OVERLAY v aplikácii WindowManager systému Android.
Pred Android Marshmallow by aplikácie museli požiadať o povolenie tzv SYSTEM_ALERT_WINDOW počas inštalácie pred tým, ako by sa mohli zobraziť prekrytia v hornej časti obrazovky. To sa však zmenilo zavedením granulárneho modelu povolení za behu verzie 6.0. Používatelia by teraz museli udeľovať povolenia aplikáciám pri skutočnom spustení aplikácie, čo by, dúfajme, podporilo priemer používateľov na ochranu svojich vlastných súkromných údajov pred aplikáciami, ktoré podozrivo žiadajú zdanlivo funkčne nesúvisiace povolenia.
SYSTEM_ALERT_WINDOW však nie je ako ostatné povolenia. Vývojári nemôžu zobraziť dialógové okno na programovú žiadosť o udelenie povolenia koncovým používateľom, ako je to pri väčšine ostatných povolení v akejkoľvek aplikácii zacielenej na Marshmallow. Namiesto toho musíte manuálne prejsť na obrazovku nastavení a povoliť povolenie sami. Niektoré aplikácie, ako napríklad Facebook Messenger, vám samozrejme pomôžu s týmto procesom.
Google to vyžaduje od vývojárov, pretože považujú povolenie za „obzvlášť citlivé."
Špeciálne povolenia
Existuje niekoľko povolení, ktoré sa nesprávajú ako normálne a nebezpečné povolenia. SYSTEM_ALERT_WINDOW a WRITE_SETTINGS sú obzvlášť citlivé, takže väčšina aplikácií by ich nemala používať. Ak aplikácia potrebuje jedno z týchto povolení, musí toto povolenie deklarovať v manifeste a odoslať zámer so žiadosťou o autorizáciu používateľa. Systém reaguje na zámer zobrazením obrazovky s podrobným riadením používateľovi.
Vzhľadom na to, čo vieme o tapjackingu vyššie, to dáva zmysel. Ale tu ide o to. Google nedodržiava ani svoje vlastné pravidlá. Snímky obrazovky aplikácie Facebook Messenger, ktoré vás prevedú procesom udelenia povolenia SYSTEM_ALERT_WINDOW, ktoré som vám ukázal vyššie? Stáva sa to iba vtedy, ak nainštalujete súbor APK mimo obchodu Google Play. Ak si nainštalujete aplikáciu z Obchodu Google Play, Povolenie SYSTEM_ALERT_WINDOW sa udeľuje automaticky.
Google obetoval bezpečnosť pre pohodlie
Pred Androidom Marshmallow sa SYSTEM_ALERT_WINDOW dlho považovalo za „nebezpečné"povolenie. V systéme Android Marshmallow 6.0 sa povolenie zmenilo na podpis|systém|príp čo je to, čo pôvodne vyžadovalo, aby vývojári priviedli používateľa na obrazovku nastavení, aby udelili povolenie. Ale s Androidom verzie 6.0.1, SYSTEM_ALERT_WINDOW bolo upravené tak, že obchod Google Play mohli udeliť povolenie automatickybez upozornenia používateľa. Prečo spoločnosť Google urobila túto zmenu, nie je nám jasné. Samotný Google nevyšiel a neuviedol, prečo urobil túto zmenu, čo je obzvlášť zvláštne vzhľadom na jazyk o SYSTEM_ALERT_WINDOW, ktorý stále existuje na ich webových stránkach.
Je to možné dosť vývojárov sa hnevalo počiatočnými zmenami v SYSTEM_ALERT_WINDOW, ktoré od používateľov vyžadovali, aby manuálne udelili povolenie, ktoré spoločnosť Google v tichosti vzdala a udelila ho akejkoľvek aplikácii, ktorá o to požiadala. Ale pri tom má Google obetovala bezpečnosť pre pohodlie. Existuje dôvod, prečo samotný Google považoval povolenie za nebezpečné najdlhšie, pretože je. A existencia zneužitia povolenia Marshmallow tapjacking je dostatočným dôkazom toho, aké nebezpečenstvá sú spojené s automatickým udeľovaním tohto povolenia akejkoľvek aplikácii.
Na toto zneužitie tapjackingu sme sa dostali len nedávno, hoci existuje už mnoho mesiacov. V našom internom testovaní zariadení v tíme XDA Portal sme to potvrdili exploit funguje na mnohých moderných zariadeniach so systémom Android Marshmallow. Tu je rýchly prehľad zariadení, ktoré sme testovali na najnovších dostupných verziách softvéru pre každé príslušné zariadenie, a o tom, či zneužívanie tapjackingu funguje alebo nie. Zariadenia označené „Vulnerable“ sú náchylné na zneužitie tapjackingu, zatiaľ čo zariadenia označené „Not“ Zraniteľné“ dokážu rozpoznať aplikáciu zobrazujúcu prekrytie a požiadať, aby ste ju predtým zakázali pokračovanie.
- Nextbit Robin – Android 6.0.1 s júnovými bezpečnostnými záplatami – Zraniteľný
- Moto X Pure – Android 6.0 s májovými bezpečnostnými záplatami – Zraniteľný
- Honor 8 – Android 6.0.1 s júlovými bezpečnostnými záplatami – Zraniteľný
- Motorola G4 – Android 6.0.1 s májovými bezpečnostnými záplatami – Zraniteľný
- OnePlus 2 – Android 6.0.1 s júnovými bezpečnostnými záplatami – Nie je zraniteľný
- Samsung Galaxy Note 7 – Android 6.0.1 s júlovými bezpečnostnými záplatami – Nie je zraniteľný
- Google Nexus 6 – Android 6.0.1 s augustovými bezpečnostnými záplatami – Nie je zraniteľný
- Google Nexus 6P – Android 7.0 s augustovými bezpečnostnými záplatami – Nie je zraniteľný
Zatiaľ sú to všetky zariadenia, ktoré sa mi podarilo dať tímu otestovať. Nenašiel som žiadnu koreláciu medzi verziou bezpečnostnej opravy a exploitom. Ako môžete povedať z nášho najnovšia diskusia o bezpečnostných aktualizáciách systému Android, veľa ľudí aj tak nepoužíva najnovšie bezpečnostné záplaty, a preto sú pravdepodobne zraniteľní voči tomuto zneužitiu a iným, ktoré sú uvedené na Bulletin zabezpečenia systému Android.
Hýbať sa vpred
Vyzývame vás, aby ste si tento exploit otestovali na svojom zariadení, aby ste zistili, či ste zraniteľní. Zostavili sme súbory APK z zdrojový kód prepojený vyššie (môžete to urobiť aj sami) a nahrali ste ich na AndroidFileHost. Ak chcete otestovať exploit, musíte nainštalovať oba hlavná aplikácia tapjacking ako aj jeho pomocná služba. Potom jednoducho spustite hlavnú aplikáciu a kliknite na tlačidlo „test“. Ak sa v hornej časti dialógového okna s povolením vznáša textové pole a po kliknutí na tlačidlo „povoliť“ sa zobrazí zoznam kontaktov vášho zariadenia, potom je vaše zariadenie náchylné na odcudzenie. Nebojte sa, že plávajúce textové pole úplne nepokrýva dialógové okno povolenia, táto aplikácia na overenie koncepcie nie je Cieľom je dokonale demonštrovať, ako úhľadne uniesť dialógové okno povolení, ale skôr dokázať, že to tak naozaj je možné.
Dúfame, že bude zavedená oprava, ktorá opraví tento exploit na všetkých zariadeniach Marshmallow, a že výrobcovia OEM aktualizujú všetky svoje zariadenia na najnovšiu bezpečnostnú opravu. Pretože realita je taká, že väčšine sľúbených zariadení bude trvať mnoho mesiacov, kým získajú Nougat, takže pre väčšinu Aby používatelia zostali mimo ohrozenia, je buď nainštalovať najnovšie bezpečnostné záplaty, alebo získať povolenia monitorovacej aplikácie sami. Ale s rozhodnutím spoločnosti Google automaticky udeliť potenciálne nebezpečné povolenie SYSTEM_ALERT_WINDOW mnohým Používatelia nevedomky spúšťajú aplikácie, ktoré by mohli potenciálne uniesť ich telefóny, aby boli stále nebezpečnejšie povolenia.