everythingpossible - stock.adobe
Vier Gefahren für die Sicherheit von mobilen Anwendungen
Mobile Apps sind besonderen Risiken ausgesetzt. Sie reichen von Code Injection, über Fehler beim Speichern von Daten und dem Identitätsmanagement bis zur Übertragung im Netzwerk.
Bei der Entwicklung mobiler Anwendungen müssen die damit befassten Teams eine Vielzahl von Kommunikations- und Komponentenebenen berücksichtigen und sicher konfigurieren, damit diese auch wirklich ordnungsgemäß funktionieren.
Unglücklicherweise bedeutet aber jede weitere Ebene, die ein Programmierer einfügt, dass die Angriffsfläche noch größer wird und neue Möglichkeiten entstehen, um die jeweilige Anwendung anzugreifen. Entwicklungsteams, die daher nicht jede einzelne Ebene ihrer mobilen Apps sorgfältig sichern, riskieren nicht nur den Verlust von wichtigen Geschäftsdaten, sondern auch Probleme bei der Sicherheit der Nutzer und der Kontrolle über die Geräte.
Der wesentliche Punkt, den man dabei nicht vergessen darf, ist die Frage, wie viele Schwachstellen sich im Code der Anwendung selbst befinden. Unabhängig davon, ob ein Unternehmen ein dediziertes Security-Team hat oder nicht, spielen die Entwickler daher eine zentrale Rolle beim Schutz mobiler Apps. Nicht nur, wenn es darum geht, sie zu patchen, sondern auch beim Erstellen und Umsetzen von Strategien, um nach potentiellen Gefahren zu suchen und um diese zügig zu adressieren.
Der vorliegende Artikel soll Entwicklern dabei behilflich sein, ihre wichtige Rolle bei der Sicherung von mobilen Applikationen besser zu verstehen. Dazu geht er auf vier der häufigsten und zugleich gefährlichsten Bedrohungen für die Sicherheit von mobilen Apps ein. Er stellt zudem besondere Werkzeuge, Praktiken und Entwicklungsstandards vor, die Ihnen bei der Abwehr dieser Bedrohungen behilflich sind.
Das Risiko Code Injection
Code Injection tritt zum Beispiel dann auf, wenn ein Angreifer Schadcode über eine grafische Oberfläche, ein Eingabeformular oder einen anderen Vektor in eine Anwendung einfügen kann, die ihm einen erweiterten Zugriff ermöglichen. Nehmen wir als Beispiel ein Login-Feld, das den eingegebenen Code nicht gründlich genug prüft und keine Restriktionen für bestimmte unerwünschte Werte kennt. Solche Formulare sind für Angreifer ideal, um beliebige Zeichen oder sogar komplette Javascripts einzuschleusen, mit denen er dann zum Beispiel auf die Daten der Nutzer zugreifen kann.
Im Folgenden finden Sie mehrere Empfehlungen, um Code Injection zu verhindern:
-
Halten Sie sich an bewährte Verhaltensweisen zur Entwicklung sicheren Codes, um potentielle Sicherheitsgefahren für Ihre mobilen Apps von vorneherein auszuschließen. Dazu gehört etwa auch, sich strikt an eine Trennung zwischen geschäftlichen und technischen Ausnahmen zu halten.
-
Prüfen Sie alle Möglichkeiten genau, über die fremder Code eingeschleust werden könnte und sorgen Sie dafür, dass moderne Techniken zur Eingabevalidierung eingesetzt werden. Möglichkeiten, die Ihnen zur Verfügung stehen, sind etwa Vorgaben für Variablen, standardisierte Vorgehensweisen zur Entwicklung von Software und gezielt durchgeführte Penetrationstests.
-
Stellen Sie außerdem sicher, dass das Reverse Engineering Ihres Codes erschwert wird. Für diesen Zweck können Sie Analyse-Werkzeuge wie das Quick Android Review Kit (QARK) einsetzen.
Clientseitige Speicherung und Datenlecks
Die meisten mobilen Anwendungen brauchen Zugriff auf Daten aus externen Quellen. Oft sind sie mit anderen Applikationen verbunden, so dass Nutzerdaten offen gelegt werden. Viele Entwickler speichern die von ihren Anwendungen gesammelten Daten außerdem lokal in der jeweiligen App, so dass sie auch offline noch funktionieren. Angreifer können jedoch relativ leicht auf diese Daten in den Apps zugreifen, sie ändern und manipulieren. Außerdem besteht das Risiko, dass Kriminelle auf vertrauliche Daten zugreifen können, die sich im internen Speicher befinden, wenn ein Gerät zum Beispiel gestohlen wurde.
Die meisten mobilen Anwendungen brauchen Zugriff auf Daten aus externen Quellen. Oft sind sie mit anderen Applikationen verbunden, so dass Nutzerdaten offen gelegt werden. Viele Entwickler speichern die von ihren Anwendungen gesammelten Daten außerdem lokal in der jeweiligen App, so dass sie auch offline noch funktionieren. Angreifer können jedoch relativ leicht auf diese Daten in den Apps zugreifen, sie ändern und manipulieren. Außerdem besteht das Risiko, dass Kriminelle auf vertrauliche Daten zugreifen können, die sich im internen Speicher befinden, wenn ein Gerät zum Beispiel gestohlen wurde.
Verwenden Sie die folgenden Werkzeuge und Vorgehensweisen, um diese Risiken zu minimieren:
-
Nutzen Sie die Vorteile der Automatisierung und setzen Sie statische Analyse-Tools wie Zed Attack Proxy (ZAP) von OWASP ein, um Memory Leaks aufzuspüren.
-
Identifizieren Sie besonders gefährdete Datenquellen wie Messaging-Logs, Kontaktlisten, Browser-Chroniken und Hotspot-Verbindungen.
-
Sorgen Sie dafür, dass die verwendeten mobilen Betriebssysteme auf dem aktuellen Stand sind und setzen Sie bei den Anwendern Richtlinien durch, die für eine sichere Installation von mobilen Apps sorgen.
Mangelhafte Verwaltung von Identitäten und Verschlüsselung
Fehler bei der Authentifizierung ermöglichen es anonymen Nutzern auf Ihre mobilen Apps zuzugreifen. Das stellt eine Gefahr für die Clients dar. Es ist zudem möglich, dass ein Hacker über nur schlecht gesicherte Admin-Accounts auf das darunter liegende Anwendungssystem zugreifen kann. Selbst wenn es bei einem Angriff gelingt, nur eine einzige Anwendung zu kompromittieren, die vertrauliche Daten enthält, entsteht dadurch eine Hintertür in Ihr gesamtes App-Ökosystem. Schlecht umgesetzte oder eine prinzipiell schwache Verschlüsselung geben Angreifern weitere Möglichkeiten, um auf Ihre Daten zuzugreifen.
Stellen Sie daher sicher, dass Ihr Team sich an die folgenden Praktiken halten:
-
Verfolgen Sie die Entwicklung bei häufig genutzten Verschlüsselungsalgorithmen wie RSA und AES (Advanced Encryption Standard) sowie beim Key Management.
-
Setzen Sie Schutzmaßnahmen wie Token-basierte Sicherheit, Multifaktor-Authentifizierung (MFA), Firewalls ein und implementieren Sie Session Timeouts.
-
Verwenden Sie das Prinzip der geringsten benötigten Berechtigungen. Es besagt, dass eine bestimmte Anwendung nur auf die Daten Zugriff erhält, die sie für ihre Aufgabe auch wirklich benötigt.
Fehler beim Schutz der Daten im Netzwerk
Der Weg, den Daten zwischen einem Server und den Clients nehmen, ist ein besonders kritischer Bereich. Schließlich fließen Ihre Daten meist nicht nur über das lokale Netzwerk, sie nehmen oft auch externe Verbindungen. Angreifer können die Schnittstellen nutzen, um leichter an die übertragenen Daten zu kommen. Wenn die versendeten und empfangenen Daten nicht ausreichend geschützt werden, können sie zudem für direkte Attacken auf Ihr Firmennetz genutzt werden.
Im Folgenden finden Sie mehrere Möglichkeiten, um Ihre Daten bei der Übertragung besser zu schützen:
-
Nutzen Sie Sicherheitsprotokolle wie SSL (Secure Sockets Layer) und TLS (Transport Layer Security) zur Verschlüsselung der Daten im Netz.
-
Prüfen Sie, ob Sie eine VPN-Lösung (Virtual Private Network) benötigen, um mobile Zugriffe auf Ihr Netzwerk mit einer zusätzlichen Sicherheitsschicht zu schützen.
-
Führen Sie regelmäßig Bedrohungsanalysen durch, um Schwachstellen in den von Ihnen genutzten Betriebssystemen, mobilen Frameworks, Gerätschaften und externen APIs (Application Programming Interfaces) zu finden.
-
Setzen Sie Tools ein, um Sicherheitslücken aufzuspüren. Integrieren Sie zudem Werkzeuge zum Application Security Testing in Ihren Entwicklungsprozess, wie Sie zum Beispiel Veracode im Portfolio hat.