Fortnite Installer by mohl být zneužit k tiché instalaci aplikací na telefony Galaxy

Instalační aplikace Fortnite Mobile pro Android byla zneužitelná ve svém prvním vydání. Mohlo by být zneužito k tiché instalaci jakékoli aplikace na telefony Samsung Galaxy.

Spuštění Fortnite Mobile na Androidu nebylo příliš skvělé, zvláště od té doby mnoho podporovaných zařízení opravdu se snaží hrát hru s přijatelnou snímkovou frekvencí. Hra byla spuštěna jako a Samsung Galaxy exkluzivně pouze na 3 dny. Fortnite Installer byl poprvé k dispozici na Aplikace Samsung Galaxy předtím, než Epic Games umožnilo hráčům mimo Samsung stáhnout a nainstalovat celou hru z instalačního programu Fortnite získaného na webových stránkách společnosti Epic. Krátce poté, co byl k dispozici instalační program Fortnite, společnost Epic Games v tichosti posunula aktualizaci instalačního programu. Teď víme proč: Opravili a Man-in-the-Disk zneužití, které umožnilo škodlivé aplikaci tiše nainstalovat jakoukoli aplikaci, kterou chtěli na chytrých telefonech Samsung Galaxy. Protože došlo k určitým nejasnostem ohledně toho, jak tato chyba funguje, pokusíme se věci objasnit. Nejprve si musíme vysvětlit základy instalace aplikací na Androidu.


Průběh instalace aplikace na chytrých telefonech Android

Tiché instalace ze zdrojů první strany

Chcete-li v tichosti nainstalovat soubor APK na Android bez vyzvání uživatele k povolení, musíte mít aplikaci na úrovni systému s INSTALL_PACKAGES povolení uděleno. Příklady aplikací s tímto oprávněním zahrnují Obchod Google Play na většině zařízení Android. Oprávnění INSTALL_PACKAGES mohou mít udělené také obchody s aplikacemi první strany na zařízeních od společností Samsung, Huawei a dalších výrobců zařízení. Pokud si chcete nainstalovat libovolnou aplikaci z Obchodu Google Play, zvládne stažení a automaticky se nainstaluje aplikaci pro vás bez dalšího zásahu po stisknutí tlačítka „Instalovat“. (Dokonce i Obchod Google Play automaticky uděluje určitá runtime oprávnění jako je ten pro překryvy, zatímco aplikace nainstalované mimo Obchod Play musí uživatele požádat o udělení těchto oprávnění.)

Pokud vás zajímá, zda má aplikace ve vašem zařízení oprávnění INSTALL_PACKAGES, můžete to zjistit pomocí příkazu ADB.

adb shell
dumpsys packagepackage.name.here | grep "INSTALL_PACKAGES"

Například název balíčku v Obchodě Google Play je „com.android.vending". Další aplikací s tímto oprávněním je Shell s názvem balíčku com.android.shell. Pro ty z vás, kteří používají bezkořenový substrát prostřednictvím zásuvného modulu Andromeda v systému Android Oreo skript Andromeda spuštěný z vašeho počítače udržuje proces shellu v chodu, takže jej Substratum může použít k instalaci balíčků (překryvů motivů) a poté použít Příkazy OverlayManager pro aktivaci překryvných vrstev.

Boční načítání aplikací ze zdrojů třetích stran

Pokud se pokusíte stáhnout a nainstalovat aplikaci mimo obchod s aplikacemi první strany, budete muset nejprve povolit neznámé zdroje instalace. To umožňuje Služba Správce balíčků v rámci Androidu (který má oprávnění INSTALL_PACKAGES) víte, že berete na vědomí rizika vedlejšího načítání aplikací ze zdrojů třetích stran. Na zařízeních staršího než Android Oreo je v nastavení zabezpečení jeden přepínač, který umožňuje instalaci z neznámých zdrojů. V systému Android Oreo a novějších verzích, aplikace vyžadující instalaci souboru APK musí deklarovat REQUEST_INSTALL_PACKAGES a uživatel musí tuto aplikaci uvést na seznam povolených, aby mohl žádat o instalaci aplikace prostřednictvím služby Správce balíčků. Vzhledem k tomu, že REQUEST_INSTALL_PACKAGES je oprávnění „aplikace“, jedná se o jedno z oprávnění, které lze ovládat ze správce oprávnění Nastavení nebo prostřednictvím cmd appops příkaz shell.

