Fortnite Installerit võidakse kuritarvitada, et vaikselt installida rakendusi Galaxy telefonidesse

Fortnite Mobile Androidi installirakenduses oli selle esimeses versioonis kasutatav. Seda saab kuritarvitada mis tahes rakenduse vaikselt installimiseks Samsung Galaxy telefonidesse.

Fortnite Mobile'i käivitamine Androidis pole olnud liiga suurepärane, eriti sellest ajast peale paljud toetatud seadmed tõesti raskusi, et mängida vastuvõetava kaadrisagedusega. Mäng käivitati kui a Samsung Galaxy eksklusiivne ainult 3 päeva. Fortnite Installer oli esmakordselt saadaval Samsung Galaxy rakendused enne kui Epic Games lubas mitte-Samsungi mängijatel kogu mängu alla laadida ja installida Epicu veebisaidilt saadud Fortnite Installerist. Vahetult pärast seda, kui Fortnite Installer sai kättesaadavaks, lükkas Epic Games vaikselt installijale värskenduse. Nüüd teame, miks: nad parandasid a Mees-kettal ärakasutamine, mis võimaldas pahatahtlikul rakendusel seda teha vaikselt installida mis tahes rakendust, mida nad tahtsid Samsung Galaxy nutitelefonides. Kuna selle vea toimimise osas on olnud segadust, proovime asjad selgeks teha. Esiteks peame selgitama rakenduste installimise põhitõdesid Androidis.


Rakenduse installivoog Android-nutitelefonides

Vaiksed installid esimese osapoole allikatest

APK vaikseks installimiseks Androidis ilma kasutajalt luba küsimata peab teil olema süsteemitaseme rakendus INSTALL_PACKAGES luba antud. Selle loaga rakenduste näideteks on Google Play pood enamikus Android-seadmetes. Samsungi, Huawei ja teiste seadmetootjate seadmete esimese osapoole rakenduspoodidele võib samuti olla antud luba INSTALL_PACKAGES. Kui soovite installida mõne rakenduse Google Play poest, tegeleb see allalaadimisega ja installib automaatselt rakendus teie jaoks ilma täiendava sekkumiseta pärast seda, kui olete vajutanud nuppu "Install". (isegi Google Play pood automaatselt annab teatud käitusaja õigused nagu see ülekatted, samas kui väljaspool Play poodi installitud rakendused peavad paluma kasutajal need load anda.)

Kui olete huvitatud sellest, kas teie seadme rakendusel on INSTALL_PACKAGES luba, saate teada ADB-käsu kaudu.

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

Näiteks Google Play poe paketi nimi on "com.android.vending". Teine selle loaga rakendus on paketinimega Shell com.android.shell. Neile, kes kasutate juurteta substratum Andromeda pistikprogrammi kaudu Android Oreo puhul hoiab teie arvutist käivitatav Andromeda skript kestaprotsessi töös, et Substratum saaks seda kasutada pakettide (teemaülekatete) installimiseks ja seejärel OverlayManageri käsud ülekatete lubamiseks.

Külglaadimise rakendused kolmandate osapoolte allikatest

Kui proovite rakendust alla laadida ja installida väljaspool esimese osapoole rakenduste poodi, peate esmalt lubama tundmatud installiallikad. See võimaldab Paketihalduri teenus Androidi raamistikus (millel on INSTALL_PACKAGES luba) teadke, et tunnistate kolmandate osapoolte allikatest rakenduste külglaadimise riske. Android Oreo-eelsetes seadmetes on turvaseadetes üks lüliti, mis võimaldab installida tundmatutest allikatest. Android Oreo ja uuemates versioonides, peab APK installimist kutsuv rakendus deklareerima REQUEST_INSTALL_PACKAGES luba ja kasutaja peab selle rakenduse valgesse loendisse kandma, et see saaks taotleda rakenduse installimist paketihalduri teenuse kaudu. Kuna REQUEST_INSTALL_PACKAGES on rakenduse luba, on see üks lubadest, mida saab juhtida seadete lubade haldurist või cmd appops kesta käsk.

