Fortnite Installer kan missbrukas för att tyst installera appar på Galaxy-telefoner

click fraud protection

Fortnite Mobile på Androids installationsapp kunde utnyttjas i sin första utgåva. Det kan missbrukas för att tyst installera valfri app på Samsung Galaxy-telefoner.

Lanseringen av Fortnite Mobile på Android har inte varit alltför stor, särskilt sedan dess många av de enheter som stöds verkligen kämpar för att spela spelet med acceptabla bildfrekvenser. Spelet lanserades som en Samsung Galaxy exklusiv för endast 3 dagar. Fortnite Installer var först tillgänglig på Samsung Galaxy-appar innan Epic Games tillät icke-Samsung-spelare att ladda ner och installera hela spelet från Fortnite Installer som erhållits på Epics webbplats. Kort efter att Fortnite Installer blev tillgänglig, skickade Epic Games tyst en uppdatering till installationsprogrammet. Nu vet vi varför: De lappade en Man-in-the-Disk utnyttja som gjorde det möjligt för en skadlig app installera tyst vilken app de ville ha på Samsung Galaxy-smarttelefoner. Eftersom det har funnits en viss förvirring om hur detta fel fungerar, ska vi försöka reda ut saker och ting. Först måste vi förklara grunderna för appinstallation på Android.


Appinstallationsflöde på Android-smarttelefoner

Tysta installationer från förstapartskällor

För att tyst installera en APK på Android utan att be användaren om tillåtelse måste du ha en applikation på systemnivå med INSTALL_PACKAGES tillstånd beviljat. Exempel på appar med denna behörighet inkluderar Google Play Butik på de flesta Android-enheter. Förstapartsappbutiker på enheter från Samsung, Huawei och andra enhetstillverkare kan också ha INSTALL_PACKAGES-tillståndet beviljat. Om du vill installera en app från Google Play Butik kommer den att hantera nedladdningen och installera den automatiskt appen åt dig utan ytterligare ingrepp efter att du tryckt på "Installera". (T och med Google Play Butik automatiskt ger vissa körtidsbehörigheter som den för överlägg, medan appar som installeras utanför Play Butik måste be användaren att ge dessa behörigheter.)

Om du är nyfiken på om en app på din enhet har INSTALL_PACKAGES-behörigheten kan du ta reda på det via ett ADB-kommando.

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

Till exempel är Google Play Butiks paketnamn "com.android.vending". En annan app med denna behörighet är Shell med paketnamnet com.android.shell. För er som använder rotlöst substrat via Andromeda-plugin på Android Oreo håller Andromeda-skriptet som körs från din PC skalprocessen igång så att Substratum kan använda den för att installera paket (temaöverläggen) och sedan använda OverlayManager-kommandon för att aktivera överläggen.

Sidladdar appar från tredjepartskällor

Om du försöker ladda ner och installera en app utanför en appbutik från första part, måste du först aktivera okända installationskällor. Detta låter Package Manager Service inom Android-ramverket (som har INSTALL_PACKAGES-tillståndet) vet att du erkänner riskerna med sidladdning av appar från tredjepartskällor. På pre-Android Oreo-enheter finns det en enda växling i säkerhetsinställningarna för att tillåta installation från okända källor. På Android Oreo och senare versioner, måste en app som kräver installation av en APK deklarera REQUEST_INSTALL_PACKAGES behörighet och användaren måste vitlista den appen så att den kan begära appinstallationer via pakethanteraren. Eftersom REQUEST_INSTALL_PACKAGES är en "appop"-behörighet, gör det den till en av behörigheterna som kan styras från Inställningars behörighetshanterare eller via cmd appops skal kommando.

När installation från okända källor har aktiverats, antingen globalt eller specifikt för en begärande applikation, kan användaren sidladda en app. Pakethanteraren tillåter dock inte att appen installeras tyst. Snarare kommer det att fråga användaren om de vill installera appen och lista eventuella känsliga behörigheter som den begär att beviljas vid installation. Om användaren accepterar, installeras appen med de begärda icke-körningsbehörigheterna. OEM-tillverkare kan också anpassa pakethanteraren: Till exempel pakethanteraren i den kinesiska versionen av Huaweis EMUI 5 har en funktion för att skanna APK för att avgöra om den är säker och kontrollera vilka behörigheter som är beviljas innan installation. Jag har observerat detta på Honor Note 8 som kör EMUI 5 importerad från Kina, även om jag är säker på att andra kinesiska Huawei- och Honor-enheter också har den här funktionen i sina pakethanterare.

