Fortnite Installer kan blive misbrugt til lydløst at installere apps på Galaxy-telefoner

click fraud protection

Fortnite Mobile på Androids installationsapp kunne udnyttes i sin første udgivelse. Det kan blive misbrugt til lydløst at installere enhver app på Samsung Galaxy-telefoner.

Lanceringen af ​​Fortnite Mobile på Android har ikke været for stor, især siden mange af de understøttede enheder virkelig kæmper for at spille spillet med acceptable billedhastigheder. Spillet blev lanceret som en Eksklusiv Samsung Galaxy i kun 3 dage. Fortnite Installer var først tilgængelig på Samsung Galaxy Apps før Epic Games tillod ikke-Samsung-spillere at downloade og installere det fulde spil fra Fortnite Installer opnået på Epics hjemmeside. Kort efter at Fortnite Installer blev tilgængelig, skubbede Epic Games stille og roligt en opdatering til Installer. Nu ved vi hvorfor: De lappede en Man-in-the-Disk udnyttelse, der gjorde det muligt for en ondsindet app stille installation enhver app, de ønskede på Samsung Galaxy-smartphones. Fordi der har været en vis forvirring om, hvordan denne fejl fungerer, vil vi forsøge at rydde op i tingene. Først skal vi forklare det grundlæggende i app-installation på Android.


App-installationsflow på Android-smartphones

Lydløse installationer fra førstepartskilder

For lydløst at installere en APK på Android uden at bede brugeren om tilladelse, skal du have en applikation på systemniveau med INSTALL_PACKAGES tilladelse givet. Eksempler på applikationer med denne tilladelse omfatter Google Play Butik på de fleste Android-enheder. Førsteparts applikationsbutikker på enheder fra Samsung, Huawei og andre enhedsproducenter kan også have INSTALL_PACKAGES-tilladelsen givet. Hvis du vil installere en app fra Google Play Butik, håndterer den downloadingen og installerer den automatisk appen til dig uden yderligere indgriben, efter du har trykket på "Installer". (Google Play Butik endda automatisk giver visse køretidstilladelser som den til overlejringer, hvorimod apps installeret uden for Play Butik skal bede brugeren om at give disse tilladelser.)

Hvis du er nysgerrig efter, om en app på din enhed har INSTALL_PACKAGES-tilladelsen, kan du finde ud af det via en ADB-kommando.

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

For eksempel er Google Play Butiks pakkenavn "com.android.vending". En anden app med denne tilladelse er Shell med pakkenavnet com.android.shell. Til jer der bruger rodløst underlag via Andromeda plug-in på Android Oreo holder Andromeda-scriptet, der køres fra din pc, shell-processen kørende, så Substratum kan bruge den til at installere pakker (temaoverlejringerne) og derefter bruge OverlayManager-kommandoer for at aktivere overlejringerne.

Sideindlæsning af apps fra tredjepartskilder

Hvis du forsøger at downloade og installere en app uden for en førsteparts appbutik, skal du først aktivere ukendte installationskilder. Dette lader Pakkemanagertjeneste inden for Android-rammerne (som har INSTALL_PACKAGES-tilladelsen) ved, at du anerkender risikoen ved sideindlæsning af apps fra tredjepartskilder. På præ-Android Oreo-enheder er der et enkelt skifte i sikkerhedsindstillingerne for at tillade installation fra ukendte kilder. På Android Oreo og nyere versioner, skal en app, der kræver installation af en APK, erklære REQUEST_INSTALL_PACKAGES tilladelse, og brugeren skal hvidliste den app, så den kan anmode om appinstallationer via Package Manager-tjenesten. Da REQUEST_INSTALL_PACKAGES er en "appop"-tilladelse, gør det den til en af ​​de tilladelser, der kan styres fra Indstillingers tilladelsesadministrator eller via cmd appops skal kommando.

Når installation fra ukendte kilder er aktiveret enten globalt eller specifikt for en anmodende applikation, kan brugeren sideindlæse en app. Pakkehåndteringen tillader dog ikke, at appen installeres i ro og mag. Det vil snarere spørge brugeren, om de vil installere appen, og angive eventuelle følsomme tilladelser, som den anmoder om at blive givet ved installation. Hvis brugeren accepterer, installeres appen med de anmodede ikke-runtime-tilladelser. OEM'er kan også tilpasse Package Manager: For eksempel Package Manager i den kinesiske version af Huaweis EMUI 5 har en funktion til at scanne APK'en for at afgøre, om den er sikker og kontrollere, hvilke tilladelser der er givet Før installation. Jeg har observeret dette på Honor Note 8, der kører EMUI 5 importeret fra Kina, selvom jeg er sikker på, at andre kinesiske Huawei- og Honor-enheder også har denne funktion i deres Package Managers.

