ProcGate – Oder: wie die Root-Detection eines Spiels zur Entdeckung einer Sicherheitslücke führte.

Das Android-Betriebssystem wird jeden Monat auf über 2 Milliarden Geräten von Verbrauchern und Technikbegeisterten genutzt. Obwohl die Anzahl der Personen, die den Bootloader entsperren und ihre Smartphones rooten, im Vergleich zur Gesamtpopulation der Android-Nutzer relativ klein ist, gibt es immer noch viele von uns in Foren wie XDA und Reddit. Magisk ist dabei ein unverzichtbares Werkzeug für die Bastlergemeinde. Es bietet einen systemlosen Root-Zugriff und verfügt über Tools wie MagiskHide, mit denen Root-User die Anwendungen, Spiele und Dienste, die sie nutzen, ohne Einschränkungen weiter nutzen können.

Ein beliebtes Anime-Spiel hat nun jedoch eine Sicherheitslücke des Android Systems geschickt missbraucht, um die Anti-Root-Erkennung von Magisk zu umgehen. Wie das funktioniert, und welche Geräte von dieser Sicherheitslücke betroffen sind, erfahrt Ihr hier. Wenn das Gerät gerootet ist, hindert das Spiel die Ausführung, und hält damit den Benutzer vom Spielen ab.

Der ausgenutzte Fehler ermöglicht es dabei einer beliebigen App, den Status anderer Apps im Speicher zu lesen, ohne hierzu spezielle Berechtigungen zu benötigen. Der Fehler erlaubt es Apps jedoch nicht, auch Daten von anderen Apps zu stehlen. Der Fehler ist also nicht schwerwiegend, sondern vielmehr ziemlich harmlos. Google ist sich des Problems bereits bewusst und hat seine Compatibility Test Suite (CTS) ebenfalls bereits aktualisiert, um sicherzustellen, dass alle Geräte geschützt sind.

Hintergrund

Das beliebte Anime-Spiel namens Fate/Grand Order hindert – erkennt es einen Root-User – die Ausführung, und hält damit den Benutzer vom Spielen ab. XDA Recognized Developer topjohnwu, der leitende Entwickler von Magisk, hatte zuvor einen Weg gefunden, die Root-Erkennung von Fate/Grand Order zu umgehen, aber seine Lösung arbeitete trotz aller Bemühungen nicht an seinem OnePlus 6. Der Entwickler war aber entschlossen, nicht aufzugeben und analysierte daher die App Fate/Grand Order genauer, um herauszufinden, wie Sie Root noch immer auf seinem OnePlus-Gerät erkennen konnte. Wie er in einem Post erklärt, führte dies zur Entdeckung einer Sicherheitsschwachstelle, die Fate/Grand Order scheinbar missbraucht hat, um den Root-Zugriff auf OnePlus-Geräten auch weiterhin zu erkennen.

Prozesse und Android

Auf Unix-basierten Betriebssystemen gibt es ein spezielles Dateisystem namens „procfs“, das Informationen über Prozesse (Think Apps) enthält, wie z.B. deren Speicherverbrauch (Think RAM), Status (ob der Prozess läuft, Sleeping, etc.). Auf den meisten Unix-basierten Betriebssystemen haben der Benutzer und die Apps einfachen Zugriff auf procfs, um zu sehen, welche Arten von Apps und Diensten auf ihrem System ausgeführt werden – denkt beispielsweise an den Window’s Task Manager. Allerdings begann Google, den Zugriff auf procfs ab Android 7.0 Nougat zu sperren. Vor Android Nougat konnten Apps wie das SystemPanel ohne besondere Berechtigungen Daten darüber sammeln, welche Apps ausgeführt wurden. Nach Android Nougat hingegen müssen Apps APIs wie UsageStats oder AccessibilityService verwenden, die beide durch Berechtigungen gesteuert werden, die vom Benutzer vergeben werden müssen.