Kui installimine tundmatutest allikatest on globaalselt või spetsiaalselt taotleva rakenduse jaoks lubatud, saab kasutaja rakenduse külglaadida. Paketihaldur ei luba aga rakendust vaikselt installida. Pigem küsib see kasutajalt, kas ta soovib rakendust installida, ja loetleb kõik tundlikud load, mida see installimisel taotleb. Kui kasutaja nõustub, installitakse rakendus taotletud mittekäitamisaegsete lubadega. OEM-id saavad kohandada ka paketihaldurit: näiteks paketihaldurit hiinakeelses versioonis Huawei EMUI 5-l on funktsioon APK skannimiseks, et otsustada, kas see on ohutu, ja kontrollida, millised load on antud enne paigaldus. Olen seda täheldanud Hiinast imporditud EMUI 5-ga töötava Honor Note 8 puhul, kuigi olen kindel, et ka teistel Hiina Huawei ja Honori seadmetel on see funktsioon nende paketihaldurites.

Igal juhul võtab see umbes kokku erinevuse rakenduse installimise vahel heakskiidetud esimese osapoole allikast ja kolmanda osapoole allikast. Kui proovite installida rakendust Play poest või samaväärsest rakenduste poest koos INSTALL_PACKAGES-iga loa, hakkab see pärast alustamist installimisega vaikselt hakkama, ilma kasutaja täiendava sekkumiseta allalaadimine. Kui aga laadite APK alla XDA Labsist, APKMirrori või muudest kolmandate osapoolte allikatest, tegeleb standardpaketi installija installimisega ja palub kasutajal see pakett installida. Kuhu siis Fortnite'i installer sisse tuleb ja miks see kõik asjakohane on?

Viga Fortnite'i installiprotsessis

Täna varem Google avalikustas haavatavuse nad avastasid Fortnite Installeri esimese versiooniga. Haavatavust demonstreeriti mudelil Exynos Samsung Galaxy S8+ (dream2lte), kuid see mõjutas ka kõiki teisi Samsung Experience'i seadmeid, sealhulgas Samsung Galaxy Note 9 ja Samsung Galaxy Tab S4. Haavatavus võimaldab an juba installitud pahatahtlik rakendus et kasutada ära viisi, kuidas Fortnite'i installija proovib Fortnite'i installida esimest korda Samsung Galaxy seadmetes. Kasutades Samsung Galaxy Appsis privaatset API-d, jätab Fortnite'i installer mööda vajadusest paluda kasutajal standardse paketiinstalleri kaudu Fortnite'i installida. Selle põhjuseks on asjaolu, et Galaxy Appsil on vaikseks installimiseks vajalik luba. Sellel vaiksel installiprotsessil poleks midagi valesti, kui vaikselt installitav rakendus on tõeline Fortnite. Kuid kuna Fortnite'i installija salvestas Fortnite'i mängu jaoks allalaaditud APK-faili, oli see hõlpsasti kasutatav.

Samsung Galaxy Appsi AndroidManifest näitab, et Galaxy Appsil on luba installida teisi rakendusi iseseisvalt, standardpaketi installijast mööda minnes.

Probleemide jälgimise aruande kohaselt laadiks Fortnite'i installija Fortnite Mobile APK alla /sdcard/Android/data/com.epicgames.portal/files/downloads/. Seda peetakse Androidis "väliseks salvestusruumiks", kuna /sdcard on sümboolne link /data/media/CURRENT_USER ja /sdcard oli nimi, mida kasutati Androidi algusaegadel, kui rakenduse andmed olid salvestatud füüsilistele SD-kaartidele. Tänapäeval salvestatakse rakenduste andmed tavaliselt /data/data/ rakendusepõhistesse kataloogidesse ja igal rakendusel on juurdepääs ainult oma /data/data kataloogis olevatele failidele. Seega, kui Fortnite'i installija salvestaks allalaaditud Fortnite'i APK oma /data/data/ kataloogi, ei saaks ükski rakendus ilma lugemisõiguseta (st. ilma juurjuurdepääsuta), et teada saada, mis selles kataloogis toimub.

