Fortnite Installer mogao bi se zloupotrijebiti za tiho instaliranje aplikacija na Galaxy telefone

click fraud protection

Fortnite Mobile na Androidovoj instalacijskoj aplikaciji bilo je moguće iskoristiti u svom prvom izdanju. Moglo bi se zloupotrijebiti za tiho instaliranje bilo koje aplikacije na telefone Samsung Galaxy.

Lansiranje Fortnite Mobilea na Androidu nije bilo sjajno, pogotovo od tada mnogi od podržanih uređaja stvarno teško igrati igru ​​s prihvatljivim brojem sličica u sekundi. Igra je pokrenuta kao Samsung Galaxy ekskluzivno samo 3 dana. Fortnite Installer je prvi put bio dostupan na Samsung Galaxy aplikacije prije nego što je Epic Games dopuštao igračima koji nisu Samsungovi da preuzmu i instaliraju punu igru ​​iz Fortnite Installera dobivenog na Epicovoj web stranici. Ubrzo nakon što je Fortnite Installer postao dostupan, Epic Games je tiho gurnuo ažuriranje Installera. Sada znamo zašto: zakrpali su a Čovjek-u-disku exploit koji je zlonamjernoj aplikaciji omogućio da tiho instalirati bilo koju aplikaciju koju su htjeli na pametnim telefonima Samsung Galaxy. Budući da je došlo do zabune oko toga kako ovaj nedostatak funkcionira, pokušat ćemo razjasniti stvari. Prvo moramo objasniti osnove instalacije aplikacije na Androidu.


Tijek instalacije aplikacije na Android pametnim telefonima

Tihe instalacije iz izvora prve strane

Da biste tiho instalirali APK na Android bez traženja dopuštenja od korisnika, morate imati aplikaciju na razini sustava s INSTALL_PACKAGES odobrenje. Primjeri aplikacija s ovim dopuštenjem uključuju trgovinu Google Play na većini Android uređaja. Pohrane aplikacija prve strane na uređajima Samsunga, Huaweija i drugih proizvođača uređaja također mogu imati dopuštenje INSTALL_PACKAGES. Ako želite instalirati bilo koju aplikaciju iz trgovine Google Play, ona će preuzeti i automatski se instalirati aplikaciju za vas bez daljnje intervencije nakon što pritisnete "Instaliraj". (Čak i Google Play Store automatski daje određene dozvole za vrijeme izvođenja kao što je onaj za preklapanja, dok aplikacije instalirane izvan Trgovine Play moraju tražiti od korisnika da odobri ta dopuštenja.)

Ako vas zanima ima li aplikacija na vašem uređaju dopuštenje INSTALL_PACKAGES, to možete saznati putem ADB naredbe.

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

Na primjer, naziv paketa trgovine Google Play je "com.android.vending". Još jedna aplikacija s ovim dopuštenjem je Shell s nazivom paketa com.android.shell. Za vas koji koristite bez korijena Substratum putem dodatka Andromeda na Android Oreo, skripta Andromeda pokrenuta s vašeg računala održava proces ljuske pokrenutim tako da je Substratum može koristiti za instaliranje paketa (prekrivanja tema) i zatim koristiti OverlayManager naredbe kako biste omogućili slojeve.

Aplikacije koje se učitavaju sa strane iz izvora trećih strana

Ako pokušate preuzeti i instalirati aplikaciju izvan trgovine aplikacija prve strane, prvo ćete morati omogućiti nepoznate izvore instalacije. Ovo omogućuje Usluga upravitelja paketa unutar Android okvira (koji ima dopuštenje INSTALL_PACKAGES) znajte da prihvaćate rizike bočnog učitavanja aplikacija iz izvora trećih strana. Na uređajima prije Android Oreo postoji jedan prekidač u sigurnosnim postavkama za dopuštanje instalacije iz nepoznatih izvora. Na Androidu Oreo i novijim verzijama, aplikacija koja poziva instalaciju APK-a mora deklarirati REQUEST_INSTALL_PACKAGES dopuštenje i korisnik mora staviti tu aplikaciju na bijeli popis kako bi mogla zahtijevati instaliranje aplikacije putem usluge Package Manager. Budući da je REQUEST_INSTALL_PACKAGES dopuštenje za "aplikaciju", to ga čini jednim od dopuštenja kojima se može upravljati iz upravitelja dopuštenja postavki ili putem cmd appops naredba ljuske.

