Fortnite Installer könnte dazu missbraucht werden, Apps unbemerkt auf Galaxy-Telefonen zu installieren

Die Installations-App von Fortnite Mobile auf Android war in ihrer ersten Version ausnutzbar. Es könnte missbraucht werden, um jede App stillschweigend auf Samsung Galaxy-Handys zu installieren.

Der Start von Fortnite Mobile auf Android war nicht gerade großartig, insbesondere seitdem viele der unterstützten Geräte Wirklich Ich habe Schwierigkeiten, das Spiel mit akzeptablen Bildraten zu spielen. Das Spiel wurde als gestartet Samsung Galaxy exklusiv für nur 3 Tage. Der Fortnite-Installer war erstmals auf verfügbar Samsung Galaxy-Apps bevor Epic Games Nicht-Samsung-Spielern erlaubte, das vollständige Spiel über den Fortnite-Installer herunterzuladen und zu installieren, der auf der Epic-Website erhältlich war. Kurz nachdem der Fortnite-Installer verfügbar wurde, veröffentlichte Epic Games stillschweigend ein Update für den Installer. Jetzt wissen wir warum: Sie haben a gepatcht Man-in-the-Disk Exploit, der es einer bösartigen App ermöglicht hat stillschweigend installieren jede App, die sie wollten

auf Samsung Galaxy-Smartphones. Da es einige Verwirrung darüber gab, wie dieser Fehler funktioniert, werden wir versuchen, die Sache zu klären. Zunächst müssen wir die Grundlagen der App-Installation auf Android erklären.


App-Installationsablauf auf Android-Smartphones

Stille Installationen von Erstanbieterquellen

Um ein APK stillschweigend auf Android zu installieren, ohne den Benutzer um Erlaubnis zu bitten, benötigen Sie eine Anwendung auf Systemebene mit dem INSTALL_PACKAGES Erlaubnis erteilt. Beispiele für Anwendungen mit dieser Berechtigung sind der Google Play Store auf den meisten Android-Geräten. Erstanbieter-App-Stores auf Geräten von Samsung, Huawei und anderen Geräteherstellern verfügen möglicherweise auch über die Berechtigung INSTALL_PACKAGES. Wenn Sie eine App aus dem Google Play Store installieren möchten, übernimmt dieser den Download und die Installation automatisch Nachdem Sie auf „Installieren“ geklickt haben, installieren Sie die App ohne weiteren Eingriff für Sie. (Sogar der Google Play Store automatisch gewährt bestimmte Laufzeitberechtigungen wie zum Beispiel das für Überlagerungen, wohingegen Apps, die von außerhalb des Play Store installiert werden, den Benutzer um die Erteilung dieser Berechtigungen bitten müssen.)

Wenn Sie neugierig sind, ob eine App auf Ihrem Gerät über die Berechtigung INSTALL_PACKAGES verfügt, können Sie dies über einen ADB-Befehl herausfinden.

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

Der Paketname des Google Play Store lautet beispielsweise „com.android.vending". Eine weitere App mit dieser Berechtigung ist Shell mit dem Paketnamen com.android.shell. Für diejenigen unter Ihnen, die es verwenden rootless Substratum über das Andromeda-Plug-in Unter Android Oreo hält das von Ihrem PC ausgeführte Andromeda-Skript den Shell-Prozess am Laufen, sodass Substratum damit Pakete (die Theme-Overlays) installieren und dann verwenden kann OverlayManager-Befehle um die Overlays zu aktivieren.

Seitenladen von Apps aus Drittquellen

Wenn Sie versuchen, eine App von außerhalb eines App-Stores eines Erstanbieters herunterzuladen und zu installieren, müssen Sie zunächst unbekannte Installationsquellen aktivieren. Dies lässt die Paketmanagerdienst innerhalb des Android-Frameworks (das über die INSTALL_PACKAGES-Berechtigung verfügt) wissen, dass Sie die Risiken des Seitenladens von Apps von Drittanbieterquellen anerkennen. Auf Geräten vor Android Oreo gibt es in den Sicherheitseinstellungen einen einzigen Schalter, um die Installation von unbekannten Quellen zu ermöglichen. Auf Android Oreo und späteren Versionen, muss eine App, die die Installation eines APK aufruft, das deklarieren REQUEST_INSTALL_PACKAGES Berechtigung und der Benutzer muss diese App auf die Whitelist setzen, damit sie App-Installationen über den Paketmanagerdienst anfordern kann. Da es sich bei REQUEST_INSTALL_PACKAGES um eine „appop“-Berechtigung handelt, ist sie eine der Berechtigungen, die im Berechtigungsmanager der Einstellungen oder über den gesteuert werden können cmd appops Shell-Befehl.