Kuid kuna Fortnite Installer salvestas allalaaditud APK välismällu, saab seda jälgida ja üle kirjutada mis tahes rakendus, millel on välise salvestusruumi lugemisõigused. Tavaliselt kirjutavad rakendused /data/media, "virtuaalsele SD-kaardile", kui nad salvestavad faile, millele kasutaja peab MTP või muude rakenduste kaudu juurde pääsema. Et rakendus saaks lugeda või kirjutada kausta /data/media, peab neil olema READ_EXTERNAL_STORAGE ja WRITE_EXTERNAL_STORAGE õigused (mõlemad kuuluvad samasse lubade rühma ja on seega antakse koos). Enne Android 4.4 KitKati taotles enamik rakendusi installimisel neid õigusi, kuna vastasel juhul poleks neid suudab lugeda või kirjutada faile oma paketi määratud välises salvestuskataloogis /data/media/.../Android/. Koos kasutuselevõtuga FUSE emuleerida FAT-on-sdcard stiilis kataloogi õigusi Android 4.4 KitKatis ei vaja rakendused enam välismällu määratud kataloogis olevatele failidele juurdepääsuks luba. Mis tahes muus kataloogis olevatele failidele juurdepääsemiseks on siiski vaja välist salvestusõigust, mida pahatahtlik rakendus võib teha Fortnite'i installiprotsessi kaaperdamiseks.

Nagu on näidatud allolevas videos, jälgib READ_EXTERNAL_STORAGE loaga pahatahtlik rakendus välismälus Fortnite Installeri allalaadimiskataloogi. Kui see tuvastab, et allalaadimine on lõppenud ja sõrmejälg on kinnitatud, asendab see laadis alla Fortnite'i paketi koos oma pahatahtliku paketiga tänu WRITE_EXTERNAL_STORAGE-le luba. Kuid selle tõttu, kuidas Samsung Galaxy Apps kontrollib Fortnite APK-d enne installimist (...see lihtsalt kontrollib, kas paketi nimi on "com.epicgames.fortnite"), Galaxy võib olla Rakendused installige pahatahtlik pakett taustale vaikselt ilma kasutaja sekkumise või teavituseta— seni, kuni pahatahtliku paketi nimi oli "com.epicgames.fortnite". Veelgi hullem, kui see pahatahtlik pakett sihiks SDK taset 22 või madalamat (Android 5.1 Lollipop ja varasemad), automaatselt antakse kõik selle manifestis määratletud load, kuna käitusaja load on kohustuslikud ainult rakendustele, mis sihivad SDK taset 23 ja kõrgemat (Android 6.0 Marshmallow ja hiljem).

Aga mis juhtuks mitte-Samsungi seadmetes? Kuna Samsung Galaxy Appsi pole installitud muudesse kui Samsungi seadmetesse, on pahatahtlik APK ei installita vaikselt taustale. Fortnite Installer on kolmanda osapoole rakendus ja seetõttu peab kasutaja esmalt lubama installimine tundmatutest allikatest ja seejärel saatke paketi installijale taotlus võltsingu installimiseks Fortnite APK. See sõltub sellest, kas kasutaja puudutab nuppu "Install", kui temalt küsitakse, kas ta soovib rakendust installida või mitte. See on problemaatiline olenemata asjaolust, et mitte-Samsungi telefone ei ähvarda taustal vaikselt installitud pahatahtlik rakendus. Tavakasutaja poleks targem, kui talle esitatakse installimiseks pahatahtlik APK, mille nimes on "Fortnite" ja Fortnite'i rakenduse ikoon.

