Některá zařízení Marshmallow jsou náchylná k tapjackingu, kdy aplikace překryje text v horní části dialogového okna oprávnění, aby oklamala uživatele.
Zatímco mnohým z nás se sbíhají sliny nad nově vydaným Androidem Nougat pro zařízení Nexus, drtivá většina uživatelů stále používá Android Marshmallow. Exploat, jehož existence je zdokumentována od r minimálně v polovině roku 2015 stále ovlivňuje mnoho moderních zařízení Android.
Škodlivé aplikace jsou schopny tapjack do svých akcí udělujete jim povolení, které jste nikdy výslovně neudělili. Zde je návod, jak exploit funguje.
Návrat tapjackingu
Představte si, že si otevřete Instagram a pokusíte se sdílet fotku, kterou jste nedávno pořídili, když jste byli na dovolené. Když se rozhodnete procházet galerii pro obrázek, Instagram vás požádá, abyste mu udělili oprávnění k přístupu k vašemu úložišti. Ale když klepnete na „ano“, zobrazí se chybová zpráva.
Nemůžete udělit oprávnění k ukládání pro Instagram, protože máte povoleno aktivní překrytí obrazovky - in toto pouzdro, jedna z mnoha aplikací, které zabarví vaši obrazovku, abyste mohli používat telefon v noci bez oslnění vy sám. To je případ systému oprávnění Android
Aplikace, které mají schopnost kreslit přes vaši obrazovku, by vás mohly oklamat, abyste do ní poskytli citlivá data. Například překryvná obrazovka může umístit falešné heslo na horní část skutečné přihlašovací obrazovky, aby bylo možné shromáždit vaše hesla. Takový exploit se nazývá 'tapjacking' a během let se objevil a opravoval na různých verzích Androidu jeden z nejhorších příkladů trvající až do Androidu 4.0.3. Ale nedávno se exploit vrátil s Model povolení za běhu systému Android Marshmallow.
Vývojář jménem Iwo Banaś vytvořil aplikace demonstrování exploitu. Způsob, jakým to funguje, je poměrně jednoduchý – když aplikace zobrazí dialogové okno s oprávněním, škodlivá aplikace nainstalovaný zobrazí systémový překryv, který zakryje textový blok dialogového okna povolení jakýmkoli textem chce. Nevědomý uživatel, který klikne na „povolit“ v dialogovém okně oprávnění, bude oklamán, aby udělil oprávnění, o které byl požádán – ale pro které byl požadavek skryt před zrakem uživatele. Takový exploit zcela porušuje účel systému oprávnění Android Marshmallow od jeho zavedení nový model měl zajistit, že uživatelé budou mít pouze oprávnění, se kterými výslovně souhlasí.
Teď už vím, na co myslíš. Pokud by Android zjistil překrytí systému a zabránil mi udělit oprávnění k úložišti Instagramu, nezabránilo by to tomu, aby k tomuto zneužití došlo? Odpověď je ne, při mém testování se zdá, že na určitých zařízeních zobrazení překryvného textu nad dialogem oprávnění nespustí bezpečnostní mechanismus. Vývojář aplikace proof-of-concept tapjacking uvádí, že exploit je efektivní, protože je spoléhá na to, že uživatel nainstaluje sekundární škodlivou aplikaci, která cílí na úroveň API 22 a nižší (před Marshmallow). To je způsobeno tím, že před Android Marshmallow jsou všem aplikacím udělena oprávnění během instalace.
Dobře, takže pokud jste na Marshmallow, vše, co byste měli udělat, je vyhnout se instalaci aplikací, kterým nedůvěřujete a které požadují povolení k nakreslení překryvné vrstvy, že? Pokud by model oprávnění Androidu fungoval tak, jak byl původně navržen, měli byste pravdu. Ale od objevení tohoto exploitu, dokonce i aplikace cílené na úroveň API 23 (Marshmallow), které požadují povolení k překrytí, představují potenciální riziko.
Mezera v modelu povolení?
Pokud jste jedním z mnoha milionů lidí, kteří používají Facebook Messenger pro chatování se svými přáteli, pak jste narazili na jednu z nejlepších funkcí Androidu – schopnost aplikací kreslit na sebe obrazovky. Jak skvělé je, že můžete mít bublinu se svým oblíbeným skupinovým chatem na Facebooku a sledovat uživatele nad jakoukoli aplikací, kterou otevře? Ačkoli Facebook Messenger přinesl myšlenku „plovoucích aplikací“ do hlavního proudu, tento koncept již nějakou dobu existuje v Androidu. Aplikace byly schopny vytvářet překryvné vrstvy nad vašimi aplikacemi již nějakou dobu díky existenci TYPE_SYSTEM_OVERLAY ve WindowManageru systému Android.
Před Android Marshmallow by aplikace musely požádat o povolení tzv SYSTEM_ALERT_WINDOW během instalace, než by se mohly zobrazit překryvné vrstvy v horní části obrazovky. To se však změnilo zavedením modelu granulárních oprávnění za běhu 6.0. Uživatelé by nyní museli udělovat oprávnění aplikacím při skutečném spuštění aplikace, což by doufejme podnítilo průměr uživatele do ochrany svých vlastních soukromých dat před aplikacemi, které podezřele požadují zdánlivě funkčně nesouvisející oprávnění.
SYSTEM_ALERT_WINDOW však není jako ostatní oprávnění. Vývojáři nemohou zobrazit dialogové okno pro programovou žádost o udělení oprávnění koncovým uživatelem, jako u většiny ostatních oprávnění u jakékoli aplikace cílené na Marshmallow. Místo toho musíte ručně přejít na obrazovku nastavení a povolit oprávnění sami. S tímto procesem vám samozřejmě pomohou některé aplikace, jako je Facebook Messenger.
Google to vyžaduje od vývojářů, protože usoudili, že povolení je „zvláště citlivé."
Zvláštní oprávnění
Existuje několik oprávnění, která se nechovají jako normální a nebezpečná oprávnění. SYSTEM_ALERT_WINDOW a WRITE_SETTINGS jsou obzvláště citlivé, takže by je většina aplikací neměla používat. Pokud aplikace potřebuje jedno z těchto oprávnění, musí oprávnění deklarovat v manifestu a odeslat záměr požadující autorizaci uživatele. Systém reaguje na záměr zobrazením obrazovky podrobné správy uživateli.
Vzhledem k tomu, co o tapjackingu víme výše, to dává smysl. Ale jde o to. Google nedodržuje ani svá vlastní pravidla. Snímky obrazovky aplikace Facebook Messenger, které vás provedou procesem udělení oprávnění SYSTEM_ALERT_WINDOW, které jsem vám ukázal výše? To se stane pouze v případě, že nainstalujete soubor APK mimo obchod Google Play. Pokud nainstalujete aplikaci z obchodu Google Play, Oprávnění SYSTEM_ALERT_WINDOW je uděleno automaticky.
Google obětoval bezpečnost pro pohodlí
Dlouho před Androidem Marshmallow byl SYSTEM_ALERT_WINDOW považován za „nebezpečný"povolení. S Androidem Marshmallow 6.0 bylo oprávnění změněno na podpis|systém|appop což je to, co zpočátku vyžadovalo, aby vývojáři vedli uživatele na obrazovku nastavení, aby udělili oprávnění. Ale s Androidem verze 6.0.1, SYSTEM_ALERT_WINDOW bylo změněno takže obchod Google Play mohl udělit povolení automatickybez upozornění uživatele. Proč Google tuto změnu provedl, nám není jasné. Google sám nevyšel a neuvedl, proč provedl tuto změnu, což je zvláště zvláštní vzhledem k jazyku o SYSTEM_ALERT_WINDOW, který stále existuje na jejich webových stránkách.
Je možné že dost vývojářů bylo naštvaných počátečními změnami v SYSTEM_ALERT_WINDOW, které vyžadovaly, aby uživatelé ručně udělili oprávnění, které Google v tichosti ustoupil, a udělil je pouze jakékoli aplikaci, která o to požádala. Ale při tom má Google obětoval bezpečnost pro pohodlí. Existuje důvod, proč sami Google považovali povolení za nebezpečné nejdéle, protože je. A existence zneužití oprávnění Marshmallow tapjacking je dostatečným důkazem toho, že automatické udělování tohoto oprávnění jakékoli aplikaci přináší nebezpečí.
Na toto zneužití tapjackingu jsme byli upozorněni teprve nedávno, ačkoli existuje již mnoho měsíců. V našem interním testování zařízení v týmu XDA Portal jsme to potvrdili exploit funguje na mnoha moderních zařízeních se systémem Android Marshmallow. Zde je rychlý přehled zařízení, která jsme testovali na nejnovějších dostupných verzích softwaru pro každé příslušné zařízení, a zda funguje zneužití tapjackingu. Zařízení označená jako „Vulnerable“ jsou náchylná k zneužití tapjackingu, zatímco zařízení označená „Not“ Zranitelné“ jsou schopny detekovat aplikaci zobrazující překryvnou vrstvu a požádat o její předchozí deaktivaci pokračování.
- Nextbit Robin – Android 6.0.1 s červnovými bezpečnostními záplatami – Zranitelný
- Moto X Pure – Android 6.0 s květnovými bezpečnostními záplatami – Zranitelný
- Honor 8 – Android 6.0.1 s červencovými bezpečnostními záplatami – Zranitelný
- Motorola G4 – Android 6.0.1 s květnovými bezpečnostními záplatami – Zranitelný
- OnePlus 2 – Android 6.0.1 s červnovými bezpečnostními záplatami – Není zranitelný
- Samsung Galaxy Note 7 – Android 6.0.1 s červencovými bezpečnostními záplatami – Není zranitelný
- Google Nexus 6 – Android 6.0.1 se srpnovými bezpečnostními záplatami – Není zranitelný
- Google Nexus 6P – Android 7.0 se srpnovými bezpečnostními záplatami – Není zranitelný
To jsou zatím všechna zařízení, která se mi podařilo přimět tým k testování. Nemohl jsem najít žádnou korelaci mezi verzí bezpečnostní opravy a exploitem. Jak můžete zjistit z našeho nejnovější diskuse o aktualizacích zabezpečení systému Android, mnoho lidí stejně nepoužívá nejnovější bezpečnostní záplaty, a jsou tak pravděpodobně zranitelní vůči tomuto exploitu a dalším, které jsou uvedeny na Bulletin zabezpečení systému Android.
Pohyb vpřed
Vyzýváme vás, abyste si tento exploit otestovali na svém zařízení a zjistili, zda jste zranitelní. Zkompilovali jsme soubory APK z zdrojový kód odkazovaný výše (můžete to udělat i sami) a nahráli jste je na AndroidFileHost. Abyste mohli exploit otestovat, musíte nainstalovat oba hlavní aplikace tapjacking stejně jako jeho pomocná služba. Poté jednoduše spusťte hlavní aplikaci a klikněte na tlačítko „test“. Pokud se nad dialogem povolení vznáší textové pole a po kliknutí na „povolit“ se zobrazí seznam kontaktů vašeho zařízení, pak je vaše zařízení zranitelné vůči tapjackingu. Nebojte se, že plovoucí textové pole zcela nepokrývá dialogové okno oprávnění, tato aplikace pro ověření konceptu není Cílem je dokonale demonstrovat, jak úhledně unést dialogové okno oprávnění, ale spíše dokázat, že tomu tak skutečně je možný.
Doufáme, že bude zavedena oprava, která opraví tento exploit na všech zařízeních Marshmallow, a že výrobci OEM aktualizují všechna svá zařízení na nejnovější bezpečnostní opravu. Protože realita je taková, že bude trvat mnoho měsíců, než většina slíbených zařízení získá Nougat, takže pro většinu Aby se uživatelé drželi mimo dosah, je buď nainstalovat nejnovější bezpečnostní záplaty, nebo získat oprávnění monitorovací aplikace oni sami. Ale s rozhodnutím společnosti Google automaticky udělit potenciálně nebezpečné oprávnění SYSTEM_ALERT_WINDOW mnoho uživatelé nevědomky spouštějí aplikace, které by mohly potenciálně unést jejich telefony a poskytovat stále nebezpečnější oprávnění.