Sobald die Installation aus unbekannten Quellen entweder global oder speziell für eine anfordernde Anwendung aktiviert ist, kann der Benutzer eine App seitlich laden. Der Paketmanager lässt jedoch nicht zu, dass die App unbeaufsichtigt installiert wird. Vielmehr wird der Benutzer gefragt, ob er die App installieren möchte, und alle vertraulichen Berechtigungen aufgelistet, deren Gewährung bei der Installation angefordert wird. Wenn der Benutzer zustimmt, wird die App mit den angeforderten Nicht-Laufzeitberechtigungen installiert. OEMs können den Paketmanager auch anpassen: Zum Beispiel den Paketmanager in der chinesischen Version von EMUI 5 von Huawei verfügt über eine Funktion zum Scannen des APK, um zu entscheiden, ob es sicher ist, und um die Berechtigungen zu steuern gewährt Vor Installation. Ich habe dies auf dem Honor Note 8 beobachtet, auf dem EMUI 5 aus China importiert wurde, obwohl ich sicher bin, dass auch andere chinesische Huawei- und Honor-Geräte diese Funktion in ihren Paketmanagern haben.

Dies fasst auf jeden Fall den Unterschied zwischen der Installation einer App von einer genehmigten Erstanbieterquelle und einer Drittanbieterquelle zusammen. Wenn Sie versuchen, eine App aus dem Play Store oder einem gleichwertigen App Store mit INSTALL_PACKAGES Wenn Sie die entsprechende Berechtigung haben, wird die Installation nach dem Start automatisch und ohne weiteren Benutzereingriff durchgeführt der Download. Wenn Sie jedoch ein APK von XDA Labs, APKMirror oder anderen Drittanbieterquellen herunterladen, übernimmt das Standardpaketinstallationsprogramm die Installation und fordert den Benutzer auf, dieses Paket zu installieren. Wo kommt also der Fortnite-Installer ins Spiel und warum ist das alles relevant?

Ein Fehler im Installationsprozess von Fortnite

Heute früh, Google eine Schwachstelle offengelegt Sie haben es mit der ersten Version des Fortnite Installers entdeckt. Die Schwachstelle wurde auf dem Exynos Samsung Galaxy S8+ (dream2lte) nachgewiesen, betraf aber auch alle anderen Samsung Experience-Geräte, einschließlich des Samsung Galaxy Note 9 und des Samsung Galaxy Tab S4. Die Sicherheitslücke ermöglicht eine bereits installierte Schadanwendung um die Art und Weise auszunutzen, wie der Fortnite-Installer versucht, Fortnite zu installieren zum ersten Mal auf Samsung Galaxy-Geräten. Durch die Verwendung einer privaten API in Samsung Galaxy Apps umgeht der Fortnite-Installer die Notwendigkeit, den Benutzer über den Standardpaket-Installer zur Installation von Fortnite aufzufordern. Das liegt daran, dass Galaxy Apps über die erforderliche Berechtigung verfügt, um die Installation stillschweigend durchzuführen. An diesem unbeaufsichtigten Installationsprozess wäre nichts auszusetzen, wenn es sich bei der unbeaufsichtigt installierten App um das echte Fortnite handelt. Da der Fortnite-Installer die heruntergeladene APK-Datei für das Fortnite-Spiel jedoch dort gespeichert hat, war sie leicht auszunutzen.

Das AndroidManifest von Samsung Galaxy Apps zeigt, dass Galaxy Apps die Berechtigung hat, andere Apps selbst zu installieren und dabei das Standardpaketinstallationsprogramm zu umgehen.

Laut dem Bericht des Issue Tracker würde der Fortnite Installer die Fortnite Mobile APK herunterladen /sdcard/Android/data/com.epicgames.portal/files/downloads/. Dies wird unter Android als „externer Speicher“ betrachtet, da /sdcard ein symbolischer Link zu ist /data/media/CURRENT_USER und /sdcard war der Name, der in den frühen Tagen von Android verwendet wurde, als es App-Daten gab auf physischen SD-Karten gespeichert. Heutzutage werden App-Daten normalerweise in App-spezifischen Verzeichnissen in /data/data/ gespeichert und jede App hat nur Zugriff auf die Dateien in ihrem eigenen /data/data-Verzeichnis. Wenn also der Fortnite-Installer die heruntergeladene Fortnite-APK in seinem eigenen /data/data/-Verzeichnis speichern würde, wäre es für jede App ohne Leseberechtigungen (d. h. ohne Root-Zugriff), um zu erfahren, was in diesem Verzeichnis passiert.