Under alle omstændigheder opsummerer det forskellen mellem at installere en app fra en godkendt førstepartskilde og tredjepartskilde. Hvis du forsøger at installere en app fra Play Butik eller tilsvarende appbutik med INSTALL_PACKAGES tilladelse, vil den stille og roligt håndtere installationen helt af sig selv uden yderligere brugerindgriben, efter du er startet download. Men hvis du downloader en APK fra XDA Labs, APKMirror eller andre tredjepartskilder, vil standardpakkeinstallationsprogrammet håndtere installationen og bede brugeren om at installere den pakke. Så hvor kommer Fortnite Installer ind, og hvorfor er alt dette relevant?

En fejl i Fortnites installationsproces

Tidligere i dag Google afsløret en sårbarhed de opdagede med den første version af Fortnite Installer. Sårbarheden blev demonstreret på Exynos Samsung Galaxy S8+ (dream2lte), men påvirkede også alle andre Samsung Experience-enheder inklusive Samsung Galaxy Note 9 og Samsung Galaxy Tab S4. Sårbarheden tillader en allerede installeret ondsindet program for at drage fordel af den måde, Fortnite Installer forsøger at installere Fortnite på for første gang på Samsung Galaxy-enheder. Ved at bruge en privat API i Samsung Galaxy Apps omgår Fortnite Installer behovet for at bede brugeren via standardpakkeinstallationsprogrammet om at installere Fortnite. Det skyldes, at Galaxy Apps har den nødvendige tilladelse til at håndtere installationen lydløst. Der ville ikke være noget galt med denne tavse installationsproces, hvis den app, der stilles installeret, er den rigtige Fortnite. Men på grund af hvor Fortnite Installer gemte den downloadede APK-fil til Fortnite-spillet, var det let at udnytte.

AndroidManifestet fra Samsung Galaxy Apps viser, at Galaxy Apps har tilladelse til at installere andre apps på egen hånd, uden at standardpakkeinstallationsprogrammet.

Ifølge rapporten om Issue Tracker ville Fortnite Installer downloade Fortnite Mobile APK til /sdcard/Android/data/com.epicgames.portal/files/downloads/. Dette betragtes som "eksternt lager" på Android, da /sdcard er et symbolsk link til /data/media/CURRENT_USER og /sdcard var det navn, der blev brugt i de tidlige dage af Android, da appdata blev gemt på fysiske SD-kort. I dag er app-data normalt gemt i app-specifikke mapper i /data/data/, og hver app har kun adgang til filerne i sin egen /data/data-mappe. Således, hvis Fortnite Installer gemte den downloadede Fortnite APK i sin egen /data/data/-mappe, ville det være umuligt for enhver app uden læsetilladelser (dvs. uden root-adgang) for at vide, hvad der sker i denne mappe.

Men siden Fortnite Installer gemte den downloadede APK i eksternt lager, kunne den overvåges og overskrives af enhver app med eksternt lager læsetilladelser. Normalt skriver apps til /data/media, det "virtuelle SD-kort", når de gemmer filer, der skal tilgås af brugeren via MTP eller af andre apps. For at en app kan læse eller skrive til /data/media, skal den have READ_EXTERNAL_STORAGE og WRITE_EXTERNAL_STORAGE tilladelser henholdsvis (begge er under den samme tilladelsesgruppe og er derfor givet sammen). Før Android 4.4 KitKat anmodede de fleste apps om disse tilladelser ved installationen, fordi de ellers ikke ville være i stand til at læse eller skrive til filerne i deres pakkes udpegede eksterne lagermappe i /data/media/.../Android/. Med introduktionen af FUSE til at emulere mappetilladelser i FAT-on-sdcard-stil i Android 4.4 KitKat behøver apps ikke længere nogen tilladelser for at få adgang til filer i deres udpegede mappe i eksternt lager. Adgang til filer i en hvilken som helst anden mappe vil stadig kræve de eksterne lagertilladelser, hvilket er hvad en ondsindet app kan gøre for at kapre Fortnite-installationsprocessen.

Som vist i videoen nedenfor overvåger en ondsindet app med READ_EXTERNAL_STORAGE-tilladelsen Fortnite Installer's download-mappe i eksternt lager. Når den registrerer, at overførslen er fuldført, og fingeraftrykket er verificeret, erstatter det downloadede Fortnite-pakke med sin egen ondsindede pakke takket være WRITE_EXTERNAL_STORAGE tilladelse. Men på grund af den måde, Samsung Galaxy Apps verificerer Fortnite APK før installation (...det tjekker bare om pakkenavnet er "com.epicgames.fortnite"), det er muligt at have Galaxy Apps Installer lydløst den ondsindede pakke i baggrunden uden brugerindblanding eller meddelelse– så længe den ondsindede pakkes navn var "com.epicgames.fortnite." Endnu værre, hvis denne ondsindede pakke målrettede SDK-niveau 22 eller lavere (Android 5.1 Lollipop og tidligere), ville den automatisk tildeles alle tilladelser, der er defineret i dets manifest, fordi runtime-tilladelser kun er obligatoriske for apps, der målretter mod SDK-niveau 23 og derover (Android 6.0 Marshmallow og senere).