I vilket fall som helst sammanfattar det ungefär skillnaden mellan att installera en app från en godkänd förstapartskälla och tredjepartskälla. Om du försöker installera en app från Play Butik eller motsvarande appbutik med INSTALL_PACKAGES tillstånd, kommer den att hantera installationen helt på egen hand utan ytterligare användaringripande efter att du har startat nedladdningen. Men om du laddar ner en APK från XDA Labs, APKMirror eller andra tredjepartskällor, kommer standardpaketinstallationsprogrammet att hantera installationen och uppmana användaren att installera det paketet. Så var kommer Fortnite Installer in och varför är allt detta relevant?

Ett fel i Fortnites installationsprocess

Tidigare idag, Google avslöjat en sårbarhet de upptäckte med den första versionen av Fortnite Installer. Sårbarheten demonstrerades på Exynos Samsung Galaxy S8+ (dream2lte) men påverkade också alla andra Samsung Experience-enheter inklusive Samsung Galaxy Note 9 och Samsung Galaxy Tab S4. Sårbarheten tillåter en redan installerat skadligt program för att dra fördel av hur Fortnite Installer försöker installera Fortnite för första gången på Samsung Galaxy-enheter. Genom att använda ett privat API i Samsung Galaxy Apps förbigår Fortnite Installer behovet av att uppmana användaren via standardpaketinstallationsprogrammet att installera Fortnite. Det beror på att Galaxy Apps har den behörighet den behöver för att hantera installationen tyst. Det skulle inte vara något fel med den här tysta installationsprocessen om appen som installeras tyst är den riktiga Fortnite. Men på grund av var Fortnite Installer lagrade den nedladdade APK-filen för Fortnite-spelet, var det lätt att utnyttja.

AndroidManifest från Samsung Galaxy Apps visar att Galaxy Apps har tillstånd att installera andra appar på egen hand, utan att gå förbi standardpaketinstallationsprogrammet.

Enligt rapporten om Issue Tracker skulle Fortnite Installer ladda ner Fortnite Mobile APK till /sdcard/Android/data/com.epicgames.portal/files/downloads/. Detta anses vara "extern lagring" på Android eftersom /sdcard är en symbolisk länk till /data/media/CURRENT_USER och /sdcard var namnet som användes i Androids tidiga dagar när appdata var lagras på fysiska SD-kort. Nuförtiden lagras appdata vanligtvis i appspecifika kataloger i /data/data/, och varje app har bara tillgång till filerna i sin egen /data/data-katalog. Således, om Fortnite Installer lagrade den nedladdade Fortnite APK-filen i sin egen /data/data/-katalog, skulle det vara omöjligt för någon app utan läsbehörighet (dvs. utan root-åtkomst) för att veta vad som händer i den här katalogen.

Men sedan Fortnite Installer sparade den nedladdade APK-filen i extern lagring, kan den övervakas och skrivas över av alla appar med läsbehörighet för extern lagring. Normalt skriver appar till /data/media, det "virtuella SD-kortet", när de lagrar filer som användaren behöver komma åt via MTP eller andra appar. För att en app ska kunna läsa eller skriva till /data/media måste den ha READ_EXTERNAL_STORAGE och WRITE_EXTERNAL_STORAGE behörigheter respektive (båda är under samma behörighetsgrupp och är därför beviljas tillsammans). Före Android 4.4 KitKat begärde de flesta appar dessa behörigheter vid installationen eftersom de annars inte skulle vara kunna läsa eller skriva till filerna i paketets angivna externa lagringskatalog i /data/media/.../Android/. Med införandet av FUSE för att emulera katalogbehörigheter i FAT-on-sdcard-stil i Android 4.4 KitKat behöver appar inte längre några behörigheter för att komma åt filer i deras utsedda katalog i extern lagring. Att komma åt filer i någon annan katalog skulle fortfarande behöva de externa lagringsbehörigheterna, vilket är vad en skadlig app kan göra för att kapa Fortnite-installationsprocessen.

Som visas i videon nedan övervakar en skadlig app med behörigheten READ_EXTERNAL_STORAGE Fortnite Installer: s nedladdningskatalog i extern lagring. När den upptäcker att nedladdningen är klar och fingeravtrycket har verifierats, ersätter det laddade ner Fortnite-paketet med sitt eget skadliga paket tack vare WRITE_EXTERNAL_STORAGE lov. Men på grund av hur Samsung Galaxy Apps verifierar Fortnite APK före installationen (...det kollar bara om paketnamnet är "com.epicgames.fortnite"), det är möjligt att ha Galaxy Appar installera det skadliga paketet tyst i bakgrunden utan användaringripande eller meddelande– så länge som det skadliga paketets namn var "com.epicgames.fortnite." Ännu värre, om detta skadliga paket riktade in sig på SDK-nivå 22 eller lägre (Android 5.1 Lollipop och tidigare), skulle det automatiskt beviljas alla behörigheter som definieras i manifestet eftersom körtidsbehörigheter endast är obligatoriska för appar som är inriktade på SDK-nivå 23 och högre (Android 6.0 Marshmallow och senare).