Da jedoch der Fortnite Installer hat die heruntergeladene APK im externen Speicher gespeichert, könnte es von überwacht und überschrieben werden jede App mit Leseberechtigungen für externen Speicher. Normalerweise schreiben Apps auf /data/media, die „virtuelle SD-Karte“, wenn sie Dateien speichern, auf die der Benutzer über MTP oder andere Apps zugreifen muss. Damit eine App in /data/media lesen oder schreiben kann, muss sie über READ_EXTERNAL_STORAGE und verfügen WRITE_EXTERNAL_STORAGE-Berechtigungen (beide gehören zur gleichen Berechtigungsgruppe und sind daher gemeinsam gewährt). Vor Android 4.4 KitKat forderten die meisten Apps diese Berechtigungen bei der Installation an, da dies andernfalls nicht der Fall wäre in der Lage, die Dateien im angegebenen externen Speicherverzeichnis ihres Pakets zu lesen oder in sie zu schreiben /data/media/.../Android/. Mit der Einführung von FUSE zum Emulieren von Verzeichnisberechtigungen im FAT-on-SD-Card-Stil In Android 4.4 KitKat benötigen Apps keine Berechtigungen mehr, um auf Dateien in ihrem zugewiesenen Verzeichnis im externen Speicher zuzugreifen. Für den Zugriff auf Dateien in einem anderen Verzeichnis wären weiterhin externe Speicherberechtigungen erforderlich, was eine bösartige App tun kann, um den Fortnite-Installationsprozess zu kapern.

Wie im Video unten gezeigt, überwacht eine bösartige App mit der Berechtigung READ_EXTERNAL_STORAGE das Download-Verzeichnis des Fortnite-Installationsprogramms im externen Speicher. Wenn festgestellt wird, dass der Download abgeschlossen ist und der Fingerabdruck überprüft wurde, wird der Fingerabdruck ersetzt hat das Fortnite-Paket dank WRITE_EXTERNAL_STORAGE mit seinem eigenen Schadpaket heruntergeladen Erlaubnis. Allerdings aufgrund der Art und Weise, wie Samsung Galaxy Apps das Fortnite APK vor der Installation überprüft (...es prüft nur, ob der Paketname „com.epicgames.fortnite“ ist), es ist möglich, Galaxy zu haben Apps Installieren Sie das Schadpaket stillschweigend im Hintergrund, ohne dass der Benutzer eingreifen oder benachrichtigt werden muss– solange der Name des Schadpakets „com.epicgames.fortnite“ lautete. Schlimmer noch: Wenn dieses Schadpaket auf SDK-Level 22 oder niedriger (Android 5.1 Lollipop und früher) abzielen würde, wäre dies der Fall automatisch alle in seinem Manifest definierten Berechtigungen gewährt, da Laufzeitberechtigungen nur für Apps obligatorisch sind, die auf SDK-Level 23 und höher abzielen (Android 6.0 Marshmallow und später).

Aber was würde auf Nicht-Samsung-Geräten passieren? Nun, weil Samsung Galaxy Apps nicht auf Nicht-Samsung-Geräten installiert ist, ist die bösartige APK wird nicht unbemerkt im Hintergrund installiert. Fortnite Installer ist eine Drittanbieter-App und muss den Benutzer daher zunächst zur Aktivierung auffordern Installation aus unbekannten Quellen und senden Sie dann eine Anfrage an den Paketinstaller, um die Fälschung zu installieren Fortnite APK. Es hängt dann davon ab, dass der Benutzer auf „Installieren“ tippt, wenn er gefragt wird, ob er die App installieren möchte oder nicht. Dies ist problematisch, auch wenn auf Mobiltelefonen anderer Hersteller kein Risiko besteht, dass im Hintergrund eine schädliche App installiert wird. Der durchschnittliche Benutzer wäre nicht klüger, wenn ihm eine bösartige APK mit dem Namen „Fortnite“ und dem Fortnite-App-Symbol zur Installation vorgelegt würde.