Nakon što je instalacija iz nepoznatih izvora omogućena globalno ili posebno za aplikaciju koja zahtijeva, korisnik može učitati aplikaciju sa strane. Međutim, Package Manager ne dopušta tiho instaliranje aplikacije. Umjesto toga, upitat će korisnika želi li instalirati aplikaciju i navesti sva osjetljiva dopuštenja koja zahtijeva da se dodijele pri instalaciji. Ako korisnik prihvati, tada se aplikacija instalira sa zatraženim dopuštenjima koja nisu izvođena. OEM-ovi također mogu prilagoditi Package Manager: Na primjer, Package Manager u kineskoj verziji Huaweijev EMUI 5 ima značajku za skeniranje APK-a kako bi odlučio je li siguran i kontrolira koja su dopuštenja odobreno prije montaža. Primijetio sam to na Honor Note 8 koji pokreće EMUI 5 uvezen iz Kine, iako sam siguran da i drugi kineski Huawei i Honor uređaji imaju ovu značajku u svojim upraviteljima paketa.

U svakom slučaju, to otprilike sažima razliku između instaliranja aplikacije iz odobrenog izvora prve strane i izvora treće strane. Ako pokušate instalirati aplikaciju iz Trgovine Play ili ekvivalentne trgovine aplikacija s INSTALL_PACKAGES dopuštenje, tiho će sama izvršiti instalaciju bez daljnje intervencije korisnika nakon što počnete preuzimanje. Ali ako preuzmete APK s XDA Labsa, APKMirrora ili drugih izvora trećih strana, standardni instalacijski program za pakete izvršit će instalaciju i zatražiti od korisnika da instalira taj paket. Pa gdje tu dolazi Fortnite Installer i zašto je sve to relevantno?

Greška u postupku instalacije Fortnitea

Ranije danas, Google otkrio ranjivost otkrili su s prvom verzijom Fortnite Installera. Ranjivost je prikazana na Exynos Samsung Galaxy S8+ (dream2lte), ali je također utjecala na sve druge Samsung Experience uređaje uključujući Samsung Galaxy Note 9 i Samsung Galaxy Tab S4. Ranjivost omogućuje već instaliranu zlonamjernu aplikaciju kako biste iskoristili način na koji Fortnite Installer pokušava instalirati Fortnite prvi put na Samsung Galaxy uređajima. Korištenjem privatnog API-ja u Samsung Galaxy Apps, Fortnite Installer zaobilazi potrebu da se korisniku putem standardnog paketa za instalaciju zatraži da instalira Fortnite. To je zato što Galaxy Apps ima dozvolu koja mu je potrebna za tihu instalaciju. Ne bi bilo ništa loše u ovom procesu tihe instalacije ako je aplikacija koja se tiho instalira pravi Fortnite. Ali zbog toga gdje je Fortnite Installer pohranio preuzetu APK datoteku za igru ​​Fortnite, bilo ju je lako iskoristiti.

AndroidManifest tvrtke Samsung Galaxy Apps pokazuje da Galaxy Apps ima dopuštenje samostalno instalirati druge aplikacije, zaobilazeći standardni instalacijski program paketa.

Prema izvješću na Issue Trackeru, Fortnite Installer bi preuzeo Fortnite Mobile APK na /sdcard/Android/data/com.epicgames.portal/files/downloads/. Ovo se smatra "vanjskom pohranom" na Androidu jer je /sdcard simbolična veza na /data/media/CURRENT_USER, a /sdcard je bio naziv korišten u ranim danima Androida kada su podaci aplikacije pohranjeni na fizičkim SD karticama. Danas se podaci aplikacije obično pohranjuju u direktorije specifične za aplikaciju u /data/data/, a svaka aplikacija ima pristup samo datotekama u vlastitom direktoriju /data/data. Dakle, ako je Fortnite Installer pohranio preuzeti Fortnite APK u vlastiti /data/data/ direktorij, bilo bi nemoguće za bilo koju aplikaciju bez dopuštenja za čitanje (tj. bez root pristupa) da znate što se događa u ovom direktoriju.

