Sicherheit
Mobile-Sicherheitsfunktionen müssen oft auf die Plattform-API zugreifen, die nicht in nicht-native Entwicklungs-Frameworks integriert sind. Dies erhöht sowohl die Kosten als auch das Risiko von Fehlern in einem sensiblen Teil der Anwendung. Bei einigen FSI-Apps ist es nicht so schwierig, die Wahl der Technologie zu beeinflussen. Das ist zum Beispiel bei einem Portal der Fall, das die Performance von Pensionskassen abbildet. Aber Sicherheit ist entscheidend bei Banking-Apps oder Apps, die Zahlungsdienste anbieten. In diesem Fall kann eine native Implementierung von Vorteil sein.
In Europa müssen praktisch alle Banking-Apps mit der Zahlungsdiensterichtlinie PSD2 oder einer gleichwertigen Verordnung konform sein. Die PSD2-Anforderungen können auf unterschiedliche Weise erfüllt werden, aber praktisch alle modernen Lösungskonzepte haben drei Sicherheitsmaßnahmen gemeinsam:
- Laufzeitsicherheit: Verwendung einer Kombination von Lösungen (z. B. RASP) zur Sicherung der Umgebung, in der die App ausgeführt wird: Können wir Anzeichen dafür erkennen, dass das Mobilgerät oder der App-Code manipuliert wurde?
- Gerätebindung: Bei der Ersteinrichtung erstellen Apps Anmeldedaten, die auf spezieller Hardware auf Mobiltelefonen gespeichert werden und kryptografische Garantien dafür bieten können, dass eine zukünftige Anfrage von diesem bestimmten Telefon stammt.
- Anwesenheitsprüfung des Benutzers: Apps verwenden biometrische Prüfungen (wie Face ID), um einen kryptografischen Nachweis über die Anwesenheit des Benutzers zu erstellen, wenn dieser etwas über die App ausführt.
Das übergeordnete Konzept ist zwar auf allen Plattformen gleich, die Details der Umsetzung variieren jedoch. Unabhängig von der allgemeinen Technologieauswahl müssen diese Funktionen daher für jede Plattform spezifisch implementiert werden. Obwohl es möglich ist, in allen Frameworks die gleichen Sicherheitsfunktionen zu erreichen, kann die Implementierung mit plattformübergreifenden Technologien kostspieliger sein.
In Bezug auf die Laufzeit-Sicherheit haben Hybrid-Apps einen größeren Nachteil, da sie interpretierten JavaScript-Code (anstatt vorkompilierten Code) ausführen und damit zusätzliche Angriffsflächen bieten. Für einen unserer Bankkunden, der eine Hybrid-Lösung hatte, mussten wir eine Gesamtlösung entwickeln, um die Möglichkeiten des JS-Codes einzuschränken und den Zugriff darauf zu beschränken (z. B. hatte der JS-Code nie Zugriff auf die Anmeldeinformationen).
Abschließend möchten wir darauf hinweisen, dass eine unzureichende Sicherheit der Lieferkette eines der größten Sicherheitsrisiken im Mobile-Bereich darstellt. Plattformübergreifende Technologien sind zwar in der Regel robust und werden gut gepflegt, sind jedoch umfangreiche Frameworks, die Schwachstellen auf eine Weise aufweisen können, die das Entwicklungsteam nicht vorhergesehen hat.
Noch problematischer ist unserer Meinung nach die Verwendung von Plugins von Drittanbietern mit begrenzter Kontrolle in sicherheitsrelevanten Bereichen des Codes. Wir haben viele Beispiele gefunden, wo diese entweder Schwachstellen haben oder nicht so stark sind, wie sie sein könnten, weil sie auf „universelle Einsetzbarkeit“ abzielen.