Dennoch gibt es einen klaren Unterschied zwischen der Ausnutzung dieses Fehlers auf Samsung-Galaxy-Smartphones und Nicht-Samsung-Smartphones. Bei ersterem handelt es sich um einen Man-in-the-Disk-Angriff, der sich auch eine versteckte System-API zunutze macht, um jede App unbemerkt zu installieren im Hintergrund, mit allen Berechtigungen und ohne dass der Benutzer glauben muss, dass er ein gefälschtes Fortnite installiert APK. Letzteres ist ein Standard-Man-in-the-Disk-Angriff, der auch bei anderen Apps auftreten kann, die APKs oder andere wichtige Daten in externen Speicherverzeichnissen speichern, wie die jüngste zeigt Kontrollpunkt Post. Zufälligerweise ist dieser Man-in-the-Disk-Angriff dank der versteckten Galaxy Apps API auf Samsung Galaxy-Geräten gefährlicher.

Den Fehler beheben

Man muss Epic Games zugute halten, dass sie sehr schnell auf den Bericht im Google Issue Tracker reagierten und so schnell wie möglich ein Update auf Version 2.1.0 herausbrachten. Die Lösung war einfach: Speichern Sie einfach die heruntergeladene Fortnite-APK im internen Speicherverzeichnis des Fortnite-Installationsprogramms in /data/data und nicht im externen Speicherverzeichnis in /data/media. Der Ingenieur von Epic Games verlangte, dass der Fehler nach 90 Tagen offengelegt wird, Google lehnte jedoch ab und machte das Problem sieben Tage nach der Einführung eines Fixes öffentlich. Tim Sweeney, CEO von Epic Games, war es nicht Ich bin mit der kurzen Bearbeitungszeit vom ersten Sicherheitsbericht bis zur Veröffentlichung zufrieden. Er gab die folgende Erklärung ab Android Central.

Epic schätzte die Bemühungen von Google, unmittelbar im Anschluss daran eine umfassende Sicherheitsüberprüfung von Fortnite durchzuführen, sehr Veröffentlichung auf Android und teilen Sie die Ergebnisse mit Epic, damit wir schnell ein Update herausgeben können, um den darin enthaltenen Fehler zu beheben entdeckt.

Allerdings war es unverantwortlich von Google, die technischen Details des Fehlers so schnell öffentlich bekannt zu geben, während viele Installationen noch nicht aktualisiert und noch angreifbar waren.

Auf mein Drängen hin forderte ein Epic-Sicherheitsingenieur Google auf, die Veröffentlichung um die üblichen 90 Tage zu verschieben, um Zeit für eine umfassendere Installation des Updates zu haben. Google lehnte ab. Sie können alles unter lesen https://issuetracker.google.com/issues/112630336

Die Sicherheitsanalysebemühungen von Google werden geschätzt und kommen der Android-Plattform zugute, ein so mächtiges Unternehmen wie Google sollte jedoch mehr praktizieren Verantwortlicher Zeitpunkt für Offenlegung als dieser, und Benutzer im Zuge seiner Gegen-PR-Bemühungen gegen die Verbreitung von Fortnite außerhalb von Epic nicht gefährden Google Play.

Ich kann nicht sagen, wie viele Samsung-Galaxy-Geräte noch über den älteren Fortnite-Installer verfügen. Vielleicht sollte Epic Games diese Benutzer anweisen, ihre Installation zu aktualisieren, indem sie eine Nachricht in Fortnite Mobile senden. Die raffinierte neue In-App-Messaging-Funktion von Firebase könnte es schaffen. Obwohl es wahrscheinlich sowieso keine große Sache ist, wenn ein Benutzer mit dem älteren Installationsprogramm bereits das legitime heruntergeladen hat Fortnite, dann funktioniert jeder MITD-Angriff nicht, da die bösartige APK nicht auf dem vorhandenen Fortnite installiert werden kann Installation. Auf jeden Fall ist die Entdeckung dieses Fehlers so früh nach der Veröffentlichung von Fortnite auf Android – wo es immer noch so viele Kontroversen über Epic Games gibt Entscheidung, Google Play aufzugeben– hilft sicherlich dem Argument, dass die Entscheidung von Epic Games nachlässig war. Ob das die Absicht von Google war, dieses Problem so schnell an die Öffentlichkeit zu bringen, werden wir nie erfahren.