Penetrationstest - Fabian Gold - 29. April 2022

Native oder hybride App – Was ist sicherer?

blog_native_hybride_app_sicherheit_ee56c77fbd

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.

Inhaltsverzeichnis

Wenn es um die Entwicklung einer mobilen App geht, ist eine der ersten Fragen, die es zu entscheiden gilt, ob man sich für eine native oder eine hybride App entscheidet. Hierbei gibt es zahlreiche Aspekte, die zu beachten sind, der Fokus in diesem Beitrag liegt jedoch in der Betrachtung der Cyber Security.

Was ist eine native App?

Eine native Anwendung ist eine App, die für die Ausführung auf einer bestimmten Plattform entwickelt wurde. Da sie für ein bestimmtes Betriebssystem entwickelt wurde, können die Benutzer auf alle Gerätefunktionen zugreifen. Native Android-Apps werden in der Regel in Java geschrieben, während iOS-Apps in Objective-C oder Swift geschrieben werden.

Was ist eine hybride App?

Eine hybride App ist mit verschiedenen Plattformen kompatibel und enthält Elemente sowohl von nativen als auch von Web-Anwendungen. Wenn eine Hybride-App für iOS entwickelt wurde, ist es problemlos möglich diese auch auf Android Geräten auszuführen. Die Entwicklung basiert auf JavaScript-, CSS- und HTML-Webtechnologien. Nach der Erstellung des Codes wird dieser mithilfe von plattformübergreifenden Frameworks wie React Native in eine native App verpackt. Obwohl Hybride-Apps mit Webtechnologien entwickelt werden, fühlen sie sich wie native Apps an und bieten das gleiche Benutzererlebnis.

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 die Entwicklung einer nativen App nur für ein bestimmtes Betriebssystem durchgeführt wird. Ein weiterer Unterschied liegt in der Performance der App. Es liegt auf der Hand, dass eine hybride App nicht die gleiche Leistung erbringen kann wie eine auf eine einzige Plattform maßgeschneiderte App. Letztlich hängt die Wahl, ob native oder hybride Appentwicklung, von den Zielen und Prioritäten der App ab.

Unterschiede in der IT-Sicherheit

Native Anwendungen gelten im Allgemeinen als sicherer als hybride Anwendungen. Das liegt einerseits daran, dass native Anwendungen Zugriff auf die plattformspezifischen eingebauten Sicherheitsfunktionen haben. Andererseits auch daran, dass hybride Apps, aufgrund der Verwendung von WebViews, anfällig für webspezifische Angriffe sein können. Zu den häufigsten Angriffen auf hybride Anwendungen zählen JavaScript-Injection, eine schwache SSL-Implementierung und Caching-Probleme. Das bedeutet jedoch nicht, dass native Anwendungen unangreifbar sind.

Was sind WebViews?

WebView ist eine wichtige Komponente für mobile Anwendungen. Sie ermöglicht es Android- und iOS-Anwendungen, Webinhalte zu rendern und JavaScript-Code innerhalb einer mobilen Anwendung auszuführen. Der Schwerpunkt von WebViews liegt auf Benutzerfreundlichkeit und Einfachheit. Das Abrufen und Anzeigen von Webinhalten wird durch einen einzigen Methodenaufruf ermöglicht. Das bedeutet, dass durch die Verwendung von WebViews eine Anwendung nicht für jede Plattform neu entwickelt und verwaltet werden muss. Überdies werden Aktualisierungen der Anwendung sofort und ohne jegliche Benutzerinteraktion zur Verfügung gestellt, da der Inhalt von einem Webserver kommt und dieser nur da angepasst wird.

Risiken bei der Verwendung von WebViews