Međutim, budući da je Fortnite Installer spremio preuzeti APK u vanjsku pohranu, mogao bi se nadzirati i prebrisati bilo koja aplikacija s dopuštenjima za čitanje vanjske pohrane. Obično aplikacije pišu na /data/media, "virtualnu SD karticu", kada pohranjuju datoteke kojima korisnik mora pristupiti putem MTP-a ili putem drugih aplikacija. Da bi aplikacija čitala ili pisala u /data/media, mora imati READ_EXTERNAL_STORAGE i Dozvole WRITE_EXTERNAL_STORAGE (obje su pod istom grupom dozvola i stoga su dodijeljeni zajedno). Prije Androida 4.4 KitKat, većina aplikacija je tražila ova dopuštenja nakon instalacije jer inače ne bi mogu čitati ili pisati u datoteke u određenom direktoriju vanjske pohrane svog paketa /data/media/.../Android/. Uz uvođenje FUSE za oponašanje dopuštenja direktorija u stilu FAT-on-sdcard u Androidu 4.4 KitKat, aplikacije više ne trebaju nikakve dozvole za pristup datotekama u njihovom određenom direktoriju u vanjskoj pohrani. Za pristup datotekama u bilo kojem drugom direktoriju i dalje bi bile potrebne dozvole za vanjsku pohranu, a to je ono što zlonamjerna aplikacija može učiniti kako bi preotela postupak instalacije Fortnitea.

Kao što je prikazano u videu u nastavku, zlonamjerna aplikacija s dozvolom READ_EXTERNAL_STORAGE nadzire direktorij za preuzimanje programa Fortnite Installer u vanjskoj pohrani. Kada otkrije da je preuzimanje dovršeno i da je otisak prsta potvrđen, zamjenjuje preuzeo paket Fortnite s vlastitim zlonamjernim paketom zahvaljujući WRITE_EXTERNAL_STORAGE dopuštenje. Međutim, zbog načina na koji Samsung Galaxy Apps provjerava Fortnite APK prije instalacije (...samo provjerava je li naziv paketa "com.epicgames.fortnite"), moguće je imati Galaxy aplikacije tiho instalirajte zlonamjerni paket u pozadini bez intervencije ili obavijesti korisnika— sve dok je naziv zlonamjernog paketa bio "com.epicgames.fortnite." Još gore, ako bi ovaj zlonamjerni paket ciljao SDK razinu 22 ili nižu (Android 5.1 Lollipop i ranije), automatski dobiti sva dopuštenja definirana u manifestu jer su dopuštenja za vrijeme izvođenja obavezna samo za aplikacije koje ciljaju SDK razinu 23 i više (Android 6.0 Marshmallow i kasnije).

Ali što bi se dogodilo na uređajima koji nisu Samsung? Pa, budući da Samsung Galaxy Apps nije instaliran na uređajima koji nisu Samsungovi, zlonamjerni APK neće se tiho instalirati u pozadini. Fortnite Installer je aplikacija treće strane i stoga mora najprije zatražiti od korisnika da omogući instalaciju iz nepoznatih izvora, a zatim pošaljite zahtjev programu za instaliranje paketa da instalira lažni Fortnite APK. Tada bi ovisilo o tome hoće li korisnik dodirnuti "Instaliraj" kada ga se upita želi li instalirati aplikaciju ili ne. To je problematično bez obzira na činjenicu da telefoni koji nisu Samsungovi nisu u opasnosti da se zlonamjerna aplikacija tiho instalira u pozadini. Prosječan korisnik ne bi bio ništa mudriji da mu se za instalaciju prikaže zlonamjerni APK s "Fortnite" u nazivu i ikonom aplikacije Fortnite.