Men hvad ville der ske på ikke-Samsung-enheder? Nå, fordi Samsung Galaxy Apps ikke er installeret på ikke-Samsung-enheder, er den ondsindede APK installeres ikke lydløst i baggrunden. Fortnite Installer er en tredjepartsapp og skal derfor først bede brugeren om at aktivere installation fra ukendte kilder, og send derefter en anmodning til pakkeinstallationsprogrammet om at installere det falske Fortnite APK. Det vil så afhænge af, at brugeren trykker på "Installer", når han bliver spurgt, om de vil installere appen eller ej. Dette er problematisk uanset det faktum, at ikke-Samsung-telefoner ikke er i fare for, at en ondsindet app installeres stille i baggrunden. Den gennemsnitlige bruger ville ikke være desto klogere, hvis en ondsindet APK lavet med "Fortnite" i sit navn og Fortnite app-ikonet præsenteres for dem til installation.

Alligevel er der en klar forskel mellem at udnytte denne fejl på Samsung Galaxy-smartphones og ikke-Samsung-smartphones. Førstnævnte er et Man-in-the-Disk-angreb, der også udnytter en skjult system-API til lydløst at installere enhver app i baggrunden, med eventuelle tilladelser og uden behov for at narre brugeren til at tro, at de installerer en falsk Fortnite APK. Sidstnævnte er en standard Man-in-the-Disk-angreb, der også kan ske med andre apps, der gemmer APK'er eller andre vigtige data i eksterne lagermapper, som vist af de seneste Kontrolpunkt stolpe. Det er bare sådan, at dette Man-in-the-Disk-angreb takket være den skjulte Galaxy Apps API er farligere på Samsung Galaxy-enheder.

Udbedring af fejlen

Til Epic Games' ære svarede de meget hurtigt på rapporten om Google Issue Tracker og udrullede en opdatering til version 2.1.0 så hurtigt som de kunne. Rettelsen var enkel - gem bare den downloadede Fortnite APK i Fortnite Installer's interne lagermappe i /data/data i stedet for dets eksterne lagermappe i /data/media. Epic Games' ingeniør anmodede om, at fejlen blev afsløret efter 90 dage, selvom Google afviste og offentliggjorde problemet 7 dage efter, at en rettelse blev udrullet. Epic Games' administrerende direktør Tim Sweeney var ikke tilfreds med den hurtige ekspeditionstid fra den første sikkerhedsrapport til dens offentliggørelse. Han tilbød følgende udtalelse til Android Central.

Epic satte virkelig pris på Googles indsats for at udføre en dybdegående sikkerhedsrevision af Fortnite umiddelbart efter vores udgive på Android, og dele resultaterne med Epic, så vi hurtigt kunne udstede en opdatering for at rette fejlen, de opdaget.

Det var dog uansvarligt af Google at offentliggøre de tekniske detaljer om fejlen så hurtigt, mens mange installationer endnu ikke var blevet opdateret og stadig var sårbare.

En episk sikkerhedsingeniør anmodede på min opfordring Google om at udsætte offentligheden i de typiske 90 dage for at give tid til, at opdateringen kan installeres mere bredt. Google afviste. Du kan læse det hele på https://issuetracker.google.com/issues/112630336

Googles indsats for sikkerhedsanalyse er værdsat og gavner Android-platformen, men en virksomhed så stærk som Google burde øve sig mere ansvarlig afsløringstid end dette, og ikke bringe brugerne i fare i løbet af deres mod-PR-indsats mod Epics distribution af Fortnite uden for Google Play.

Jeg kan ikke tale for, hvor mange eksisterende Samsung Galaxy-enheder, der stadig har den ældre Fortnite Installer. Måske skulle Epic Games fortælle disse brugere om at opdatere deres installation ved at sende en besked i Fortnite Mobile. Firebases smarte nye In-App Messaging-funktion kunne gøre tricket. Selvom det nok ikke er en stor sag alligevel, fordi hvis en bruger med det ældre installationsprogram allerede har downloadet den legitime Fortnite, så virker ethvert MITD-angreb ikke, fordi den ondsindede APK ikke kan installeres oven på den eksisterende Fortnite installation. Under alle omstændigheder, opdagelsen af ​​denne fejl så tidligt efter Fortnites udgivelse på Android - når der stadig er så meget kontrovers om Epic Games' beslutning om at droppe Google Play— hjælper bestemt på argumentet om, at Epic Games' beslutning var skødesløs. Om det var Googles hensigt bag at offentliggøre dette problem så hurtigt, ved vi aldrig.