Google verhindert, dass Apps den Status anderer Apps über procfs lesen, indem sie /proc mit dem Flag „hidepid=2“ mounten. Durch das Mounten von Prozessen mit hidepid=2 können Apps nur den Status ihres eigenen Prozesses sehen. Daher müsste eine App die akzeptierten APIs wie UsageStats oder AccessibilityService verwenden, um Informationen darüber zu erhalten, welche Apps und Dienste auf dem Gerät ausgeführt werden.

Die Schwachstelle

Was aber nun, wenn procfs nicht mit hidepid=2 eingebunden ist? Nun, dann wären Apps frei in der Lage, den Status anderer Apps – und auch deren Mount-Points – zu lesen, die auf dem System laufen, ohne zusätzliche Berechtigungen* zu benötigen. Google mounted procfs auf eigenen Geräten mit hidepid=2, aber setzt diese Anforderung nicht auf Geräten anderer Hersteller durch. Mehrere Geräte von LG, OnePlus, Huawei/Honor, Xiaomi und anderen haben keine procfs mit hidepid=2 installiert, was Anwendungen wie Fate/Grand Order ausnutzen, um festzustellen, ob Magisk auf dem Gerät vorhanden ist.


*Eine Sicherheitsänderung in Android 9 Pie verhindert, dass Apps Informationen außerhalb ihres eigenen „SELinux-Kontextes“ lesen, da nun jede App einzeln isoliert wird. SELinux ist ein Kernelmodul, das als Gatekeeper fungiert und Anwendungen und Dienste daran hindert, auf Dateien zuzugreifen, auf die sie nicht zugreifen sollen. Ein SELinux-Kontext ist wie ein Label für eine Datei, die Informationen wie Benutzer und Rolle enthält. Apps mit dem gleichen SELinux-Kontext können Informationen über andere Apps im gleichen Kontext lesen, wenn das Flag hidepid=2 für procfs nicht aktiviert ist. Auf Geräten, auf denen Android 9 Pie läuft, werden nur Apps, die auf Android Pie ausgerichtet sind, die neuen SELinux-Änderungen von Android Pie auf sie anwenden. Apps, die Android 8.1 Oreo oder darunter ansprechen, verwenden die alten SELinux-Regeln, so dass sie auf Informationen über Prozesse im gleichen SELinux-Kontext zugreifen können, solange procfs ohne hidepid=2 eingebunden ist. Die meisten Apps, die auf Ihrem Gerät laufen, sollten dank der neuen Google Play-Anforderungen zumindest auf Android 8.0 Oreo ausgerichtet sein, aber viele werden noch nicht auf Android Pie aktualisiert worden sein.


procfs-leak-Google-Pixel-3-XL-2-1024x259
procfs mounted mit hidepid=2 (Google Pixel 3 XL)
procfs-leak-Huawei-Mate-20-X-2-1024x151
procfs NICHT mounted mit hidepid=2 (Huawei Mate 20X)

Die folgenden Screenshots zeigen die Folgen, wenn Prozesse nicht mit hidepid=2 eingebunden sind.

procfs-leak-Google-Pixel-3-XL-3-1024x259
Die App „Material Terminal“ kann nur ihre eigenen Prozesse sehen (Google Pixel 3 XL)
procfs-leak-Huawei-Mate-20-X-3-1024x266
Die „Material Terminal“ App kann andere Prozesse sehen (Huawei Mate 20 X)

Wie schlimm ist das?

Wenn wir diese Systemanfälligkeit mit Exploits wie Fusée Gelée, Blueborne, KRACK und Meltdown/Spectre vergleichen würden, dann verblasst dieser Bug im Vergleich dazu. Apps können den hier beschriebenen Bug nicht verwenden, um Root-Zugriff zu erhalten Eure Passwörter, oder mehr zu stehlen. Eure Bankkonten – oder präziser banking Apps –  sind also sicher, ebenso wie Eure Kreditkarten-Daten. Das Schlimmste, was eine App tun kann, ist zu erkennen, ob eine andere App auf Eurem Gerät läuft, was nur sehr eingeschränkt möglich ist. Denkt immer daran, dass eben diese Funktionalität in vielen GNU/Linux-Distributionen Standard ist und dass Google erst kürzlich damit begonnen hat, den Zugriff auf diese Protokolle zu blockieren. Der Fehler ermöglicht es Apps zwar, bestimmte Berechtigungen zur Überwachung anderer Prozesse zu umgehen, aber sie können immer noch nicht die Sandbox von Android knacken und Daten von anderen Apps stehlen. Unabhängig davon ist dies unbeabsichtigtes Verhalten und bricht eine Datenschutzfunktion von Android, so dass sie behoben werden sollte.

