Business Case: Mobile App Pentesting

Aufgabenstellung: Ein langjähriger Kunde beauftragte uns mit einem Security Test mit unserem ‚ softScheck Security Testing Process‘ seiner Gesundheits-App, die nicht nur Datenschuz-relevante sondern auch sensible medizinische Daten des Nutzers verarbeitet und also auf Sicherheitslücken hin zu untersuchen.

Vorgehen: Getestet wurde neben der Android- und iOS-Version der App auch die REST API des Servers, welche die App zum Download der medizinischen Daten nutzt. Die Apps wurden mit statischer sowie dynamischer Analyse untersucht.

  1. Static Source Code Analysis:
  2. Da uns der Quellcode der App nicht zur Verfügung stand, haben wir die App dekompiliert. Der Code wurde von Static Source Code Analysis (SSCA) Tools auf Sicherheitslücken sowie Abstürze hin untersucht. Neben automatischen Tools schauten sich unsere Experten interessante Stellen des Codes an. Beispielsweise die Authentifizierung, die Speicherung der Daten auf dem Smartphone, Funktionen die das Hinzufügen von Daten erlauben etc. Dabei fanden wir auch statische Passwörter. Ebenfalls interessant sind die verwendenden Tracker. Diese liefen parallel zur App mit und sendeten Informationen wie Details über das Betriebssystem, den Standort sowie Nutzerinteraktion mit der App an Werbebetreibende oder die Entwickler. Da sie mit denselben Rechten wie die App liefen, hatten sie prinzipiell Zugriff auf alle gespeicherten Gesundheitsdaten.

  3. Dynamische Analyse der App:
  4. Wir führten die App aus und untersuchten sie zur Laufzeit. Auf einer von uns angepassten Android Version ließen wir einen Debugger mitlaufen, der das Laufzeitverhalten der App protokolliert. Um den Netzwerkverkehr mitschneiden zu können, nutzten wir unseren Man-in-the-Middle Aufbau. Dies schlug allerdings fehl, da die App Certificate Pinning und HSTS benutze. Daher ersetzten wir mit Hilfe unseres Debuggers die Methode des SSL Verbindungsaufbaus mit unserer eigenen (Hooking), sodass wir dennoch den Netzwerkverkehr mitlesen und verändern konnten.
    Um zu testen, wie die App auf unterschiedlichste Nutzer Eingaben, Netzwerkpakete, Intents/Broadcasts und manipulierte Medizindateien reagierte, nutzten wir Fuzzing.

  5. Untersuchung der REST API:
  6. Die App kommunizierte mit dem Server, der die medizinischen Daten enthält, über eine REST API. Mit den gewonnen Informationen aus einem zu großen Teilen automatisierten Information Gathering, sowie den Erkenntnissen der Man-in-the-Middle Attack, konnten wir undokumentierte API Requests identifizieren sowie uns als Berechtigte ausgeben und ausgestellte Tokens verlängern.

Aufwand: Mittel. Abhängig von der Größe der App, Anzahl der Plattformen.

Fazit:Wir identifizierten mehrere Sicherheitslücken. Einige waren derart kritisch, dass ein Angreifer alle Daten des Nutzers auslesen konnte. Im Abschlussbericht wurden alle identifizierten Sicherheitslücken ausführlich für die Entwickler beschrieben, Gegenmaßnahmen vorgeschlagen und sie wurden für das Management bewertet. Damit war das Management in der Lage festzulegen, welche Sicherheitslücken behoben werden sollten und die Entwickler konnten dank der empfohlenen Gegenmaßnahmen Patches entwickeln.