Men vad skulle hända på icke-Samsung-enheter? Tja, eftersom Samsung Galaxy Apps inte är installerad på icke-Samsung-enheter, den skadliga APK-filen kommer inte att installeras tyst i bakgrunden. Fortnite Installer är en tredjepartsapp och måste därför först uppmana användaren att aktivera installation från okända källor och skicka sedan en förfrågan till paketinstallationsprogrammet om att installera det falska Fortnite APK. Det skulle då bero på användaren att trycka på "Installera" när han tillfrågas om de vill installera appen eller inte. Detta är problematiskt oavsett det faktum att icke-Samsung-telefoner inte riskerar att en skadlig app installeras tyst i bakgrunden. Den genomsnittliga användaren skulle inte bli klokare om en skadlig APK skapad med "Fortnite" i sitt namn och Fortnite-appikonen presenteras för dem för installation.

Ändå finns det en tydlig skillnad mellan att utnyttja detta fel på Samsung Galaxy-smarttelefoner och icke-Samsung-smarttelefoner. Den förra är en Man-in-the-Disk-attack som också drar fördel av ett dold system-API för att tyst installera valfri app i bakgrunden, med eventuella behörigheter och utan att behöva lura användaren att tro att de installerar en falsk Fortnite APK. Den senare är en standard Man-in-the-Disk-attack som också kan hända med andra appar som sparar APK-filer eller annan viktig data i externa lagringskataloger, vilket framgår av den senaste tiden Kontrollstation posta. Det råkar vara så att, tack vare det dolda Galaxy Apps API, är denna Man-in-the-Disk-attack farligare på Samsung Galaxy-enheter.

Åtgärda felet

Till Epic Games förtjänst svarade de mycket snabbt på rapporten om Google Issue Tracker och rullade ut en uppdatering till version 2.1.0 så snabbt de kunde. Fixningen var enkel - spara bara den nedladdade Fortnite APK-filen till Fortnite Installer: s interna lagringskatalog i /data/data snarare än dess externa lagringskatalog i /data/media. Epic Games ingenjör begärde att felet skulle avslöjas efter 90 dagar, även om Google avböjde och offentliggjorde problemet 7 dagar efter att en korrigering rullades ut. Epic Games vd Tim Sweeney var inte nöjd med den snabba handläggningstiden från den första säkerhetsrapporten till dess avslöjande. Han erbjöd följande uttalande till Android Central.

Epic uppskattade verkligen Googles ansträngning att utföra en djupgående säkerhetsgranskning av Fortnite omedelbart efter vår släppa på Android och dela resultaten med Epic så att vi snabbt kan utfärda en uppdatering för att åtgärda felet de upptäckt.

Det var dock oansvarigt av Google att offentligt avslöja de tekniska detaljerna om felet så snabbt, medan många installationer ännu inte hade uppdaterats och fortfarande var sårbara.

En episk säkerhetsingenjör, på min uppmaning, begärde att Google skulle skjuta upp offentliggörandet under de typiska 90 dagarna för att ge tid för uppdateringen att installeras mer allmänt. Google vägrade. Du kan läsa allt på https://issuetracker.google.com/issues/112630336

Googles ansträngningar för säkerhetsanalys uppskattas och gynnar Android-plattformen, men ett så kraftfullt företag som Google borde öva mer ansvarsfull tidpunkt för avslöjande än så här, och inte äventyra användarna under sina kontra-PR-insatser mot Epics distribution av Fortnite utanför Google Play.

Jag kan inte tala om hur många befintliga Samsung Galaxy-enheter som fortfarande har den äldre Fortnite Installer. Epic Games kanske borde berätta för dessa användare att uppdatera sin installation genom att skicka ett meddelande i Fortnite Mobile. Firebases snygga nya meddelandefunktion i appen kunde göra susen. Även om det förmodligen inte är en stor sak ändå, för om en användare med det äldre installationsprogrammet redan har laddat ner det legitima Fortnite, då kommer alla MITD-attacker inte att fungera eftersom den skadliga APK-filen inte kan installeras ovanpå den befintliga Fortnite installation. Hur som helst, upptäckten av denna brist så tidigt efter Fortnites release på Android – när det fortfarande finns så mycket kontrovers om Epic Games' beslut att lägga ner Google Play— hjälper verkligen argumentet att Epic Games beslut var slarvigt. Om det var Googles avsikt bakom att publicera den här frågan så snabbt kommer vi aldrig att veta.