Deformierte AndroidManifest.xml in Apps kann Mobilgerät crashen

Originalartikel von Simon Huang, Mobile Security Engineer

Android-Apps bestehen aus mehreren Komponenten, zu denen unter anderem auch eine Datei namens AndroidManifest.xml. Diese, auch Manifest-Datei genannt, enthält für Apps wichtige Informationen, die das System haben muss, bevor es den App-Code ausführen kann. Hier haben nun Bedrohungsforscher eine Schwachstelle gefunden, aufgrund derer das betroffene Gerät in eine Reboot-Endlosschleife geraten kann.

Die Sicherheitslücke in der Manifest-Datei

Die Sicherheitslücke kann den Crash des Betriebssystems auf zwei Arten bewirken. Die erste schließt sehr lange Zeichenketten und Hauptspeicherallozierung mit ein. Einige Apps können über Document Type Definition (DTD)-Technologie in ihren XML-Dateien sehr lange Zeichenketten enthalten. Wird diese Zeichenfolge einigen der Tags in AndroidManifest.xml zugewiesen (z.B. Berechtigungsname, Label, Name der Aktivität), so benötigt der Package Parser Hauptspeicher, um die XML-Datei zu parsen. Benötigt er jedoch mehr Hauptspeicher, als verfügbar ist, so crasht er. Dies wiederum stößt eine Reaktionskette an, im Rahmen derer alle laufenden Services gestoppt werden und das gesamte System neu startet.

Bei der zweiten Art geht es um APK-Dateien und einen bestimmten Intent-Filter, der deklariert, was ein Service oder eine Aktivität tun kann. Im Launcher wird ein Icon erzeugt, wenn die Manifest-Datei eine Aktivitätsdefinition mit diesem Filter enthält.

<intent-filter>

        <action android:name=”android.intent.action.MAIN”/>

        <category android:name=”android.intent.category.LAUNCHER”/>

 </intent-filter>

Werden viele Aktivitäten mit diesem Filter definiert, so wird nach der Installation auch dieselbe Anzahl von Icons auf der Homepage erzeugt. Ist die Zahl zu hoch, so stößt die APK-Datei eine Reboot-Schleife an.

Ist die Anzahl der Aktivitäten größer als 10.000:

  • In Android Version 4.4 startet der Launcher-Prozess den Reboot.
  • In Version L stürzt der PackageParser ab und rebootet.

Ist die Anzahl der Aktivitäten größer als 100.000, gerät das Device in eine Reboot-Schleife.

Testen der Sicherheitslücke, Teil 1

Die Bedrohungsforscher erzeugten eine .APK-Datei mit einer Manifest-Datei, die eine sehr lange Zeichenfolgen-Referenz enthielt. Während der Installation startet das Gerät neu:


Bild 1. AndroidManifest mit einer sehr langen DTD-Zeichenfolgen-Referenz


Bild 2. Das Betriebssystem stürzt ab und startet während der Installation neu

Der Test hat bewiesen, dass dieses erzeugte APK sowohl Android 4.4.4, Android L als auch ältere Versionen zum Absturz bringen kann.

Testen der Sicherheitslücke, Teil 2

Die Bedrohungsforscher erzeugten auch eine Anwendung mit der Manifest-Datei (Bild 2), die Android-Geräte in eine Reboot-Schleife bringen kann. Nach der Installation war das Gerät nicht ansprechbar, ausser auf den Neustart. Ein Nutzer kann nicht einmal das APK deinstallieren oder deaktivieren. Es wird solange rebooten, bis das Gerät keinen Strom mehr hat. Die einzige Lösung besteht darin, die ROM zu flashen oder die Plattform neu zu installieren.


Bild 3. AndroidManifest.xml mit 100.000 Icons

Die Risiken kennen

Die Sicherheitslücke stellt kein technisches Risiko dar. Betroffene Geräte können gerettet werden, aber nur wenn die Android Debug Bridge (ADB) aktiviert oder das Gerät in Fastboot-Modus ist. Leider können solche Aktionen nur von technisch sehr versierten Nutzern durchgeführt werden, und ein Fehler kann das Gerät sperren.

Google wurde über das Problem informiert.

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

*

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.