Selle vea ärakasutamine Samsung Galaxy nutitelefonides ja mitte-Samsungi nutitelefonides on siiski selge. Esimene neist on ketasmehe rünnak, mis kasutab ära ka peidetud süsteemi API-t, et vaikselt installida mis tahes rakendus taustal, mis tahes lubadega ja ilma vajaduseta meelitada kasutajat arvama, et nad installivad võltsitud Fortnite'i APK. Viimane on a tavaline kettamehe rünnak, mis võib juhtuda ka teiste rakendustega, mis salvestavad APK-sid või muid olulisi andmeid välistesse salvestuskataloogidesse, nagu näitas hiljutine CheckPoint postitus. Juhtub nii, et tänu peidetud Galaxy Appsi API-le on see kettamehe rünnak Samsung Galaxy seadmetes ohtlikum.

Vea parandamine

Epic Gamesi kiituseks võib öelda, et nad reageerisid väga kiiresti Google Issue Trackeri aruandele ja võtsid värskenduse versioonile 2.1.0 välja nii kiiresti kui võimalik. Parandus oli lihtne – lihtsalt salvestage allalaaditud Fortnite APK Fortnite Installeri sisemälukataloogi kaustas /data/data, mitte selle välisesse salvestuskataloogi kaustas /data/media. Epic Gamesi insener nõudis vea avalikustamist 90 päeva pärast, kuigi Google keeldus ja tegi probleemi avalikuks 7 päeva pärast paranduse väljatöötamist. Epic Gamesi tegevjuht Tim Sweeney oli mitte rahul kiire tööajaga alates esialgsest turvaaruandest kuni selle avalikustamiseni. Ta pakkus järgmise avalduse Android Central.

Epic hindas tõeliselt Google'i jõupingutusi viia läbi Fortnite'i põhjalik turvaaudit kohe pärast meie vabastage Androidis ja jagage tulemusi Epicuga, et saaksime nende vea parandamiseks kiiresti värskenduse välja anda avastatud.

Google oli aga vastutustundetu, kui avalikustas vea tehnilised üksikasjad nii kiiresti, kuigi paljusid installatsioone ei olnud veel värskendatud ja need olid endiselt haavatavad.

Epic turbeinsener palus minu tungival nõudmisel Google'il viivitada avalikustamisele tavapärase 90 päeva võrra, et anda aega värskenduse laiemaks installimiseks. Google keeldus. Saate seda kõike lugeda aadressil https://issuetracker.google.com/issues/112630336

Google'i turbeanalüüsi jõupingutusi hinnatakse ja need toovad kasu Androidi platvormile, kuid nii võimas ettevõte nagu Google peaks rohkem harjutama vastutustundlik avalikustamise ajastus ja see ei ohusta kasutajaid Epicu Fortnite'i levitamise vastu väljaspool Google Play.

Ma ei saa öelda, kui paljudel olemasolevatel Samsung Galaxy seadmetel on veel vanem Fortnite Installer. Võib-olla peaks Epic Games käskima neil kasutajatel oma installi värskendada, saates Fortnite Mobile'i sõnumi. Firebase'i uus vahva rakendusesisese sõnumside funktsioon võiks asja ära teha. Tõenäoliselt pole see siiski suurem asi, sest kui vanema installijaga kasutaja on juba legitiimse installiprogrammi alla laadinud Fortnite, siis ükski MITD-rünnak ei tööta, kuna pahatahtlikku APK-d ei saa olemasoleva Fortnite'i peale installida paigaldus. Igal juhul avastati see viga nii vara pärast Fortnite'i Androidi väljalaskmist – kui Epic Gamesi osas on ikka veel nii palju vaidlusi. otsus Google Playst loobuda— kindlasti aitab argument, et Epic Gamesi otsus oli hooletu. Kas see oli Google'i kavatsus selle probleemi nii kiire avalikustamise taga, ei saa me kunagi teada.