Graphical User Interface Security - Race Conditions als konkrete Gefahr

Graphical User Interface Security

Race Conditions als konkrete Gefahr

Marc Ruef
von Marc Ruef
Lesezeit: 6 Minuten

Im Rahmen von Source Code Analysen sollen Schwachstellen in Software identifiziert werden. Dabei konzentriert man sich klassischerweise auf die sequenziellen Abläufe, die nach der Übergabe einer spezifischen Benutzereingabe initiiert werden. Hierbei wird die Logik des Graphical User Interface (GUI) aber gerne ignoriert, wodurch Schwachstellen übersehen werden können.

0-Day Schwachstelle in iPad App

Am 31. August 2017 haben wir eine Schwachstelle in der beliebten App Secure Private Browser der Firma Mirmay gefunden. Diese haben wir unverzüglich dem Entwicklerteam mitgeteilt.

Die App kann genutzt werden, um einen sicheren Browser betreiben zu können. Er funktioniert als dedizierte App, die sich durch eine Authentisierung (PIN oder Touch-ID) absichern lässt. Sobald die App verlassen wird, lassen sich sämtliche Seiten schliessen. Dies führt dazu, dass beim erneuten Öffnen der App zuerst wieder die lokale Authentisierung am Gerät erfolgen muss, um auf die Inhalte zugreifen zu können. Selbst wenn die App im Multitasking Switcher als Vorschau angezeigt wird, ist dann nur der Login-Screen ersichtlich. Drittpersonen können nach dem Schliessen der App also nicht mehr sehen, was zuvor konsumiert wurde. Ein Verhalten, das von Mobile Banking Apps bestens bekannt ist.

Aufgrund einer Race Condition ist es möglich, dass ungewollt ein Zustand erzeugt werden kann, in dem dieser automatische Lock nicht richtig funktioniert.

Der Exploit

Um die Schwachstelle auszunutzen, sind die folgenden Schritte erforderlich:

  1. Öffnen der App Secure Private Browser
  2. Authentisieren in der App
  3. Starten eines Videos (z.B. auf YouTube)
  4. Minimieren des Videos
  5. Schliessen der App Secure Private Browser (Video läuft nun minimiert)
  6. Maximieren des Videos
  7. Abbrechen der iOS-Authentisierung (Cancel)
  8. Schliessen der App Secure Private Browser
  9. Multitasking Switcher öffnen mit Doppelklick auf Home-Button ⇒ Video wird in Preview angezeigt (Schwachstelle 1)
  10. Abbrechen der Authentisierung ⇒ Video kann abgespielt werden (Schwachstelle 2)

Damit diese Schwachstelle auftreten und sie ausgenutzt werden kann, müssen verschidene Gegebenheiten erfüllt sein. Grundsätzlich ist eine Fehlnutzung des Anwenders zu einem gewissen Grad erforderlich. Dennoch kann dieser Zustand unabsichtlich erzeugt und damit die zentrale Sicherheitsfunktion der App ausgehebelt werden.

Technischer Hintergrund

Der technische Hintergrund dieser Schwachstelle lässt sich ohne Einsicht in den Code nur schwer mit absoluter Genauigkeit rekonstruieren.

Es deutet sich aber an, dass die App die Reihenfolge der Aktivitäten in diesem spezifischen Punkt nicht richtig angeht: Wenn das Video minimiert und die App wieder geöffnet wird, sollte vor der initialen Authentisierung mittels LocalAuthentication ein Schliessen des Videos oder das Anzeigen eines Overlays durchgeführt werden. Erst dann gilt es den modalen Dialog der Authentisierung anzuzeigen.

let myContext = LAContext()
let myLocalizedReasonString = <#String explaining why app needs authentication#>

var authError: NSError? = nil
if #available(iOS 8.0, OSX 10.12, *) {
    if myContext.canEvaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics, error: &authError) {
        myContext.evaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics, localizedReason: myLocalizedReasonString) { (success, evaluateError) in
            if (success) {
                // User authenticated successfully, take appropriate action
            } else {
                // User did not authenticate successfully, look at error and take appropriate action
            }
        }
    } else {
        // Could not evaluate policy; look at authError and present an appropriate message to user
    }
} else {
    // Fallback on earlier versions
}

Fazit

Die Entwicklung von sicherer Software ist nicht einfach. Vor allem dann, wenn Parallelisierung, Multi-Threading und Multi-Tasking mitspielen. Dann nämlich wird konkret von einer rein sequentiellen Ausführung abgewichen, was das Problem von komplexen Race Conditions einführt. Das Entdecken, Analysieren und Beheben dieser Schwachstellenklasse ist aufgrund ihrer Schwierigkeit sehr unbeliebt (Dies dürfte mitunter auch der Grund sein, warum der Hersteller in keinster Weise auf unsere Mitteilung reagiert hat).

Doch genau deswegen sollte man sich intensiv und fokusiert auf dieser Ebene mit einer Software auseinandersetzen. Bei modernen GUIs gibt es eine Vielzahl an Events, die auf den verschiedenen Controls ausgeführt werden können. Wer Software mit GUIs sicher entwickeln will, muss diese alle im Griff haben. Das ist definitiv keine einfache Aufgabe.

Über den Autor

Marc Ruef

Marc Ruef ist seit Ende der 1990er Jahre im Cybersecurity-Bereich aktiv. Er hat vor allem im deutschsprachigen Raum aufgrund der Vielzahl durch ihn veröffentlichten Fachpublikationen und Bücher – dazu gehört besonders Die Kunst des Penetration Testing – Bekanntheit erlangt. Er ist Dozent an verschiedenen Fakultäten, darunter ETH, HWZ, HSLU und IKF. (ORCID 0000-0002-1328-6357)

Links

Haben Sie Interesse an einem Penetration Test?

Unsere Spezialisten kontaktieren Sie gern!

×
Konkrete Kritik an CVSS4

Konkrete Kritik an CVSS4

Marc Ruef

scip Cybersecurity Forecast

scip Cybersecurity Forecast

Marc Ruef

Voice Authentisierung

Voice Authentisierung

Marc Ruef

Bug-Bounty

Bug-Bounty

Marc Ruef

Sie wollen mehr?

Weitere Artikel im Archiv

Sie brauchen Unterstützung bei einem solchen Projekt?

Unsere Spezialisten kontaktieren Sie gern!

Sie wollen mehr?

Weitere Artikel im Archiv