A Fortnite Mobile Android telepítőalkalmazása az első kiadásban kihasználható volt. Vissza lehet élni vele, ha bármilyen alkalmazást csendben telepítenek a Samsung Galaxy telefonokra.
A Fortnite Mobile bevezetése Androidon nem volt túl nagy, különösen azóta számos támogatott eszköz igazán küzdenek azért, hogy elfogadható képkockasebességgel játsszák a játékot. A játék a Samsung Galaxy exkluzív csak 3 napig. A Fortnite telepítő először itt volt elérhető Samsung Galaxy Apps mielőtt az Epic Games lehetővé tette a nem Samsung játékosok számára, hogy letöltsék és telepítsék a teljes játékot az Epic webhelyén található Fortnite Installerből. Röviddel azután, hogy a Fortnite Installer elérhetővé vált, az Epic Games csendesen frissítette a telepítőt. Most már tudjuk, miért: Foltozták a Man-in-the-Disk kihasználása, amely lehetővé tette egy rosszindulatú alkalmazás számára csendben telepítse bármilyen alkalmazást, amit akartak Samsung Galaxy okostelefonokon. Mivel a hiba működésével kapcsolatban némi zavar támadt, megpróbáljuk tisztázni a dolgokat. Először is el kell magyaráznunk az alkalmazás telepítésének alapjait Androidon.
Alkalmazástelepítési folyamat Android okostelefonokon
Csendes telepítések belső forrásból
Ahhoz, hogy csendben telepítsen egy APK-t Androidra anélkül, hogy engedélyt kérne a felhasználótól, rendelkeznie kell egy rendszerszintű alkalmazással a INSTALL_PACKAGES hozzáférés megadva. Az ilyen engedéllyel rendelkező alkalmazások közé tartozik például a Google Play Áruház a legtöbb Android-eszközön. A Samsung, a Huawei és más eszközgyártók saját alkalmazásboltjai szintén megkaphatják az INSTALL_PACKAGES engedélyt. Ha bármilyen alkalmazást szeretne telepíteni a Google Play Áruházból, az elvégzi a letöltést és automatikusan telepíti az alkalmazást további beavatkozás nélkül, miután megnyomta a „Telepítés” gombot. (Még a Google Play Áruház is automatikusan bizonyos futásidejű engedélyeket ad mint amilyen a való átfedések, míg a Play Áruházon kívülről telepített alkalmazásoknak meg kell kérniük a felhasználót, hogy adja meg ezeket az engedélyeket.)
Ha kíváncsi arra, hogy az eszközén lévő alkalmazás rendelkezik-e INSTALL_PACKAGES engedéllyel, egy ADB paranccsal megtudhatja.
adb shell
dumpsys packagepackage.name.here | grep "INSTALL_PACKAGES"
Például a Google Play Áruház csomagneve "com.android.vending
". Egy másik alkalmazás ezzel az engedéllyel a Shell a csomagnévvel com.android.shell
. Azoknak, akik használják gyökértelen Aljzat az Andromeda beépülő modulon keresztül Android Oreo rendszeren a számítógépről futtatott Andromeda szkript futásban tartja a shell folyamatot, így a Substratum használhatja csomagok (a témafedvények) telepítésére, majd a OverlayManager parancsok az átfedések engedélyezéséhez.
Oldalról betöltő alkalmazások harmadik féltől származó forrásokból
Ha saját alkalmazásbolton kívülről próbál letölteni és telepíteni egy alkalmazást, először engedélyeznie kell az ismeretlen telepítési forrásokat. Ez lehetővé teszi a Csomagkezelő szolgáltatás Android-keretrendszeren belül (amely rendelkezik az INSTALL_PACKAGES engedéllyel) tudja, hogy elismeri az alkalmazások harmadik féltől származó oldalról történő betöltésének kockázatait. Az Android Oreo előtti eszközökön egyetlen kapcsoló található a Biztonsági beállítások között, amely lehetővé teszi az ismeretlen forrásból történő telepítést. Android Oreo és újabb verziókon, az APK telepítését kérő alkalmazásnak deklarálnia kell a REQUEST_INSTALL_PACKAGES engedélyt, és a felhasználónak engedélyezőlistára kell helyeznie az alkalmazást, hogy a csomagkezelő szolgáltatáson keresztül alkalmazástelepítéseket kérhessen. Mivel a REQUEST_INSTALL_PACKAGES egy „alkalmazás” engedély, ez az egyik olyan engedély, amely a Beállítások engedélykezelőjéből vagy a cmd appops
shell parancs.
Miután az ismeretlen forrásból történő telepítés globálisan vagy kifejezetten egy kérelmező alkalmazás számára engedélyezett, a felhasználó oldalról töltheti be az alkalmazást. A Csomagkezelő azonban nem teszi lehetővé az alkalmazás csendes telepítését. Ehelyett megkérdezi a felhasználót, hogy kívánja-e telepíteni az alkalmazást, és felsorolja azokat a bizalmas engedélyeket, amelyeket a telepítéskor meg kell adni. Ha a felhasználó elfogadja, akkor az alkalmazás a kért, nem futásidejű engedélyekkel települ. Az OEM-ek testreszabhatják a Csomagkezelőt is: például a Csomagkezelőt a kínai változatban A Huawei EMUI 5 olyan funkcióval rendelkezik, amely átvizsgálja az APK-t, hogy eldöntse, biztonságos-e, és szabályozza az engedélyeket. megadott előtt telepítés. Megfigyeltem ezt a Kínából importált EMUI 5-öt futtató Honor Note 8-on, bár biztos vagyok benne, hogy más kínai Huawei és Honor készülékek csomagkezelőjében is megtalálható ez a funkció.
Mindenesetre ez a körülbelül összegzi a különbséget aközött, hogy egy alkalmazást jóváhagyott, belső forrásból és harmadik féltől származó forrásból telepítenek. Ha a Play Áruházból vagy azzal egyenértékű alkalmazásboltból próbál meg telepíteni egy alkalmazást az INSTALL_PACKAGES csomaggal engedélyt, csendben, önállóan, további felhasználói beavatkozás nélkül kezeli a telepítést az indítás után a letöltés. Ha azonban letölt egy APK-t az XDA Labs, APKMirror vagy más harmadik féltől származó forrásokból, a szabványos csomagtelepítő kezeli a telepítést, és felszólítja a felhasználót a csomag telepítésére. Tehát hol jön be a Fortnite telepítő, és miért releváns mindez?
Hiba a Fortnite telepítési folyamatában
Ma korábban a Google sérülékenységet tárt fel a Fortnite Installer első verziójával fedezték fel. A sebezhetőséget az Exynos Samsung Galaxy S8+ (dream2lte) esetében mutatták ki, de az összes többi Samsung Experience eszközt is érintette, beleértve a Samsung Galaxy Note 9-et és a Samsung Galaxy Tab S4-et is. A sérülékenység lehetővé teszi egy már telepített rosszindulatú alkalmazás hogy kihasználja a Fortnite telepítőjének a Fortnite telepítésének módját először Samsung Galaxy készülékeken. A Samsung Galaxy Apps privát API-jának használatával a Fortnite Installer megkerüli annak szükségességét, hogy a szabványos csomagtelepítőn keresztül felszólítsa a felhasználót a Fortnite telepítésére. Ennek az az oka, hogy a Galaxy Apps rendelkezik a telepítés csendes kezeléséhez szükséges engedéllyel. Nem lenne semmi baj ezzel a csendes telepítési folyamattal, ha a csendben telepített alkalmazás az igazi Fortnite. De mivel a Fortnite Installer hol tárolta a letöltött APK fájlt a Fortnite játékhoz, könnyen kihasználható volt.
Az Issue Trackerről szóló jelentés szerint a Fortnite telepítője letölti a Fortnite Mobile APK-t ide /sdcard/Android/data/com.epicgames.portal/files/downloads/
. Ez „külső tárhelynek” számít Androidon, mivel az /sdcard egy szimbolikus hivatkozás erre /data/media/CURRENT_USER és /sdcard volt a név az Android korai napjaiban, amikor az alkalmazásadatok fizikai SD-kártyákon tárolva. Manapság az alkalmazásadatokat általában a /data/data/ alkalmazás-specifikus könyvtáraiban tárolják, és minden alkalmazás csak a saját /data/data könyvtárában lévő fájlokhoz fér hozzá. Így, ha a Fortnite telepítője a letöltött Fortnite APK-t a saját /data/data/ könyvtárába tárolná, lehetetlen lenne bármely alkalmazás számára olvasási engedély nélkül (pl. root hozzáférés nélkül), hogy megtudja, mi történik ebben a könyvtárban.
Mivel azonban a Fortnite Installer a letöltött APK-t külső tárhelyre mentette, ellenőrizhető és felülírható bármely külső tárhely olvasási engedéllyel rendelkező alkalmazás. Általában az alkalmazások a /data/media mappába, a "virtuális SD-kártyára" írnak, amikor olyan fájlokat tárolnak, amelyeket a felhasználónak MTP-n vagy más alkalmazásokon keresztül kell elérnie. Ahhoz, hogy egy alkalmazás olvashasson vagy írhasson a /data/media mappába, rendelkeznie kell a READ_EXTERNAL_STORAGE és WRITE_EXTERNAL_STORAGE engedélyek (mindkettő ugyanabba az engedélycsoportba tartozik, ezért együtt adják). Az Android 4.4 KitKat előtt a legtöbb alkalmazás telepítéskor kérte ezeket az engedélyeket, mert különben nem lennének képes olvasni vagy írni a csomagjuk által kijelölt külső tárolókönyvtárban lévő fájlokat /data/media/.../Android/. Bevezetésével FUSE a FAT-on-sdcard stílusú könyvtárengedélyek emulálásához Az Android 4.4 KitKat rendszerben az alkalmazásoknak már nincs szükségük engedélyekre a külső tárhely kijelölt könyvtárában lévő fájlok eléréséhez. Bármely más könyvtárban lévő fájlok eléréséhez továbbra is szükség van a külső tárolási engedélyekre, amit egy rosszindulatú alkalmazás megtehet a Fortnite telepítési folyamatának eltérítésére.
Ahogy az alábbi videón is látható, egy READ_EXTERNAL_STORAGE engedéllyel rendelkező rosszindulatú alkalmazás figyeli a Fortnite Installer letöltési könyvtárát a külső tárolón. Amikor azt észleli, hogy a letöltés befejeződött, és az ujjlenyomat ellenőrzése megtörtént, lecseréli a letöltötte a Fortnite csomagot a saját rosszindulatú csomagjával a WRITE_EXTERNAL_STORAGE-nak köszönhetően engedély. Azonban azért, mert a Samsung Galaxy Apps a telepítés előtt ellenőrzi a Fortnite APK-t (...csak azt ellenőrzi, hogy a csomag neve "com.epicgames.fortnite"), lehetséges-e Galaxy Alkalmazások elemre csendben telepítse a rosszindulatú csomagot a háttérben, felhasználói beavatkozás vagy értesítés nélkül– mindaddig, amíg a rosszindulatú csomag neve „com.epicgames.fortnite” volt. Még rosszabb, ha ez a rosszindulatú csomag 22-es vagy alacsonyabb szintű SDK-t célozna (Android 5.1 Lollipop és korábbi), akkor automatikusan megkapja a manifestben meghatározott összes engedélyt, mert a futásidejű engedélyek csak a 23-as vagy magasabb szintű SDK-t célzó alkalmazásokhoz kötelezőek (Android 6.0 Marshmallow és a későbbiekben).
De mi történne a nem Samsung készülékeken? Nos, mivel a Samsung Galaxy Apps nincs telepítve nem Samsung eszközökre, ez a rosszindulatú APK nem lesz csendben telepítve a háttérben. A Fortnite Installer egy harmadik féltől származó alkalmazás, ezért először kérnie kell a felhasználót, hogy engedélyezze telepítést ismeretlen forrásból, majd küldjön egy kérést a csomagtelepítőnek a hamisítvány telepítésére Fortnite APK. Ezután a felhasználótól függ, hogy megérinti a „Telepítés” lehetőséget, amikor megkérdezik, hogy kívánja-e telepíteni az alkalmazást vagy sem. Ez attól függetlenül problémás, hogy a nem Samsung telefonokat nem fenyegeti az a veszély, hogy egy rosszindulatú alkalmazás csendben telepítésre kerül a háttérben. Az átlagfelhasználó nem lenne bölcsebb, ha egy rosszindulatú APK-t, amelynek nevében a „Fortnite” és a Fortnite alkalmazás ikonja szerepel, telepítésre bemutatják.
Ennek ellenére egyértelmű különbség van a Samsung Galaxy okostelefonokon és a nem Samsung okostelefonokon való kihasználás között. Az előbbi egy Man-in-the-Disk támadás, amely egy rejtett rendszer API-t is kihasználva csendben telepít bármilyen alkalmazást a háttérben, bármilyen engedéllyel, és nem kell becsapni a felhasználót azt gondolni, hogy hamis Fortnite-ot telepít APK. Ez utóbbi a szabványos Man-in-the-Disk támadás, amely más alkalmazásokkal is megtörténhet, amelyek APK-kat vagy más fontos adatokat mentenek külső tárolókönyvtárakba, amint azt a legutóbbiak is mutatják Ellenőrző pont hozzászólás. Történt ugyanis, hogy a rejtett Galaxy Apps API-nak köszönhetően ez a Man-in-the-Disk támadás veszélyesebb a Samsung Galaxy készülékeken.
A Hiba javítása
Az Epic Games érdeme, hogy nagyon gyorsan reagáltak a Google Issue Trackerről szóló jelentésre, és amilyen gyorsan csak tudtak, frissítették a 2.1.0-s verziót. A javítás egyszerű volt – csak mentse a letöltött Fortnite APK-t a Fortnite Installer belső tárolókönyvtárába a /data/data mappába, ne pedig a /data/media külső tárolókönyvtárába. Az Epic Games mérnöke azt kérte, hogy 90 nap elteltével tárják fel a hibát, bár a Google elutasította, és 7 nappal a javítás bevezetése után nyilvánosságra hozta a problémát. Tim Sweeney volt az Epic Games vezérigazgatója nem elégedett a gyors átfutási idővel az első biztonsági jelentéstől a közzétételig. Az alábbi nyilatkozatot ajánlotta fel Android Central.
Az Epic őszintén nagyra értékelte a Google azon erőfeszítését, hogy a Fortnite mélyreható biztonsági ellenőrzését azonnal elvégezze kiadja Androidon, és megosztja az eredményeket az Epic-kel, hogy gyorsan kiadhassunk egy frissítést a hiba kijavítására felfedezték.
Felelőtlenség volt azonban a Google részéről, hogy ilyen gyorsan nyilvánosságra hozta a hiba technikai részleteit, miközben sok telepítést még nem frissítettek, és továbbra is sebezhetőek voltak.
Az Epic biztonsági mérnöke az én felszólításomra azt kérte a Google-tól, hogy halasszák el a nyilvános közzétételt a szokásos 90 nappal, hogy legyen ideje a frissítés szélesebb körű telepítésére. A Google visszautasította. Az egészet elolvashatja a címen https://issuetracker.google.com/issues/112630336
A Google biztonsági elemzési erőfeszítéseit nagyra értékelik, és az Android platform javára válnak, azonban egy olyan erős vállalatnak, mint a Google, többet kell gyakorolnia felelősségteljes közzétételi időzítést, és nem veszélyezteti a felhasználókat az Epic által a Fortnite-on kívüli forgalmazása elleni PR-ellenes erőfeszítései során. A Google Play.
Nem tudok beszélni arról, hogy hány meglévő Samsung Galaxy eszközön van még a régebbi Fortnite Installer. Lehet, hogy az Epic Gamesnek meg kellene mondania ezeknek a felhasználóknak, hogy frissítsék a telepítésüket a Fortnite Mobile-on keresztül. A Firebase remek új, alkalmazáson belüli üzenetküldési funkciója meg tudná csinálni a trükköt. Bár ez valószínűleg nem nagy baj, mert ha egy felhasználó a régebbi telepítővel már letöltötte a legitimet Fortnite, akkor semmilyen MITD támadás nem fog működni, mert a rosszindulatú APK nem telepíthető a meglévő Fortnite fölé. telepítés. Mindenesetre ennek a hibának a felfedezése olyan korán a Fortnite Androidon való megjelenése után – amikor még mindig annyi vita van az Epic Gamesről úgy döntött, hogy lemond a Google Playről– minden bizonnyal segíti azt az érvet, hogy az Epic Games döntése gondatlan volt. Soha nem fogjuk megtudni, hogy ez volt-e a Google szándéka a probléma ilyen gyors nyilvánosságra hozatala mögött.