Jakmile je instalace z neznámých zdrojů povolena buď globálně, nebo specificky pro žádající aplikaci, může uživatel aplikaci načíst z boku. Správce balíčků však neumožňuje instalaci aplikace bezobslužně. Místo toho se uživatele zeptá, zda chce aplikaci nainstalovat, a uvede všechna citlivá oprávnění, která požaduje při instalaci udělit. Pokud uživatel přijme, aplikace se nainstaluje s požadovanými oprávněními, která nejsou runtime. OEM mohou také přizpůsobit Správce balíčků: Například Správce balíčků v čínské verzi Huawei EMUI 5 má funkci pro skenování APK, aby se rozhodlo, zda je bezpečné, a kontroluje, jaká jsou oprávnění uděleno před instalace. Pozoroval jsem to na Honor Note 8 s EMUI 5 dovezeným z Číny, i když jsem si jistý, že další čínská zařízení Huawei a Honor mají tuto funkci také ve svých správcích balíčků.

V každém případě to asi shrnuje rozdíl mezi instalací aplikace ze schváleného zdroje první strany a zdroje třetí strany. Pokud se pokusíte nainstalovat aplikaci z Obchodu Play nebo ekvivalentního obchodu s aplikacemi pomocí INSTALL_PACKAGES Po spuštění provede instalaci bez dalšího zásahu uživatele stahování. Pokud si však stáhnete soubor APK z XDA Labs, APKMirror nebo jiných zdrojů třetích stran, standardní instalační program balíčku se o instalaci postará a vyzve uživatele k instalaci tohoto balíčku. Kde tedy přichází Fortnite Installer a proč je to všechno relevantní?

Chyba v procesu instalace Fortnite

Dnes dříve, Google odhalil zranitelnost objevili s první verzí Fortnite Installer. Zranitelnost byla prokázána na Exynos Samsung Galaxy S8+ (dream2lte), ale také ovlivnila všechna ostatní zařízení Samsung Experience včetně Samsung Galaxy Note 9 a Samsung Galaxy Tab S4. Zranitelnost umožňuje již nainstalovanou škodlivou aplikaci abyste využili způsob, jakým se Fortnite Installer pokouší nainstalovat Fortnite poprvé na zařízeních Samsung Galaxy. Použitím soukromého API v Samsung Galaxy Apps obchází Fortnite Installer nutnost vyzvat uživatele prostřednictvím standardního instalačního programu balíčku k instalaci Fortnite. Je to proto, že Galaxy Apps má oprávnění, které potřebuje k tiché instalaci. Na tomto procesu tiché instalace by nebylo nic špatného, ​​pokud by aplikace, která se tiše instaluje, je skutečný Fortnite. Ale kvůli tomu, kam Fortnite Installer uložil stažený soubor APK pro hru Fortnite, byl snadno zneužitelný.

AndroidManifest od Samsung Galaxy Apps ukazuje, že Galaxy Apps má oprávnění instalovat další aplikace samostatně, čímž obchází standardní instalační balíček.

