Mobile App PentestFabian Gold7 min Lesezeit

Native oder hybride App – Was ist sicherer?

Bei der sicheren Entwicklung von Apps gibt es zahlreiche Aspekte, die zu beachten sind. Einer davon ist, ob man sich für eine native oder eine hybride App entscheidet.

Wenn es um die Entwicklung einer mobilen App geht, stellt sich frühzeitig eine zentrale Frage: native oder hybride App? Dabei sind zahlreiche Aspekte zu berücksichtigen -- der Fokus dieses Beitrags liegt jedoch auf der Cyber Security.

Was ist eine native App?

Eine native Anwendung ist eine App, die speziell für eine bestimmte Plattform entwickelt wurde. Da sie auf ein konkretes Betriebssystem zugeschnitten ist, können Nutzer auf sämtliche Gerätefunktionen zugreifen. Native Android-Apps werden in der Regel in Java geschrieben, iOS-Apps hingegen in Objective-C oder Swift.

Was ist eine hybride App?

Eine hybride App ist mit verschiedenen Plattformen kompatibel und vereint Elemente von nativen und Web-Anwendungen. Eine für iOS entwickelte Hybrid-App lässt sich problemlos auch auf Android-Geräten ausführen.

Die Entwicklung basiert auf Webtechnologien wie JavaScript, CSS und HTML. Der erstellte Code wird anschließend mithilfe plattformübergreifender Frameworks wie React Native in eine native App verpackt. Obwohl Hybrid-Apps auf Webtechnologien aufbauen, bieten sie ein Nutzungserlebnis, das dem einer nativen App entspricht.

Generelle Unterschiede zwischen hybriden und nativen Apps

Die wesentlichen Unterschiede zwischen nativen und hybriden Apps liegen im Entwicklungsprozess. Hybride Apps werden plattformübergreifend entwickelt, während native Apps ausschließlich für ein bestimmtes Betriebssystem erstellt werden.

Ein weiterer Unterschied betrifft die Performance: Eine hybride App kann naturgemäß nicht dieselbe Leistung erreichen wie eine App, die auf eine einzelne Plattform maßgeschneidert ist. Letztlich hängt die Entscheidung zwischen nativer und hybrider Entwicklung von den Zielen und Prioritäten Ihres Projekts ab.

Unterschiede in der IT-Sicherheit

Native Anwendungen gelten allgemein als sicherer als hybride Anwendungen. Das liegt zum einen daran, dass native Apps auf plattformspezifische Sicherheitsfunktionen zugreifen können. Zum anderen sind hybride Apps durch die Verwendung von WebViews potenziell anfällig für webspezifische Angriffe. Zu den häufigsten Angriffsszenarien auf hybride Anwendungen zählen JavaScript-Injection, eine schwache SSL-Implementierung und Caching-Probleme. Das bedeutet jedoch keineswegs, dass native Anwendungen unangreifbar sind.

Was sind WebViews?

WebView ist eine zentrale Komponente mobiler Anwendungen. Sie ermöglicht es Android- und iOS-Apps, Webinhalte zu rendern und JavaScript-Code direkt in der Anwendung auszuführen. Der Vorteil von WebViews liegt in ihrer Benutzerfreundlichkeit und Einfachheit: Das Abrufen und Anzeigen von Webinhalten erfolgt über einen einzigen Methodenaufruf. Dadurch muss eine Anwendung nicht für jede Plattform separat entwickelt und gepflegt werden. Darüber hinaus stehen Aktualisierungen sofort und ohne Benutzerinteraktion zur Verfügung, da die Inhalte direkt vom Webserver geladen werden.

Risiken bei der Verwendung von WebViews

Indem WebViews eine direkte Verbindung zwischen Webinhalten und dem Betriebssystem herstellen, durchbrechen sie den Schutz der Browser-Sandbox.

Grundsätzlich können WebViews für dieselben Angriffe anfällig sein wie herkömmliche Webanwendungen. Darüber hinaus entstehen jedoch auch neue Sicherheitsrisiken. Hat die Anwendung beispielsweise Zugriff auf die Kontakte des Telefons und besteht gleichzeitig eine Cross-Site-Scripting-Schwachstelle, kann ein Angreifer die Kontaktdaten vom Gerät des Opfers stehlen.

Maßnahmen, um die Risiken zu vermindern

Der einfachste Weg, das Risiko zu vermindern, besteht darin, JavaScript im WebView zu deaktivieren. Aktiviertes JavaScript macht die Anwendung anfällig für Cross-Site-Scripting-Angriffe, die auf eine unsachgemäße Behandlung von Benutzereingaben zurückzuführen sind. Falls JavaScript aktiviert sein muss, sollten Sie nicht vertrauenswürdige Eingaben konsequent bereinigen.

Darüber hinaus ist es wichtig, die Herkunft der Inhalte im WebView zu validieren. Dies lässt sich über die Methoden shouldOverrideUrlLoading und shouldInterceptRequest implementieren.

Certificate Pinning verhindert die Kommunikation mit nicht vertrauenswürdigen Servern. Bei der Verwendung von SSL wird lediglich geprüft, ob der Server über ein gültiges Zertifikat verfügt. Heutzutage ist es jedoch vergleichsweise einfach, ein solches Zertifikat zu erhalten. Ein zusätzliches Risiko besteht, wenn es einem Angreifer gelingt, sein eigenes Zertifikat im Android Trust Store zu hinterlegen -- in diesem Fall wird auch die kompromittierte TLS-Verbindung als sicher eingestuft. Certificate Pinning begegnet diesem Risiko, indem Zertifikatsmerkmale direkt im Quellcode der Anwendung hinterlegt werden. Bei einem TLS-Verbindungsaufbau kann die App dann prüfen, ob der Server das erwartete Zertifikat vorlegt.

Um den potenziellen Schaden bei einer erfolgreichen Ausnutzung zu begrenzen, sollten Sie das Prinzip der minimalen Berechtigung befolgen: Unter Android bedeutet das, nur die tatsächlich benötigten Berechtigungen anzufordern. Zusätzlich erlaubt Android WebView, den Zugriff auf den lokalen Speicher über die JavaScript-Bridge zu deaktivieren.

Fazit

Zusammenfassend lässt sich festhalten: Hybride Anwendungen sind im Vergleich zu nativen Anwendungen nicht grundsätzlich unsicherer -- vorausgesetzt, bei der Entwicklung werden alle notwendigen Sicherheitsvorkehrungen getroffen. Beide Ansätze haben ihre Vor- und Nachteile, allerdings erfordert der hybride Weg einen höheren Aufwand, um dasselbe Sicherheitsniveau zu erreichen.

Insbesondere bei der Verwendung von WebViews sollten Sie bedenken, dass dadurch neue Risiken entstehen. Die gute Nachricht: Moderne Android-Versionen bringen strenge Standardeinstellungen für WebViews mit. Wenn Sie sich an diese Vorgaben halten und zusätzliche Sicherheitsmechanismen implementieren, sollte die Nutzung von WebViews ausreichend abgesichert sein. Sobald Sie jedoch Standardeinstellungen ändern -- etwa JavaScript aktivieren oder JavaScript Interfaces verwenden -- ist besondere Sorgfalt geboten, und Sie sollten zusätzliche Sicherheitsmaßnahmen in Betracht ziehen.

Unsere Services