Fortnite Mobile na inštalačnej aplikácii pre Android bola zneužiteľná vo svojom prvom vydaní. Mohlo by sa to zneužiť na tichú inštaláciu akejkoľvek aplikácie do telefónov Samsung Galaxy.
Spustenie Fortnite Mobile pre Android nebolo príliš skvelé, najmä odvtedy mnohé z podporovaných zariadení naozaj snažia hrať hru s prijateľnou snímkovou frekvenciou. Hra bola spustená ako a Exkluzívne pre Samsung Galaxy len 3 dni. Inštalátor Fortnite bol prvýkrát dostupný na Aplikácie Samsung Galaxy predtým, ako Epic Games umožnili hráčom, ktorí nie sú od Samsungu, stiahnuť a nainštalovať plnú hru z inštalačného programu Fortnite získaného na webovej stránke spoločnosti Epic. Krátko po tom, ako bol k dispozícii inštalátor Fortnite, spoločnosť Epic Games potichu posunula aktualizáciu inštalátora. Teraz už vieme prečo: Opravili a Man-in-the-Disk zneužitie, ktoré umožnilo škodlivej aplikácii ticho nainštalovať akúkoľvek aplikáciu, ktorú chceli na smartfónoch Samsung Galaxy. Keďže došlo k určitým nejasnostiam o tom, ako táto chyba funguje, pokúsime sa veci objasniť. Najprv musíme vysvetliť základy inštalácie aplikácií v systéme Android.
Priebeh inštalácie aplikácie na smartfónoch so systémom Android
Tiché inštalácie zo zdrojov prvej strany
Ak chcete potichu nainštalovať súbor APK v systéme Android bez toho, aby ste používateľa požiadali o povolenie, musíte mať aplikáciu na úrovni systému s INSTALL_PACKAGES povolenie udelené. Príklady aplikácií s týmto povolením zahŕňajú Obchod Google Play na väčšine zariadení so systémom Android. Povolenie INSTALL_PACKAGES môžu mať udelené aj obchody s aplikáciami prvej strany na zariadeniach od spoločností Samsung, Huawei a iných výrobcov zariadení. Ak chcete nainštalovať ľubovoľnú aplikáciu z Obchodu Google Play, stiahne ju a automaticky ju nainštaluje aplikáciu pre vás bez ďalšieho zásahu po stlačení tlačidla „Inštalovať“. (Dokonca aj Obchod Google Play automaticky udeľuje určité oprávnenia pri spustení ako je ten pre prekrytia, zatiaľ čo aplikácie nainštalované mimo Obchodu Play musia používateľa požiadať o udelenie týchto povolení.)
Ak vás zaujíma, či má aplikácia vo vašom zariadení povolenie INSTALL_PACKAGES, môžete to zistiť pomocou príkazu ADB.
adb shell
dumpsys packagepackage.name.here | grep "INSTALL_PACKAGES"
Napríklad názov balíka v Obchode Google Play je „com.android.vending
". Ďalšou aplikáciou s týmto povolením je Shell s názvom balíka com.android.shell
. Pre tých z vás, ktorí používate substrát bez koreňov prostredníctvom doplnku Andromeda v systéme Android Oreo skript Andromeda spustený z vášho počítača udržiava proces shell v chode, takže ho Substratum môže použiť na inštaláciu balíkov (prekryvov tém) a potom použiť Príkazy OverlayManager aby ste povolili prekrytia.
Aplikácie s bočným načítaním zo zdrojov tretích strán
Ak sa pokúsite stiahnuť a nainštalovať aplikáciu mimo obchodu s aplikáciami prvej strany, najprv budete musieť povoliť neznáme zdroje inštalácie. Toto umožňuje Služba správcu balíkov v rámci systému Android (ktorý má povolenie INSTALL_PACKAGES) viete, že beriete na vedomie riziká spojené s načítaním aplikácií zo zdrojov tretích strán. Na zariadeniach starších ako Android Oreo je v nastaveniach zabezpečenia jeden prepínač, ktorý umožňuje inštaláciu z neznámych zdrojov. V systéme Android Oreo a novších verziách, aplikácia vyžadujúca inštaláciu súboru APK musí deklarovať REQUEST_INSTALL_PACKAGES a používateľ musí túto aplikáciu zaradiť na zoznam povolených, aby mohol požiadať o inštaláciu aplikácie prostredníctvom služby Package Manager. Keďže REQUEST_INSTALL_PACKAGES je povolenie „aplikácie“, je to jedno z povolení, ktoré možno ovládať v správcovi povolení Nastavenia alebo prostredníctvom cmd appops
príkaz shell.
Keď je inštalácia z neznámych zdrojov povolená buď globálne, alebo špecificky pre požadujúcu aplikáciu, používateľ môže aplikáciu načítať zboku. Správca balíkov však neumožňuje tichú inštaláciu aplikácie. Namiesto toho sa používateľa opýta, či si chce aplikáciu nainštalovať, a uvedie všetky citlivé povolenia, ktoré požaduje pri inštalácii. Ak používateľ súhlasí, aplikácia sa nainštaluje s požadovanými povoleniami, ktoré nie sú spustené. OEM môžu tiež prispôsobiť Správcu balíkov: Napríklad Správcu balíkov v čínskej verzii EMUI 5 od spoločnosti Huawei má funkciu na skenovanie súboru APK, aby ste sa rozhodli, či je bezpečný a kontrolujte, aké sú povolenia udelené predtým inštalácia. Všimol som si to na Honor Note 8 so systémom EMUI 5 dovezeným z Číny, aj keď som si istý, že túto funkciu majú vo svojich správcoch balíkov aj iné čínske zariadenia Huawei a Honor.
V každom prípade to zhŕňa rozdiel medzi inštaláciou aplikácie zo schváleného zdroja prvej strany a zdroja tretej strany. Ak sa pokúsite nainštalovať aplikáciu z Obchodu Play alebo ekvivalentného obchodu s aplikáciami s balíkom INSTALL_PACKAGES s povolením, po spustení potichu zvládne inštaláciu úplne sám bez ďalšieho zásahu používateľa sťahovanie. Ak si však stiahnete súbor APK z XDA Labs, APKMirror alebo iných zdrojov tretích strán, štandardný inštalátor balíka sa postará o inštaláciu a vyzve používateľa, aby si tento balík nainštaloval. Kde teda prichádza Fortnite Installer a prečo je to všetko relevantné?
Chyba v procese inštalácie Fortnite
Dnes skôr, Google odhalila zraniteľnosť objavili s prvou verziou Fortnite Installer. Zraniteľnosť bola preukázaná na Exynos Samsung Galaxy S8+ (dream2lte), ale ovplyvnila aj všetky ostatné zariadenia Samsung Experience vrátane Samsung Galaxy Note 9 a Samsung Galaxy Tab S4. Zraniteľnosť umožňuje už nainštalovanú škodlivú aplikáciu aby ste využili spôsob, akým sa Inštalátor Fortnite pokúša nainštalovať Fortnite prvýkrát na zariadeniach Samsung Galaxy. Použitím súkromného rozhrania API v aplikáciách Samsung Galaxy Apps inštalátor Fortnite obchádza potrebu vyzvať používateľa prostredníctvom štandardného inštalátora balíka na inštaláciu Fortnite. Je to preto, že Galaxy Apps má potrebné povolenie na vykonanie inštalácie potichu. Na tomto procese tichej inštalácie by nebolo nič zlé, ak by aplikácia, ktorá sa v tichosti inštaluje, je skutočný Fortnite. Ale kvôli tomu, kde inštalátor Fortnite uložil stiahnutý súbor APK pre hru Fortnite, bol ľahko zneužiteľný.
Podľa správy o Issue Tracker by si inštalátor Fortnite stiahol súbor Fortnite Mobile APK do /sdcard/Android/data/com.epicgames.portal/files/downloads/
. Toto sa považuje za „externé úložisko“ v systéme Android, pretože /sdcard je symbolický odkaz /data/media/CURRENT_USER a /sdcard bol názov používaný v prvých dňoch Androidu, keď boli údaje aplikácií uložené na fyzických SD kartách. V súčasnosti sú údaje aplikácií zvyčajne uložené v adresároch špecifických pre aplikáciu v /data/data/ a každá aplikácia má prístup iba k súborom vo svojom vlastnom adresári /data/data. Ak by teda inštalátor Fortnite uložil stiahnutý súbor Fortnite APK do svojho vlastného adresára /data/data/, nebolo by možné pre žiadnu aplikáciu bez povolení na čítanie (tj. bez prístupu root), aby ste vedeli, čo sa deje v tomto adresári.
Avšak, pretože Fortnite Installer uložil stiahnutý súbor APK do externého úložiska, mohol byť monitorovaný a prepísaný pomocou akúkoľvek aplikáciu s povoleniami na čítanie z externého úložiska. Aplikácie zvyčajne zapisujú na /data/media, „virtuálnu SD kartu“, keď ukladajú súbory, ku ktorým má používateľ pristupovať cez MTP alebo iné aplikácie. Aby aplikácia mohla čítať alebo zapisovať do /data/media, musí mať READ_EXTERNAL_STORAGE a Povolenia WRITE_EXTERNAL_STORAGE (obe patria do rovnakej skupiny povolení, a preto sú udelené spolu). Pred verziou Android 4.4 KitKat väčšina aplikácií požadovala tieto povolenia pri inštalácii, pretože inak by to tak nebolo schopný čítať alebo zapisovať do súborov v určenom externom úložnom adresári ich balíka /data/media/.../Android/. So zavedením FUSE na emuláciu povolení adresára v štýle FAT-on-sdcard v systéme Android 4.4 KitKat už aplikácie nepotrebujú žiadne povolenia na prístup k súborom v ich určenom adresári v externom úložisku. Prístup k súborom v akomkoľvek inom adresári by stále vyžadoval povolenia na externé úložisko, čo môže škodlivá aplikácia urobiť, aby ukradla proces inštalácie Fortnite.
Ako je znázornené vo videu nižšie, škodlivá aplikácia s povolením READ_EXTERNAL_STORAGE monitoruje adresár sťahovania Fortnite Installer v externom úložisku. Keď zistí, že sťahovanie je dokončené a odtlačok prsta je overený, nahradí ho stiahol si balík Fortnite s vlastným škodlivým balíkom vďaka WRITE_EXTERNAL_STORAGE povolenie. Avšak kvôli spôsobu, akým Samsung Galaxy Apps overuje Fortnite APK pred inštaláciou (...len skontroluje, či je názov balíka "com.epicgames.fortnite"), je možné mať Galaxy Aplikácie ticho nainštalovať škodlivý balík na pozadí bez zásahu používateľa alebo upozornenia—pokiaľ sa škodlivý balík volal „com.epicgames.fortnite“. Ešte horšie je, ak by sa tento škodlivý balík zameral na úroveň SDK 22 alebo nižšiu (Android 5.1 Lollipop a starší), automaticky udelia všetky povolenia definované v jeho manifeste, pretože povolenia na spustenie sú povinné len pre aplikácie zacielené na úroveň SDK 23 a vyššiu (Android 6.0 Marshmallow a neskôr).
Čo by sa však stalo na zariadeniach iných ako Samsung? Pretože aplikácia Samsung Galaxy Apps nie je nainštalovaná na zariadeniach iných značiek, ako je Samsung, škodlivý súbor APK nebude ticho nainštalovaný na pozadí. Fortnite Installer je aplikácia tretej strany, a preto musí používateľa najskôr vyzvať, aby ju povolil inštaláciu z neznámych zdrojov a následne pošlite inštalátorovi balíka požiadavku na inštaláciu falošného Fortnite APK. Potom bude záležať na používateľovi, aby klepol na „Inštalovať“, keď sa ho opýta, či chce aplikáciu nainštalovať alebo nie. To je problematické bez ohľadu na to, že telefónom iných značiek ako Samsung nehrozí, že sa na pozadí potichu nainštaluje škodlivá aplikácia. Priemerný používateľ by nebol o nič múdrejší, keby sa im na inštaláciu zobrazil škodlivý súbor APK vytvorený s „Fortnite“ v jeho názve a ikonou aplikácie Fortnite.
Napriek tomu existuje jasný rozdiel medzi využívaním tejto chyby na smartfónoch Samsung Galaxy a smartfónoch iných značiek. Prvý z nich je útok typu Man-in-the-Disk, ktorý tiež využíva skryté systémové API na tichú inštaláciu akejkoľvek aplikácie do na pozadí, s akýmikoľvek povoleniami a bez potreby oklamať používateľa, aby si myslel, že inštaluje falošný Fortnite APK. Posledný je a štandardný útok typu Man-in-the-Disk, ktorý sa môže stať aj iným aplikáciám, ktoré ukladajú súbory APK alebo iné dôležité údaje do adresárov externého úložiska, ako ukazuje nedávna CheckPoint príspevok. Náhodou sa stane, že vďaka skrytému API Galaxy Apps je tento útok Man-in-the-Disk nebezpečnejší na zariadeniach Samsung Galaxy.
Oprava chyby
Ku cti Epic Games treba povedať, že veľmi rýchlo zareagovali na správu na Google Issue Tracker a spustili aktualizáciu na verziu 2.1.0 tak rýchlo, ako len mohli. Oprava bola jednoduchá – stačí uložiť stiahnutý súbor Fortnite APK do interného adresára úložiska Fortnite Installer v /data/data a nie do adresára externého úložiska v /data/media. Inžinier Epic Games požiadal, aby bola chyba zverejnená po 90 dňoch, hoci spoločnosť Google zamietla a problém zverejnila 7 dní po vydaní opravy. Generálnym riaditeľom Epic Games bol Tim Sweeney nie spokojný s rýchlym časom odozvy od prvej bezpečnostnej správy po jej zverejnenie. Ponúkol nasledujúce vyhlásenie Android Central.
Epic skutočne ocenil snahu spoločnosti Google vykonať hĺbkový bezpečnostný audit Fortnite bezprostredne po našom vydanie pre Android a zdieľajte výsledky s Epic, aby sme mohli rýchlo vydať aktualizáciu na opravu ich chyby objavil.
Od spoločnosti Google však bolo nezodpovedné tak rýchlo zverejniť technické detaily chyby, pričom mnohé inštalácie ešte neboli aktualizované a boli stále zraniteľné.
Bezpečnostný inžinier spoločnosti Epic na moje naliehanie požiadal spoločnosť Google o odloženie zverejnenia o typických 90 dní, aby mal dostatok času na širšiu inštaláciu aktualizácie. Google odmietol. Všetko si môžete prečítať na https://issuetracker.google.com/issues/112630336
Snahy spoločnosti Google o bezpečnostnú analýzu sa oceňujú a sú prínosom pre platformu Android, avšak spoločnosť tak výkonná ako Google by mala viac praktizovať zodpovedné načasovanie zverejnenia, než je toto, a neohroziť používateľov v priebehu svojho úsilia proti PR proti distribúcii Fortnite od spoločnosti Epic mimo Google Play.
Nemôžem hovoriť o tom, koľko existujúcich zariadení Samsung Galaxy má stále starší Fortnite Installer. Možno by Epic Games mali týmto používateľom povedať, aby aktualizovali svoju inštaláciu odoslaním správy vo Fortnite Mobile. Šikovná nová funkcia odosielania správ v aplikácii Firebase mohol urobiť trik. Aj keď to pravdepodobne nie je veľký problém, pretože ak si používateľ so starším inštalátorom už stiahol legitímne Fortnite, potom žiadny útok MITD nebude fungovať, pretože škodlivý súbor APK nie je možné nainštalovať na existujúci Fortnite inštalácia. V každom prípade, objavenie tejto chyby tak skoro po vydaní Fortnite pre Android – keď je o Epic Games stále toľko kontroverzií rozhodnutie vzdať sa služby Google Play-určite pomáha argument, že rozhodnutie Epic Games bolo neopatrné. Či to bol zámer spoločnosti Google za zverejnením tohto problému tak rýchlo, sa nikdy nedozvieme.