Fortnite Mobile Androidin asennussovellus oli hyödynnettävissä sen ensimmäisessä julkaisussa. Sitä voidaan käyttää väärin asentamaan mikä tahansa sovellus hiljaa Samsung Galaxy -puhelimiin.
Fortnite Mobilen julkaisu Androidille ei ole ollut liian hienoa, varsinkaan sen jälkeen monet tuetut laitteet Todella vaikeuksia pelata peliä hyväksyttävillä kuvanopeuksilla. Peli käynnistettiin nimellä a Samsung Galaxy yksinoikeudella vain 3 päivää. Fortnite Installer oli ensimmäisen kerran saatavilla Samsung Galaxy -sovellukset ennen kuin Epic Games antoi muiden kuin Samsung-pelaajien ladata ja asentaa koko pelin Epicin verkkosivustolta hankitusta Fortnite Installerista. Pian sen jälkeen, kun Fortnite Installer tuli saataville, Epic Games työnsi hiljaa päivityksen asennusohjelmaan. Nyt tiedämme miksi: He korjasivat a Man-in-the-Disk hyväksikäyttö, joka mahdollisti haitallisen sovelluksen asentaa hiljaa mitä tahansa sovellusta he halusivat Samsung Galaxy -älypuhelimissa. Koska tämän puutteen toiminnassa on ollut epäselvyyttä, yritämme selvittää asiat. Ensinnäkin meidän on selitettävä Android-sovelluksen asennuksen perusteet.
Sovelluksen asennusprosessi Android-älypuhelimissa
Hiljaiset asennukset ensimmäisen osapuolen lähteistä
Jos haluat asentaa APK: n Androidiin äänettömästi kysymättä käyttäjältä lupaa, sinulla on oltava järjestelmätason sovellus, jossa on INSTALL_PACKAGES lupa myönnetty. Esimerkkejä sovelluksista, joilla on tämä lupa, ovat Google Play Kauppa useimmissa Android-laitteissa. Ensimmäisen osapuolen sovelluskaupoille Samsungin, Huawein ja muiden laitevalmistajien laitteissa voi myös olla INSTALL_PACKAGES-lupa myönnetty. Jos haluat asentaa minkä tahansa sovelluksen Google Play Kaupasta, se hoitaa latauksen ja asentaa sen automaattisesti sovellus sinulle ilman lisätoimia, kun olet painanut "Asenna". (jopa Google Play Kauppa automaattisesti myöntää tietyt suorituksen käyttöoikeudet kuten se peittokuvat, kun taas Play Kaupan ulkopuolelta asennettujen sovellusten on pyydettävä käyttäjää myöntämään nämä luvat.)
Jos olet utelias, onko laitteesi sovelluksella INSTALL_PACKAGES-käyttöoikeus, voit selvittää ADB-komennon avulla.
adb shell
dumpsys packagepackage.name.here | grep "INSTALL_PACKAGES"
Esimerkiksi Google Play Kaupan paketin nimi on "com.android.vending
". Toinen sovellus, jolla on tämä lupa, on Shell paketin nimellä com.android.shell
. Niille, jotka käyttävät juureton alusta Andromeda-laajennuksen kautta Android Oreossa tietokoneeltasi suoritettu Andromeda-skripti pitää shell-prosessin käynnissä, jotta Substratum voi käyttää sitä pakettien (teeman peittokuvat) asentamiseen ja sitten OverlayManager-komennot ottaaksesi päällekkäiset päälle.
Sivulta ladattavat sovellukset kolmansien osapuolien lähteistä
Jos yrität ladata ja asentaa sovelluksen ensimmäisen osapuolen sovelluskaupan ulkopuolelta, sinun on ensin otettava käyttöön tuntemattomat asennuslähteet. Tämä mahdollistaa Paketinhallintapalvelu Android-kehyksessä (jolla on INSTALL_PACKAGES-lupa) tiedät, että ymmärrät sovellusten sivulatauksen riskit kolmannen osapuolen lähteistä. Pre-Android Oreo -laitteissa suojausasetuksissa on yksi kytkin, joka sallii asennuksen tuntemattomista lähteistä. Android Oreossa ja uudemmissa versioissa, APK: n asennusta vaativan sovelluksen on ilmoitettava REQUEST_INSTALL_PACKAGES käyttöoikeus ja käyttäjän on lisättävä kyseinen sovellus sallittujen luetteloon, jotta se voi pyytää sovellusasennuksia Package Manager -palvelun kautta. Koska REQUEST_INSTALL_PACKAGES on "sovellus"-käyttöoikeus, se tekee siitä yhden käyttöoikeuksista, joita voidaan hallita asetusten käyttöoikeuksien hallinnasta tai cmd appops
shell-komento.
Kun asennus tuntemattomista lähteistä on otettu käyttöön joko maailmanlaajuisesti tai erityisesti sitä pyytävälle sovellukselle, käyttäjä voi ladata sovelluksen sivulta. Paketinhallinta ei kuitenkaan salli sovelluksen asentamista äänettömästi. Sen sijaan se kysyy käyttäjää, haluaako hän asentaa sovelluksen, ja luettelee kaikki arkaluontoiset luvat, jotka se pyytää asennuksen yhteydessä. Jos käyttäjä hyväksyy, sovellus asennetaan pyydetyillä ei-ajonaikaisilla käyttöoikeuksilla. OEM-valmistajat voivat myös mukauttaa Package Manageria: esimerkiksi kiinankielisen Package Managerin Huawein EMUI 5:ssä on ominaisuus, joka tarkistaa APK: n ja päättää, onko se turvallista, ja hallitsee sen käyttöoikeuksia. myönnetty ennen asennus. Olen havainnut tämän Kiinasta tuodussa Honor Note 8:ssa, jossa on EMUI 5, vaikka olen varma, että myös muilla kiinalaisilla Huawei- ja Honor-laitteilla on tämä ominaisuus paketinhallinnassaan.
Joka tapauksessa tämä noin tiivistää eron sovelluksen asentamisen välillä hyväksytystä, ensimmäisen osapuolen lähteestä ja kolmannen osapuolen lähteestä. Jos yrität asentaa sovelluksen Play Kaupasta tai vastaavasta sovelluskaupasta, jossa on INSTALL_PACKAGES luvan, se hoitaa asennuksen äänettömästi yksin ilman käyttäjän lisätoimia aloittamisen jälkeen lataus. Mutta jos lataat APK: n XDA Labsista, APKMirrorista tai muista kolmannen osapuolen lähteistä, tavallinen paketin asennusohjelma hoitaa asennuksen ja kehottaa käyttäjää asentamaan kyseisen paketin. Joten mistä Fortnite Installer tulee ja miksi tämä kaikki on olennaista?
Virhe Fortniten asennusprosessissa
Aiemmin tänään, Google paljasti haavoittuvuuden he löysivät Fortnite Installerin ensimmäisellä versiolla. Haavoittuvuus osoitettiin Exynos Samsung Galaxy S8+:ssa (dream2lte), mutta se vaikutti myös kaikkiin muihin Samsung Experience -laitteisiin, mukaan lukien Samsung Galaxy Note 9 ja Samsung Galaxy Tab S4. Haavoittuvuus mahdollistaa an jo asennettu haittaohjelma hyödyntääksesi tapaa, jolla Fortnite Installer yrittää asentaa Fortniten ensimmäistä kertaa Samsung Galaxy -laitteissa. Käyttämällä yksityistä APIa Samsung Galaxy Appsissa Fortnite-asennusohjelma ohittaa tarpeen kehottaa käyttäjää asentamaan Fortnite tavallisen paketin asennusohjelman kautta. Tämä johtuu siitä, että Galaxy Appsilla on tarvittava lupa käsitellä asennusta äänettömästi. Tässä hiljaisessa asennusprosessissa ei olisi mitään vikaa, jos hiljaa asennettava sovellus on oikea Fortnite. Mutta koska Fortnite Installer tallensi ladatun APK-tiedoston Fortnite-peliä varten, sitä oli helppo hyödyntää.
Issue Trackerin raportin mukaan Fortnite Installer lataa Fortnite Mobile APK: n osoitteeseen /sdcard/Android/data/com.epicgames.portal/files/downloads/
. Tätä pidetään "ulkoisena tallennustilana" Androidissa, koska /sdcard on symbolinen linkki /data/media/CURRENT_USER ja /sdcard oli nimi, jota käytettiin Androidin alkuaikoina, kun sovellustiedot olivat tallennettu fyysisille SD-korteille. Nykyään sovellustiedot tallennetaan yleensä sovelluskohtaisiin hakemistoihin /data/data/, ja jokaisella sovelluksella on pääsy vain oman /data/data-hakemistonsa tiedostoihin. Näin ollen, jos Fortnite Installer tallentaisi ladatun Fortnite APK: n omaan /data/data/-hakemistoonsa, mikään sovellus ei voisi toimia ilman lukuoikeuksia (esim. ilman pääkäyttäjän oikeutta) tietää, mitä tässä hakemistossa tapahtuu.
Kuitenkin, koska Fortnite Installer tallensi ladatun APK: n ulkoiseen tallennustilaan, sitä voi seurata ja sen päälle kirjoittaa mikä tahansa sovellus, jolla on ulkoisen tallennustilan lukuoikeudet. Yleensä sovellukset kirjoittavat /data/mediaan, "virtuaaliseen SD-korttiin", kun ne tallentavat tiedostoja, joita käyttäjän on käytettävä MTP: n tai muiden sovellusten kautta. Jotta sovellus voi lukea tai kirjoittaa tiedostoon /data/media, sillä on oltava READ_EXTERNAL_STORAGE ja WRITE_EXTERNAL_STORAGE käyttöoikeuksia (molemmat ovat samassa käyttöoikeusryhmässä ja ovat siten myönnetään yhdessä). Ennen Android 4.4 KitKatia useimmat sovellukset pyysivät näitä käyttöoikeuksia asennuksen yhteydessä, koska muuten niitä ei olisi pystyy lukemaan tai kirjoittamaan tiedostoja paketille määritellyssä ulkoisessa tallennushakemistossa /data/media/.../Android/. Esittelyn kanssa FUSE emuloi FAT-on-sdcard-tyylisiä hakemistooikeuksia Android 4.4 KitKatissa sovellukset eivät enää tarvitse oikeuksia käyttääkseen tiedostoja niille osoitetussa hakemistossa ulkoisessa tallennustilassa. Missä tahansa muussa hakemistossa olevien tiedostojen käyttäminen vaatii edelleen ulkoiset tallennusoikeudet, minkä haitallinen sovellus voi tehdä kaapatakseen Fortniten asennusprosessin.
Kuten alla olevasta videosta näkyy, haitallinen sovellus, jolla on lupa READ_EXTERNAL_STORAGE, valvoo Fortnite Installerin lataushakemistoa ulkoisessa tallennustilassa. Kun se havaitsee, että lataus on valmis ja sormenjälki on vahvistettu, se korvaa ladannut Fortnite-paketin omalla haitallisella paketillaan WRITE_EXTERNAL_STORAGE lupa. Kuitenkin, koska Samsung Galaxy Apps vahvistaa Fortnite APK: n ennen asennusta (...se vain tarkistaa, onko paketin nimi "com.epicgames.fortnite"), Galaxy on mahdollista Sovellukset asenna haitallinen paketti hiljaa taustalle ilman käyttäjän toimia tai ilmoitusta– niin kauan kuin haitallisen paketin nimi oli "com.epicgames.fortnite". Vielä pahempaa, jos tämä haitallinen paketti kohdistaa SDK-tasolle 22 tai alempaan (Android 5.1 Lollipop ja sitä vanhempi), se myönnetään automaattisesti kaikki sen luettelossa määritellyt luvat, koska suorituksenaikaiset käyttöoikeudet ovat pakollisia vain sovelluksille, jotka on kohdistettu SDK-tasolle 23 tai sitä uudempaan (Android 6.0 Marshmallow ja myöhemmin).
Mutta mitä tapahtuisi muissa kuin Samsung-laitteissa? No, koska Samsung Galaxy Appsia ei ole asennettu muihin kuin Samsung-laitteisiin, haitallinen APK ei asenneta äänettömästi taustalle. Fortnite Installer on kolmannen osapuolen sovellus, ja siksi sen on ensin kehotettava käyttäjää ottamaan käyttöön asennus tuntemattomista lähteistä ja lähetä sitten paketin asentajalle pyyntö asentaa väärennös Fortnite APK. Sen jälkeen riippuu siitä, kuinka käyttäjä napauttaa "Asenna", kun häneltä kysytään, haluaako hän asentaa sovelluksen vai ei. Tämä on ongelmallista huolimatta siitä, että muut kuin Samsung-puhelimet eivät ole vaarassa, että haitallinen sovellus asennetaan äänettömästi taustalle. Keskivertokäyttäjä ei olisi yhtään viisaampi, jos hänelle esitettäisiin asennusta varten haitallinen APK, jonka nimessä on "Fortnite" ja Fortnite-sovelluskuvake.
Silti on selvä ero tämän puutteen hyödyntämisen välillä Samsung Galaxy -älypuhelimissa ja muissa kuin Samsungin älypuhelimissa. Edellinen on Man-in-the-Disk -hyökkäys, joka myös hyödyntää piilotettua järjestelmän sovellusliittymää asentaakseen äänettömästi minkä tahansa sovelluksen taustalla, kaikilla käyttöoikeuksilla ja ilman tarvetta huijata käyttäjää ajattelemaan, että he asentavat väärennetyn Fortniten APK. Jälkimmäinen on a tavallinen Man-in-the-Disk-hyökkäys, joka voi tapahtua myös muille sovelluksille, jotka tallentavat APK: ita tai muita tärkeitä tietoja ulkoisiin tallennushakemistoihin, kuten viimeaikaiset osoittavat CheckPoint lähettää. Sattuu vain niin, että piilotetun Galaxy Apps API: n ansiosta tämä Man-in-the-Disk -hyökkäys on vaarallisempi Samsung Galaxy -laitteissa.
Vian korjaaminen
Epic Gamesin ansioksi kuuluu, että he vastasivat erittäin nopeasti Google Issue Tracker -raporttiin ja julkaisivat päivityksen versioon 2.1.0 niin nopeasti kuin pystyivät. Korjaus oli yksinkertainen – tallenna vain ladattu Fortnite APK Fortnite Installerin sisäiseen tallennushakemistoon /data/data sen ulkoisen tallennushakemiston sijaan /data/media. Epic Gamesin insinööri pyysi, että virhe paljastetaan 90 päivän kuluttua, vaikka Google kieltäytyi ja julkaisi ongelman 7 päivää korjauksen julkaisemisen jälkeen. Epic Gamesin toimitusjohtaja Tim Sweeney oli ei tyytyväinen nopeaan läpimenoaikaan alkuperäisestä tietoturvaraportista sen julkistamiseen. Hän tarjosi seuraavan lausunnon Android Central.
Epic arvosti aidosti Googlen pyrkimystä suorittaa Fortniten perusteellinen tietoturvatarkastus välittömästi meidän julkaisee Androidille ja jaa tulokset Epicin kanssa, jotta voimme julkaista nopeasti päivityksen niiden puutteen korjaamiseksi löydetty.
Googlelta oli kuitenkin vastuutonta paljastaa vian tekniset yksityiskohdat niin nopeasti, vaikka monia asennuksia ei ollut vielä päivitetty ja ne olivat edelleen haavoittuvia.
Eräs Epic-tietoturvainsinööri pyysi kehotuksestani Googlea viivyttämään julkistamista tyypillisellä 90 päivällä, jotta päivitys voidaan asentaa laajemmin. Google kieltäytyi. Voit lukea sen kaiken osoitteessa https://issuetracker.google.com/issues/112630336
Googlen tietoturva-analyysiponnisteluja arvostetaan ja ne hyödyttävät Android-alustaa, mutta Googlen kaltaisen vahvan yrityksen pitäisi harjoitella enemmän vastuullinen julkistamisen ajoitus kuin tämä, eikä se vaaranna käyttäjiä Epicin Fortniten jakelua vastaan Google Play.
En voi puhua siitä, kuinka monessa nykyisessä Samsung Galaxy -laitteessa on edelleen vanhempi Fortnite Installer. Ehkä Epic Gamesin pitäisi kertoa käyttäjille, että he päivittävät asennuksensa lähettämällä viestin Fortnite Mobilessa. Firebasen hieno uusi sovelluksen sisäinen viestintäominaisuus voisi tehdä tempun. Vaikka se ei todennäköisesti ole iso juttu joka tapauksessa, koska jos käyttäjä, jolla on vanhempi asennusohjelma, on jo ladannut laillisen Fortnite, niin mikään MITD-hyökkäys ei toimi, koska haitallista APK: ta ei voida asentaa olemassa olevan Fortniten päälle asennus. Joka tapauksessa tämän puutteen löytäminen niin aikaisin Fortniten Android-julkaisun jälkeen – kun Epic Gamesista on vielä niin paljon kiistaa. päätös luopua Google Playsta-auttaa varmasti väitettä siitä, että Epic Gamesin päätös oli huolimaton. Emme koskaan tiedä, oliko Googlen tarkoitus julkistaa tämä ongelma niin nopeasti.