Durch die Bereitstellung einer direkten Verbindung zwischen Webinhalten und dem Betriebssystem, reißt die Verwendung von WebViews ein Loch in die bereitgestellte Sicherheit durch die Browser-Sandbox. Im Grunde können WebViews für alle Angriffe anfällig sein, für die Webanwendungen auch anfällig sind. Es gibt jedoch auch neue Arten von Sicherheitsrisiken. Wenn die Anwendung etwa Zugriff auf die Kontakte des Telefons hat und eine Cross-Site-Scripting Schwachstelle besteht, ist es einem Angreifer möglich, die Kontaktdaten vom Gerät des Opfers zu stehlen.

Maßnahmen, um die Risiken zu vermindern

Der einfachste Weg das Risiko zu vermindern, ist die Verwendung von JavaScript zu verbieten. Die Aktivierung von JavaScript macht die Anwendung anfällig für Cross-Site-Scripting-Angriffe, die auf eine unsachgemäße Behandlung von Benutzereingaben zurückzuführen sind. Wenn JavaScript aktiviert sein muss, ist es notwendig, nicht vertrauenswürdige Eingaben ordnungsgemäß zu bereinigen. Des Weiteren ist es notwendig, die Herkunft des Inhalts im WebView zu validieren. Dies kann durch die Methoden shouldOverrideUrlLoading und shouldInterceptRequest implementiert werden. Certificate Pinning ist eine Maßnahme, welche die Kommunikation mit einem nicht vertrauenswürdigen Server verhindert. Bei der Verwendung von SSL wird nur überprüft, ob der Server über ein gültiges Zertifikat verfügt. Heutzutage ist es jedoch relativ einfach, ein gültiges Zertifikat zu erhalten. Ein weiteres Risiko besteht darin, dass es dem Angreifer gelingt, sein Zertifikat in den Android Trust Store aufzunehmen. In einem solchen Fall wird die TLS-Verbindung ebenfalls als sicher eingestuft. Certificate Pinning ist eine Technik, die das oben erwähnte Risiko verhindert. Sie beruht auf dem „Anheften“ von Zertifikatsmerkmalen direkt im Quellcode der Anwendung. Bei einem TLS-Verbindungsversuch kann die Anwendung dann prüfen, ob der Server das erwartete ("angepinnte") Zertifikat vorlegt. Um den Schaden zu begrenzen, der verursacht werden kann, sobald eine App tatsächlich ausgenutzt wird, sollte das Prinzip des geringsten Privilegs befolgt werden, d. h. im Falle von Android sollten nur die notwendigen Berechtigungen genutzt werden. Außerdem erlaubt Android WebView, den Zugriff auf den lokalen Speicher über die JavaScript-Bridge abzuschalten.

Fazit

Zusammenfassend lässt sich sagen, dass hybride Anwendungen im Vergleich zu nativen Anwendungen nicht unsicherer sind, solange bei der Entwicklung alle Sicherheitsvorkehrungen getroffen werden. Beide Arten haben ihre Vor- und Nachteile. Jedoch wird beim hybriden Ansatz ein höherer Aufwand benötigt, um dasselbe Sicherheitsniveau zu erreichen. Insbesondere bei der Verwendung von WebViews muss bedacht werden, dass damit neue Risiken entstehen. Die gute Nachricht ist, dass moderne Android Versionen strenge Standardeinstellungen hinsichtlich WebView haben. Wenn man sich an diese Standardeinstellungen hält und zusätzliche Sicherheitsmechanismen implementiert, sollte die Nutzung von WebView ausreichend gesichert sein. Bei Änderungen der Standardeinstellungen, wie z. B. der Aktivierung der JavaScript-Unterstützung oder der Verwendung von JavaScript Interfaces, sollte man jedoch sehr gründlich vorgehen und zusätzliche Sicherheitsmechanismen in Betracht ziehen.

Kontakt

Neugierig? Überzeugt? Interessiert?

Vereinbaren Sie ein unverbindliches Erstgespräch mit einem unserer Vertriebsmitarbeiter. Nutzen Sie den folgenden Link, um einen Termin auszuwählen:

Lädt...