Ipak, postoji jasna razlika između iskorištavanja ove greške na pametnim telefonima Samsung Galaxy i pametnim telefonima koji nisu Samsungovi. Prvi je napad Man-in-the-Disk koji također koristi prednost skrivenog API-ja sustava za tiho instaliranje bilo koje aplikacije u pozadina, s bilo kakvim dopuštenjima i bez potrebe da se korisnik prevari da pomisli da instalira lažni Fortnite APK. Potonji je a standardni Man-in-the-Disk napad koji se može dogoditi i drugim aplikacijama koje spremaju APK-ove ili druge važne podatke u direktorije vanjske pohrane, kako pokazuju nedavni Kontrolna točka objaviti. Slučajno je, zahvaljujući skrivenom Galaxy Apps API-ju, ovaj Man-in-the-Disk napad opasniji na Samsung Galaxy uređajima.

Otklanjanje greške

Svaka čast Epic Gamesu, vrlo su brzo odgovorili na izvješće na Google Issue Trackeru i izbacili ažuriranje na verziju 2.1.0 što su brže mogli. Popravak je bio jednostavan—samo spremite preuzeti Fortnite APK u interni direktorij za pohranu programa Fortnite Installer u /data/data umjesto u njegov vanjski direktorij za pohranu u /data/media. Inženjer Epic Gamesa tražio je da se greška otkrije nakon 90 dana, iako je Google odbio i javno objavio problem 7 dana nakon što je popravak izbačen. Bio je izvršni direktor Epic Gamesa Tim Sweeney ne zadovoljni brzim vremenom obrade od početnog sigurnosnog izvješća do njegovog otkrivanja. Ponudio je sljedeću izjavu Android Central.

Epic je iskreno cijenio Googleov trud da izvrši dubinsku sigurnosnu reviziju Fortnitea odmah nakon našeg objaviti na Androidu i podijeliti rezultate s Epicom kako bismo mogli brzo izdati ažuriranje za ispravljanje greške otkrio.

Međutim, bilo je neodgovorno od strane Googlea što je tako brzo javno otkrio tehničke detalje greške, dok mnoge instalacije još nisu bile ažurirane i još uvijek su bile ranjive.

Sigurnosni inženjer tvrtke Epic, na moj poticaj, zatražio je od Googlea odgodu javnog objavljivanja za tipičnih 90 dana kako bi se dalo vremena da se ažuriranje instalira u većem broju. Google je odbio. Sve možete pročitati na https://issuetracker.google.com/issues/112630336

Cijene se Googleovi napori u analizi sigurnosti i koriste platformi Android, no moćna tvrtka poput Googlea trebala bi više prakticirati odgovorno vrijeme otkrivanja od ovog, i ne ugrožavati korisnike tijekom njegovih protuPR napora protiv Epicove distribucije Fortnitea izvan Google Play.

Ne mogu govoriti o tome koliko postojećih Samsung Galaxy uređaja još uvijek ima stariji Fortnite Installer. Možda bi Epic Games trebao reći ovim korisnicima da ažuriraju svoju instalaciju slanjem poruke u Fortnite Mobile. Firebaseova izvrsna nova značajka slanja poruka unutar aplikacije mogao učiniti trik. Iako, to ionako vjerojatno nije velika stvar jer, ako je korisnik sa starijim instalacijskim programom već preuzeo legitimni Fortnite, tada bilo koji MITD napad neće funkcionirati jer se zlonamjerni APK ne može instalirati povrh postojećeg Fortnitea montaža. U svakom slučaju, otkriće ovog propusta tako rano nakon izlaska Fortnitea na Androidu—iako još postoji toliko kontroverzi oko Epic Games' odluku o odbacivanju Google Playa— svakako pomaže argumentu da je odluka Epic Gamesa bila nemarna. Nikada nećemo saznati je li to Googleova namjera iza objavljivanja ovog problema tako brzo.