Podle zprávy na Issue Tracker by si Fortnite Installer stáhl Fortnite Mobile APK do /sdcard/Android/data/com.epicgames.portal/files/downloads/. Toto je považováno za „externí úložiště“ v systému Android, protože /sdcard je symbolický odkaz /data/media/CURRENT_USER a /sdcard byl název používaný v raných dobách Androidu, kdy byla data aplikací uloženy na fyzických SD kartách. V dnešní době jsou data aplikací obvykle uložena v adresářích specifických pro aplikaci v /data/data/ a každá aplikace má přístup pouze k souborům ve svém vlastním adresáři /data/data. Pokud by tedy instalační program Fortnite uložil stažený soubor Fortnite APK do svého vlastního adresáře /data/data/, nebylo by možné pro žádnou aplikaci bez oprávnění ke čtení (tj. bez přístupu root), abyste věděli, co se děje v tomto adresáři.

Nicméně, protože Fortnite Installer uložil stažený soubor APK do externího úložiště, mohl být sledován a přepsán pomocí jakákoli aplikace s oprávněním ke čtení z externího úložiště. Normálně aplikace zapisují na /data/media, „virtuální SD kartu“, když ukládají soubory, ke kterým má uživatel přistupovat přes MTP nebo jiné aplikace. Aby aplikace mohla číst nebo zapisovat do /data/media, musí mít READ_EXTERNAL_STORAGE a Oprávnění WRITE_EXTERNAL_STORAGE (oba jsou ve stejné skupině oprávnění a jsou tedy uděleno společně). Před Androidem 4.4 KitKat většina aplikací požadovala tato oprávnění při instalaci, protože jinak by tomu tak nebylo schopni číst nebo zapisovat do souborů v určeném adresáři externího úložiště jejich balíčku /data/media/.../Android/. Se zavedením FUSE k emulaci oprávnění adresáře ve stylu FAT-on-sdcard v systému Android 4.4 KitKat již aplikace nepotřebují žádná oprávnění pro přístup k souborům v jejich určeném adresáři na externím úložišti. Přístup k souborům v jakémkoli jiném adresáři by stále vyžadoval oprávnění k externímu úložišti, což je to, co může škodlivá aplikace udělat, aby unesla proces instalace Fortnite.

Jak je ukázáno ve videu níže, škodlivá aplikace s oprávněním READ_EXTERNAL_STORAGE monitoruje adresář pro stahování Fortnite Installer v externím úložišti. Když zjistí, že stahování je dokončeno a otisk prstu je ověřen, nahradí jej stažený balíček Fortnite s vlastním škodlivým balíčkem díky WRITE_EXTERNAL_STORAGE povolení. Nicméně kvůli způsobu, jakým Samsung Galaxy Apps ověřuje Fortnite APK před instalací (...jen kontroluje, zda je název balíčku "com.epicgames.fortnite"), je možné mít Galaxy Aplikace tiše nainstalovat škodlivý balíček na pozadí bez zásahu uživatele nebo upozornění– pokud se škodlivý balíček jmenoval „com.epicgames.fortnite“. Ještě horší je, že pokud by tento škodlivý balíček cílil na úroveň SDK 22 nebo nižší (Android 5.1 Lollipop a starší), automaticky udělí všechna oprávnění definovaná v jeho manifestu, protože runtime oprávnění jsou povinná pouze pro aplikace, které cílí na úroveň SDK 23 a vyšší (Android 6.0 Marshmallow a později).

Co by se ale stalo na zařízeních jiných značek než Samsung? No, protože aplikace Samsung Galaxy Apps není nainstalována na zařízeních jiných značek, než je Samsung, škodlivý APK nebudou tiše nainstalovány na pozadí. Fortnite Installer je aplikace třetí strany, a proto musí nejprve vyzvat uživatele k povolení instalaci z neznámých zdrojů a poté odešlete instalačnímu programu balíček požadavek na instalaci falešného Fortnite APK. Poté by záleželo na uživateli, aby klepl na „Instalovat“, když se ho zeptá, zda chce aplikaci nainstalovat nebo ne. To je problematické bez ohledu na to, že telefonům jiných značek než Samsung nehrozí, že by se na pozadí tiše nainstalovala škodlivá aplikace. Průměrný uživatel by nebyl o nic moudřejší, kdyby mu byl k instalaci předložen škodlivý APK vytvořený s „Fortnite“ v názvu a ikonou aplikace Fortnite.