Ist mein Gerät betroffen?

Hier ist eine Liste von Geräten, bei denen wir festgestellt haben, dass sie keine procfs mit hidepid=2 einbinden:

OEM Device Android Version procfs Leaks
Asus ZenFone 5Z Android 8.0 Oreo Ja
BlackBerry KEY2 Android 8.0 Oreo Nein
Essential PH-1 Android 9 Pie Nein
Google Pixel 2 Android 9 Pie Nein
Google Pixel 3 Android 9 Pie Nein
Google Pixel 3 XL Android 9 Pie Nein
Honor Magic 2 Android 9 Pie Ja
HTC U12+ Android 8.0 Oreo Ja
Huawei Mate 20 X Android 9 Pie Ja
LG G7 ThinQ Android 8.0 Oreo Ja
LG V40 ThinQ Android 8.1 Oreo Ja
Motorola Moto G4 Android 8.1 Oreo Nein
Nokia 7.1 Android 8.1 Oreo Nein
OnePlus 6 Android 8.1 Oreo/Android 9 Pie Ja
OnePlus 6T Android 9 Pie Ja
Razer Phone 2 Android 8.1 Oreo Ja
Samsung Galaxy Note 8 Android 8.0 Oreo Nein
Samsung Galaxy Note 9 Android 8.1 Oreo/Android 9 Pie Nein
Samsung Galaxy S7 Android 8.0 Oreo Nein
Samsung Galaxy S8 Android 8.0 Oreo Nein
Samsung Galaxy S9 Android 9 Pie No
Samsung Galaxy S9+ (Exynos) Android 8.0 Oreo Yes
Sony Xperia XZ1 Android 9 Pie No
Xiaomi Mi Mix 2S Android 9 Pie Yes
Xiaomi POCO F1 Android 8.1 Oreo Yes

So überprüft Ihr, ob Euer Gerät betroffen ist

Es ist ziemlich einfach zu überprüfen, ob Euer Gerät Prozessinformationen an andere Anwendungen weitergibt – mit anderen Worten, procfs wird nicht mit hidepid=2 eingebunden. Während Ihr einfache Shell-Befehle wie ich zum Testen verwenden könnt, könnt Ihr dies auch mit einer von topjohnwu entwickelten App überprüfen. Seine App erlaubt es Euch auch, Prozesse mit hidepid=2 wieder einzubinden, wenn Dein Smartphone gerootet ist.

ProcGate Download

Wird es einen Fix geben?

Ja, das wird behoben werden. Google wird künftg verlangen, dass alle Geräte Prozesse mit hidepid=2 einbinden. Sie werden dies durchsetzen, indem sie die Compatibility Test Suite (CTS) aktualisieren, eine Reihe von Tests, die alle Geräte bestehen müssen, um Google Play-Anwendungen und -Dienste nutzen zu können/dürfen. Alle OEMs, die Geräte mit vorinstalliertem Google Play Store verkaufen wollen, müssen schließlich ein Update herausgeben, um die Prozesse in naher Zukunft mit hidepid=2 auszuführen. Da dieses Problem als erstes auf OnePlus-Geräten entdeckt wurde, wurde OnePlus bereits darauf aufmerksam gemacht und arbeitet an einer Lösung. Es besteht kein Grund zur Annahme, dass der OEM Eures Geräts kein Update herausgibt. Wenn die OEM wollen, dass ihr Update den CTS durchläuft, dann müssen sie diesen Fehler zwangsläufig beheben.

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Create a website or blog at WordPress.com

Nach oben ↑

%d Bloggern gefällt das: