„Fortnite Mobile“ „Android“ diegimo programoje buvo galima naudoti pirmajame jos leidime. Gali būti piktnaudžiaujama tyliai diegiant bet kokią programą „Samsung Galaxy“ telefonuose.
„Fortnite Mobile“ paleidimas „Android“ nebuvo per didelis, ypač nuo to laiko daugelis palaikomų įrenginių tikrai sunku žaisti žaidimą priimtinu kadrų dažniu. Žaidimas buvo paleistas kaip a Išskirtinis Samsung Galaxy tik 3 dienas. „Fortnite“ diegimo programa pirmą kartą buvo pasiekiama Samsung Galaxy Apps prieš tai, kai „Epic Games“ leido ne „Samsung“ žaidėjams atsisiųsti ir įdiegti visą žaidimą iš „Fortnite Installer“, gauto „Epic“ svetainėje. Netrukus po to, kai „Fortnite Installer“ pasirodė, „Epic Games“ tyliai atnaujino diegimo programą. Dabar žinome, kodėl: jie pataisė a Žmogus diske išnaudojimas, dėl kurio kenkėjiška programa galėjo tai padaryti tyliai įdiegti bet kurią norimą programą „Samsung Galaxy“ išmaniuosiuose telefonuose. Kadangi kilo painiavos dėl šio trūkumo veikimo, pabandysime viską išsiaiškinti. Pirmiausia turime paaiškinti programos diegimo „Android“ pagrindus.
Programų diegimo srautas „Android“ išmaniuosiuose telefonuose
Tylus diegimas iš pirmųjų šalių šaltinių
Jei norite tyliai įdiegti APK sistemoje „Android“, neprašydami vartotojo leidimo, turite turėti sistemos lygio programą su INSTALL_PACKAGES leidimas suteiktas. Programų, turinčių šį leidimą, pavyzdžiai yra „Google Play“ parduotuvė daugelyje „Android“ įrenginių. Pirmosios šalies programų parduotuvėms „Samsung“, „Huawei“ ir kitų įrenginių gamintojų įrenginiuose taip pat gali būti suteiktas INSTALL_PACKAGES leidimas. Jei norite įdiegti bet kurią programą iš „Google Play“ parduotuvės, ji atsisiųs ir automatiškai įdiegs programėlę jums be tolesnio įsikišimo, kai paspausite „Įdiegti“. (net „Google Play“ parduotuvėje automatiškai suteikia tam tikrus vykdymo laiko leidimus toks kaip skirtas perdangos, o programos, įdiegtos ne iš „Play“ parduotuvės, turi paprašyti vartotojo suteikti šiuos leidimus.)
Jei jums įdomu, ar jūsų įrenginyje esanti programa turi INSTALL_PACKAGES leidimą, galite sužinoti naudodami ADB komandą.
adb shell
dumpsys packagepackage.name.here | grep "INSTALL_PACKAGES"
Pavyzdžiui, „Google Play“ parduotuvės paketo pavadinimas yra „com.android.vending
". Kita programa, turinti šį leidimą, yra „Shell“ su paketo pavadinimu com.android.shell
. Tiems iš jūsų, kurie naudojate Bešaknis substratas per Andromeda papildinį „Android Oreo“ iš jūsų kompiuterio paleistas Andromeda scenarijus palaiko apvalkalo procesą, todėl „Substratum“ gali jį naudoti paketams (temų perdangoms) įdiegti ir tada naudoti OverlayManager komandos kad įjungtumėte perdangas.
Šoninės programos iš trečiųjų šalių šaltinių
Jei bandysite atsisiųsti ir įdiegti programą ne iš pirmosios šalies programų parduotuvės, pirmiausia turėsite įgalinti nežinomus diegimo šaltinius. Tai leidžia Paketų tvarkyklės paslauga „Android“ sistemoje (kuriai suteiktas INSTALL_PACKAGES leidimas) žinokite, kad pripažįstate riziką, kylančią dėl programų įkėlimo iš trečiųjų šalių šaltinių. Išankstiniuose „Android Oreo“ įrenginiuose saugos nustatymuose yra vienas perjungimas, leidžiantis įdiegti iš nežinomų šaltinių. „Android Oreo“ ir naujesnėse versijose, programa, reikalaujanti įdiegti APK, turi deklaruoti REQUEST_INSTALL_PACKAGES leidimą, o vartotojas turi tą programą įtraukti į baltąjį sąrašą, kad galėtų prašyti programos diegimo naudodamas paketų tvarkyklės paslaugą. Kadangi REQUEST_INSTALL_PACKAGES yra „programėlės“ leidimas, tai yra vienas iš leidimų, kuriuos galima valdyti naudojant „Nustatymų“ leidimų tvarkytuvę arba per cmd appops
apvalkalo komanda.
Kai diegimas iš nežinomų šaltinių įgalinamas visame pasaulyje arba konkrečiai užklausai programai, vartotojas gali įkelti programą iš šono. Tačiau paketų tvarkyklė neleidžia programos įdiegti tyliai. Atvirkščiai, jis paragins vartotoją, ar jis nori įdiegti programą, ir nurodys visus neskelbtinus leidimus, kuriuos ji prašo suteikti įdiegiant. Jei vartotojas sutinka, programa įdiegiama su prašomais ne vykdymo laiko leidimais. OĮG taip pat gali tinkinti paketų tvarkyklę: pavyzdžiui, paketų tvarkyklę kinų versijoje „Huawei“ EMUI 5 turi funkciją, leidžiančią nuskaityti APK, kad nuspręstų, ar jis saugus, ir valdyti, kokie leidimai yra suteikta prieš įrengimas. Tai pastebėjau iš Kinijos importuotame „Honor Note 8“, kuriame veikia EMUI 5, nors esu tikras, kad kitų Kinijos „Huawei“ ir „Honor“ įrenginių paketų tvarkytuvėse ši funkcija taip pat yra.
Bet kokiu atveju tai apibendrina skirtumą tarp programos diegimo iš patvirtinto pirmosios šalies šaltinio ir trečiosios šalies šaltinio. Jei bandote įdiegti programą iš „Play“ parduotuvės ar lygiavertės programų parduotuvės naudodami INSTALL_PACKAGES leidimo, jis tyliai atliks diegimą be tolesnio vartotojo įsikišimo, kai pradėsite atsisiuntimas. Bet jei atsisiunčiate APK iš XDA Labs, APKMirror ar kitų trečiųjų šalių šaltinių, standartinė paketo diegimo programa atliks diegimą ir paragins vartotoją įdiegti tą paketą. Taigi, kur atsiranda „Fortnite Installer“ ir kodėl visa tai svarbu?
„Fortnite“ diegimo proceso trūkumas
Anksčiau šiandien „Google“. atskleidė pažeidžiamumą jie atrado su pirmąja Fortnite Installer versija. Pažeidžiamumas buvo parodytas „Exynos Samsung Galaxy S8+“ (dream2lte), bet taip pat paveikė visus kitus „Samsung Experience“ įrenginius, įskaitant „Samsung Galaxy Note 9“ ir „Samsung Galaxy Tab S4“. Pažeidžiamumas leidžia an jau įdiegta kenkėjiška programa pasinaudoti „Fortnite“ diegimo programos „Fortnite“ diegimo būdu pirmą kartą „Samsung Galaxy“ įrenginiuose. Naudodamas privačią API „Samsung Galaxy Apps“, „Fortnite Installer“ apeina būtinybę paraginti vartotoją per standartinį paketo diegimo programą įdiegti „Fortnite“. Taip yra todėl, kad „Galaxy Apps“ turi leidimą, reikalingą tyliai diegti. Šiam tyliam diegimo procesui nebūtų nieko blogo, jei tyliai diegiama programa yra tikroji „Fortnite“. Tačiau dėl to, kur „Fortnite Installer“ saugojo atsisiųstą „Fortnite“ žaidimo APK failą, jį buvo lengva išnaudoti.
Remiantis „Issue Tracker“ ataskaita, „Fortnite Installer“ atsisiųs „Fortnite Mobile APK“ /sdcard/Android/data/com.epicgames.portal/files/downloads/
. „Android“ tai laikoma „išorine saugykla“, nes /sdcard yra simbolinė nuoroda /data/media/CURRENT_USER ir /sdcard buvo pavadinimas, naudojamas ankstyvosiomis Android dienomis, kai programos duomenys buvo saugomi fizinėse SD kortelėse. Šiais laikais programų duomenys paprastai saugomi konkrečioms programoms skirtuose kataloguose /data/data/, o kiekviena programa turi prieigą tik prie failų, esančių savo /data/data kataloge. Taigi, jei „Fortnite“ diegimo programa atsisiųstą „Fortnite“ APK išsaugotų savo /data/data/ kataloge, jokia programa be skaitymo leidimo negalėtų naudotis (ty. be root prieigos), kad sužinotumėte, kas vyksta šiame kataloge.
Tačiau nuo Fortnite diegimo programos atsisiųstą APK išsaugojo išorinėje saugykloje, jį galėtų stebėti ir perrašyti bet kuri programa su išorinės atminties skaitymo leidimais. Paprastai programos rašo į /data/media, „virtualią SD kortelę“, kai saugo failus, kuriuos vartotojas turi pasiekti per MTP arba kitas programas. Kad programa galėtų skaityti arba rašyti į /data/media, ji turi turėti READ_EXTERNAL_STORAGE ir WRITE_EXTERNAL_STORAGE leidimai atitinkamai (abu priklauso tai pačiai leidimų grupei, todėl yra suteikiama kartu). Prieš „Android 4.4 KitKat“ dauguma programų prašė šių leidimų diegiant, nes kitaip jų nebūtų gali skaityti arba rašyti failus, esančius jų paketo paskirtame išoriniame saugojimo kataloge /data/media/.../Android/. Su įvedimu FUSE emuliuoti FAT-on-sdcard stiliaus katalogo leidimus 4.4 versijos „KitKat“ programoms nebereikia jokių leidimų pasiekti failus, esančius jiems skirtame išorinės saugyklos kataloge. Norint pasiekti failus bet kuriame kitame kataloge, vis tiek reikės išorinės saugyklos leidimų, o tai gali padaryti kenkėjiška programa, kad užgrobtų „Fortnite“ diegimo procesą.
Kaip parodyta toliau pateiktame vaizdo įraše, kenkėjiška programa, turinti READ_EXTERNAL_STORAGE leidimą, stebi „Fortnite Installer“ atsisiuntimų katalogą išorinėje saugykloje. Kai nustatoma, kad atsisiuntimas baigtas, ir patikrintas piršto atspaudas, jis pakeičia atsisiuntė „Fortnite“ paketą su savo kenkėjišku paketu dėl WRITE_EXTERNAL_STORAGE leidimas. Tačiau dėl to, kad „Samsung Galaxy Apps“ prieš įdiegiant patikrina „Fortnite“ APK (...tik patikrina, ar paketo pavadinimas yra "com.epicgames.fortnite"), galima turėti Galaxy Programėlės tyliai įdiekite kenksmingą paketą fone be vartotojo įsikišimo ar pranešimo– tol, kol kenkėjiško paketo pavadinimas buvo „com.epicgames.fortnite“. Dar blogiau, jei šis kenkėjiškas paketas būtų taikomas 22 ar žemesnio lygio SDK („Android 5.1 Lollipop“ ir senesnė versija), automatiškai bus suteikti visi leidimai, nurodyti jo apraše, nes vykdymo laiko leidimai privalomi tik programoms, kurios taikomos pagal 23 ir aukštesnį SDK lygį („Android 6.0 Marshmallow“ ir vėliau).
Bet kas nutiktų ne „Samsung“ įrenginiuose? Na, nes „Samsung Galaxy Apps“ neįdiegta ne „Samsung“ įrenginiuose, tai yra kenkėjiškas APK nebus tyliai įdiegtas fone. „Fortnite Installer“ yra trečiosios šalies programa, todėl pirmiausia reikia paraginti vartotoją įjungti diegimą iš nežinomų šaltinių ir nusiųskite paketo diegimo programai užklausą įdiegti netikrą Fortnite APK. Tada priklausys nuo to, ar vartotojas palies „Įdiegti“, kai paklaus, ar nori įdiegti programą, ar ne. Tai kelia problemų, nepaisant to, kad ne „Samsung“ telefonams negresia fone tyliai įdiegta kenkėjiška programa. Paprastas vartotojas nebūtų išmintingesnis, jei kenkėjiškas APK, kurio pavadinime yra „Fortnite“ ir „Fortnite“ programos piktograma, būtų pateiktas įdiegti.
Vis dėlto yra aiškus skirtumas tarp šio trūkumo panaudojimo „Samsung Galaxy“ išmaniuosiuose telefonuose ir ne „Samsung“ išmaniuosiuose telefonuose. Pirmoji yra „Man-in-the-Disk“ ataka, kuri taip pat naudoja paslėptą sistemos API, kad tyliai įdiegtų bet kokią programą fone, su bet kokiais leidimais ir nereikia klaidinti vartotojo manyti, kad jie diegia netikrą „Fortnite“ APK. Pastarasis yra a standartinė „Man-in-the-Disk“ ataka, kuri gali nutikti ir kitoms programoms, kurios išsaugo APK ar kitus svarbius duomenis išoriniuose saugojimo kataloguose, kaip rodo naujausias Checkpoint paštu. Taip atsitiko, kad dėl paslėptos Galaxy Apps API ši „Man-in-the-Disk“ ataka yra pavojingesnė „Samsung Galaxy“ įrenginiuose.
Defekto taisymas
„Epic Games“ nuopelnas yra tai, kad jie labai greitai sureagavo į pranešimą apie „Google Issue Tracker“ ir kuo greičiau išleido 2.1.0 versijos naujinį. Pataisymas buvo paprastas – tiesiog išsaugokite atsisiųstą „Fortnite“ APK „Fortnite Installer“ vidinės atminties kataloge / data/data, o ne išoriniame saugojimo kataloge / data/media. „Epic Games“ inžinierius paprašė, kad trūkumas būtų atskleistas po 90 dienų, nors „Google“ atmetė ir paviešino problemą praėjus 7 dienoms po pataisymo. Buvo „Epic Games“ generalinis direktorius Timas Sweeney ne džiaugiasi greitu apyvartos laiku nuo pirminės saugos ataskaitos iki jos atskleidimo. Jis pasiūlė tokį pareiškimą „Android Central“..
„Epic“ nuoširdžiai įvertino „Google“ pastangas atlikti išsamų „Fortnite“ saugos auditą iškart po mūsų išleisti „Android“ ir pasidalyti rezultatais su „Epic“, kad galėtume greitai išleisti naujinį, kad ištaisytume jų trūkumą atrado.
Tačiau „Google“ buvo neatsakinga taip greitai viešai atskleisti technines trūkumo detales, o daugelis įrenginių dar nebuvo atnaujinti ir vis dar buvo pažeidžiami.
„Epic“ saugos inžinierius, mano paragintas, paprašė „Google“ atidėti viešą atskleidimą įprastai 90 dienų, kad naujinys būtų įdiegtas plačiau. Google atsisakė. Viską galite perskaityti adresu https://issuetracker.google.com/issues/112630336
„Google“ saugos analizės pastangos yra vertinamos ir naudingos „Android“ platformai, tačiau tokia galinga įmonė kaip „Google“ turėtų praktikuoti daugiau atsakingas atskleidimo laikas nei šis, ir nekeltų pavojaus naudotojams, kai jie kovoja su viešaisiais ryšiais prieš Epic platinamą Fortnite už Google Play.
Negaliu pasakyti, kiek esamų „Samsung Galaxy“ įrenginių vis dar turi senesnę „Fortnite“ diegimo programą. Galbūt „Epic Games“ turėtų liepti šiems vartotojams atnaujinti diegimą, išsiųsdamas pranešimą „Fortnite Mobile“. Puiki nauja „Firebase“ pranešimų siuntimo programoje funkcija galėtų padaryti triuką. Vis dėlto tai tikriausiai nėra didelė problema, nes jei vartotojas, turintis senesnę diegimo programą, jau atsisiuntė teisėtą Fortnite, tada jokia MITD ataka neveiks, nes kenkėjiško APK negalima įdiegti ant esamos Fortnite įrengimas. Bet kokiu atveju šis trūkumas buvo aptiktas taip anksti po „Fortnite“ išleidimo „Android“, kai vis dar kyla tiek daug ginčų dėl „Epic Games“ sprendimas atsisakyti „Google Play“.– tikrai padeda argumentas, kad Epic Games sprendimas buvo neatsargus. Niekada nesužinosime, ar tai buvo „Google“ ketinimas taip greitai paviešinti šią problemą.