Přesto existuje jasný rozdíl mezi využíváním této chyby na chytrých telefonech Samsung Galaxy a na smartphonech jiných značek. První z nich je útok typu Man-in-the-Disk, který také využívá skryté systémové API k tiché instalaci jakékoli aplikace do pozadí, s jakýmikoli oprávněními a bez nutnosti přimět uživatele, aby si myslel, že instaluje falešný Fortnite APK. Poslední jmenovaný je a standardní útok typu Man-in-the-Disk, ke kterému může dojít také u jiných aplikací, které ukládají soubory APK nebo jiná důležitá data do adresářů externího úložiště, jak ukazuje nedávný Kontrolní bod pošta. Náhodou se stane, že díky skrytému rozhraní Galaxy Apps API je tento útok Man-in-the-Disk nebezpečnější na zařízeních Samsung Galaxy.

Oprava chyby

Ke cti Epic Games patří, že velmi rychle zareagovali na zprávu na Google Issue Tracker a spustili aktualizaci na verzi 2.1.0 tak rychle, jak jen mohli. Oprava byla jednoduchá – stačí uložit stažený soubor Fortnite APK do adresáře interního úložiště Fortnite Installer v /data/data, nikoli do adresáře externího úložiště v /data/media. Inženýr Epic Games požádal, aby byla chyba zveřejněna po 90 dnech, ačkoli Google odmítl a problém zveřejnil 7 dní po vydání opravy. Generální ředitel Epic Games Tim Sweeney byl ne spokojeni s rychlou dobou odezvy od úvodní bezpečnostní zprávy po její zveřejnění. Nabídl následující prohlášení Android Central.

Epic skutečně ocenil snahu společnosti Google provést hloubkový bezpečnostní audit Fortnite bezprostředně po našem vydat na Android a sdílet výsledky s Epic, abychom mohli rychle vydat aktualizaci, která opraví jejich chybu objevil.

Od Googlu však bylo nezodpovědné zveřejnit technické podrobnosti chyby tak rychle, zatímco mnoho instalací ještě nebylo aktualizováno a byly stále zranitelné.

Bezpečnostní technik společnosti Epic na mé naléhání požádal Google o odložení zveřejnění o typických 90 dní, aby měl čas na instalaci aktualizace v širším měřítku. Google odmítl. Vše si můžete přečíst na https://issuetracker.google.com/issues/112630336

Snahy společnosti Google o bezpečnostní analýzu jsou oceňovány a jsou přínosem pro platformu Android, nicméně společnost tak výkonná jako Google by měla více praktikovat zodpovědné načasování zveřejnění, než je toto, a neohrožovat uživatele v průběhu svého úsilí proti PR proti distribuci Fortnite společnosti Epic mimo Google Play.

Nemohu mluvit o tom, kolik stávajících zařízení Samsung Galaxy má stále starší Fortnite Installer. Možná by Epic Games měli těmto uživatelům sdělit, aby aktualizovali svou instalaci zasláním zprávy ve Fortnite Mobile. Šikovná nová funkce zasílání zpráv v aplikaci Firebase mohl udělat ten trik. I když to asi stejně není velký problém, protože pokud si uživatel se starším instalačním programem již stáhl legitimní Fortnite, pak žádný útok MITD nebude fungovat, protože škodlivý APK nelze nainstalovat na stávající Fortnite instalace. V každém případě, odhalení této chyby tak brzy po vydání Fortnite pro Android – když je kolem Epic Games stále tolik kontroverzí rozhodnutí opustit Google Play—určitě pomáhá argument, že rozhodnutí Epic Games bylo nedbalé. Zda to byl záměr společnosti Google za zveřejněním tohoto problému tak rychle, se nikdy nedozvíme.