In this article
Android-Anwendungssicherheit – Android-Apps für Entwickler absichern
So schützen Sie Ihre Android-Apps vor Angreifern.
Was ist Android-Anwendungssicherheit?
Android-Anwendungssicherheit umfasst Maßnahmen, die Android-Apps davor schützen, ohne Berechtigung aufgerufen, missbraucht, verändert oder beschädigt zu werden. Dank der weiten Verbreitung mobiler Geräte wie Smartphones und Tablets ist Android zu einer beliebten Plattform für die Entwicklung und Verbreitung mobiler Apps geworden. Die Offenheit des Systems macht es jedoch anfällig für verschiedene Sicherheitsrisiken. Mit Maßnahmen für mobile Sicherheit können Sie Nutzer vor Cyberbedrohungen wie Hackerangriffen, Malware und Datendiebstahl schützen.
Warum ist die Sicherheit von Android-Apps wichtig?
Die Sicherheit von Android-Apps ist entscheidend, denn Android dominiert den Markt für mobile Betriebssysteme mit einem Marktanteil von 71,8 %, verglichen mit etwa 27,6 % für Apples iOS. Android-Geräte gelten aufgrund ihres Zugriffs auf verschiedene Datenquellen (E-Mails, soziale Medien), ihrer Gerätefunktionen (Mikrofon, Kamera, Geolokalisierung) und ihrer Rolle bei Authentifizierungsprozessen (2FA) oft als besonders lohnende Ziele. Entwickler müssen der Sicherheit höchste Priorität einräumen, um personenbezogene, finanzielle und sensible Daten auf Android-Geräten zu schützen. Zwar sind Angriffe auf Mobilgeräte schon immer ein Problem, doch die Bedrohung entwickelt sich rasant weiter, da Angreifer immer raffiniertere Malware entwickeln.
Angreifer setzen aktiv Malware mit umfassenden Fernzugriffsfunktionen, modularem Aufbau und wurmartigen Eigenschaften ein, die Android-Geräte erheblich beschädigen kann. Einige dieser Malware-Familien entwickeln sich durch regelmäßige Updates weiter und werden immer gefährlicher. Gleichzeitig gelingt es Cyberkriminellen zunehmend besser, bösartigen Code am Prüfverfahren des offiziellen App-Stores vorbeizuschleusen.
Zu den Techniken mobiler Malware, vor denen Entwickler ihre Apps schützen müssen, gehören:
Betrug direkt auf dem Gerät (ODF): Mobile Malware kann betrügerische Aktionen inzwischen direkt auf dem Gerät des Opfers ausführen. ODF markiert einen bedeutenden Wendepunkt bei Angriffen auf Mobilgeräte und kann es auf Geschäftskonten und Kommunikationstools absehen.
Umleitung von Anrufen: Malware kann einen Anruf bei einer Bank auf eine andere Nummer umleiten, die vom Angreifer kontrolliert wird. Das Opfer bemerkt die Umleitung nicht, da auf dem Anrufbildschirm weiterhin die korrekte Telefonnummer angezeigt wird.
Missbrauch der direkten Antwort auf Benachrichtigungen: FluBot-Spyware, Medusa und Sharkbot können die Funktion „Direktantwort“ von Android-Benachrichtigungen missbrauchen, um betrügerische Transaktionen zu bestätigen, Push-Benachrichtigungen zu ändern und Malware zu verbreiten. Die Funktion lässt sich auch für Phishing über Push-Nachrichten nutzen, um die Malware wurmartig an die Kontakte des Opfers weiterzugeben.
Algorithmus zur Domain-Generierung: Sharkbot verwendet einen Algorithmus zur Domain-Generierung (DGA), um der Erkennung zu entgehen. Dafür erstellt die Malware fortlaufend neue Domainnamen und IP-Adressen für ihre Command-and-Control-Server. Dadurch wird es für Sicherheitsteams schwieriger, die Malware zu erkennen und zu blockieren.
Umgehung der Erkennung durch App-Stores: Kriminelle haben Wege gefunden, die Erkennung durch App-Stores zu umgehen. Dazu missbrauchen sie Apples Beta-Testplattform TestFlight und den Sicherheitsprozess von Google Play oder bezahlen Entwickler dafür, ihr bösartiges SDK in Apps einzubetten.
Weiterentwickelte Entwicklungspraktiken: Android-Trojaner wie die Xenomorph-Malware verfügen inzwischen über ausgefeilte Update-Funktionen. Künftig werden immer mehr mobile Malware-Familien bessere Update-Prozesse integrieren, um auf kompromittierten Geräten erweiterte Funktionen und neue Möglichkeiten bereitzustellen.
Sicherheitsfunktionen von Android
Um potenzielle Angreifer abzuwehren, bietet Android Sicherheitsfunktionen, mit denen Entwickler ihre Anwendungen vor unbefugtem Zugriff schützen können. Zu diesen Sicherheitsfunktionen gehören:
Anwendungssandbox: Apps werden in einer Sandbox-Umgebung ausgeführt, um unbefugten Zugriff auf Nutzerdaten und Systemressourcen zu verhindern.
Berechtigungen: Die Android-Plattform verfügt über ein Berechtigungssystem, mit dem Nutzer kontrollieren können, auf welche Daten und Ressourcen eine App zugreifen darf.
SELinux: Android verwendet Security-Enhanced Linux (SELinux), um verbindliche Zugriffskontrollrichtlinien durchzusetzen. So wird das System vor schädlichen Apps geschützt.
Code-Signierung: Android verlangt, dass alle Apps mit einem digitalen Zertifikat signiert werden. So wird sichergestellt, dass die App aus einer vertrauenswürdigen Quelle stammt und nicht manipuliert wurde.
Google Play Protect: Google Play Protect ist eine integrierte Sicherheitsfunktion, die Apps auf Google Play auf Malware und andere Sicherheitsbedrohungen überprüft.
Laufzeitberechtigungen: Seit Android 6.0 (Marshmallow) müssen Nutzer einer App zur Laufzeit den Zugriff auf bestimmte Daten oder Ressourcen erlauben, statt dies bereits während der Installation zu tun.
Netzwerksicherheitskonfiguration: Android bietet App-Entwicklern die Möglichkeit, die Netzwerksicherheit ihrer App zu konfigurieren, darunter SSL/TLS-Zertifikat-Pinning und weitere Sicherheitseinstellungen.
Sichere IPC: Der Interprozesskommunikationsmechanismus (IPC) von Android ermöglicht eine sichere Kommunikation zwischen Apps und Diensten, die auf demselben Gerät ausgeführt werden.
Verified Boot: Android-Geräte verfügen über einen verifizierten Startvorgang, der die Integrität der Gerätesoftware sicherstellt und unbefugte Änderungen verhindert.
Hardwaresicherheit: Android-Geräte bieten Hardwaresicherheitsfunktionen wie eine Trusted Execution Environment (TEE) und hardwaregestützte Schlüsselspeicherung, um sensible Daten zu schützen.
Profi-Tipp: Welche Funktionen verfügbar sind und wie Sie sie am besten nutzen, hängt von der Android-Version und der Gerätehardware ab, die sich stark unterscheiden können. Empfehlenswert ist es, (1) sich über relevante Funktionen auf dem Laufenden zu halten, (2) den Markt Ihrer App zu kennen und (3) den Einsatz dieser Funktionen entsprechend zu gestalten. Nutzen Sie diese Betriebssystemdienste so umfassend wie möglich.
Programmiersprachen für die Android-Entwicklung und ihre Sicherheitsherausforderungen
Android unterstützt mehrere Programmiersprachen für die Entwicklung mobiler Anwendungen, darunter Kotlin, Java und C++. Jede Sprache hat Stärken, Schwächen und Sicherheitsherausforderungen, die Entwickler berücksichtigen müssen.
Kotlin
Kotlin ist eine vergleichsweise neue Sprache, die sich zum Standard für die Android-Entwicklung entwickelt. Sie bietet eine bessere Sandbox-Isolierung als Java. Dadurch interagieren Kotlin-Apps mit geringerer Wahrscheinlichkeit mit anderen Apps auf dem Gerät des Nutzers. Das verringert das Risiko, dass schädliche Apps auf sensible Daten oder Ressourcen zugreifen.
Die größte Sicherheitsherausforderung bei Kotlin ist, dass die Sprache noch relativ neu ist. Obwohl sie als sicherer als Java gilt, wurden möglicherweise noch nicht alle Schwachstellen oder anderen Sicherheitsprobleme entdeckt. Entwickler müssen sich über die aktuellen Best Practices für Sicherheit informieren und ihre Bibliotheken und Frameworks aktuell halten, um das Risiko von Sicherheitsverletzungen zu minimieren.
Java
Java ist eine beliebte Programmiersprache, die in vielen Anwendungsbereichen zum Einsatz kommt, darunter auch bei der Entwicklung von Android-Apps. Im Vergleich zu C++ ist Java eine Hochsprache, sodass sich Code leichter schreiben und verstehen lässt. Da die Sprache jedoch auf einer höheren Abstraktionsebene angesiedelt ist, kann sie in puncto Leistung und Akkulaufzeit weniger effizient sein als C++.
Eine der größten Sicherheitsherausforderungen bei Java sind mögliche Schwachstellen in den Bibliotheken und Frameworks. Entwickler müssen aktuelle Bibliotheken und Frameworks verwenden und sichere Programmierpraktiken befolgen, um häufige Sicherheitsprobleme wie SQL-Injection und Cross-Site-Scripting zu vermeiden.
C++
C++ ist eine hardwarenahe Sprache, die auf Android häufig für die systemnahe Programmierung eingesetzt wird. Da sie näher an der Hardware arbeitet, kann C++ eine höhere Leistung und längere Akkulaufzeit bieten als Java oder Kotlin. C++ wird jedoch von verschiedenen Anwendungen gemeinsam genutzt, etwa von WebKit, dem Medien-Framework und grafischen Ebenen. Dadurch lässt sich die Sprache schwieriger wirksam in einer Sandbox isolieren.
Eine der größten Sicherheitsherausforderungen bei C++ sind mögliche speicherbezogene Schwachstellen wie Pufferüberläufe und Zeigerfehler. Entwickler müssen bei der Arbeit mit C++ sorgfältig vorgehen, um diese Schwachstellen zu vermeiden, die Angreifer ausnutzen können. Außerdem müssen sie die gemeinsame Nutzung von C++ berücksichtigen und Maßnahmen ergreifen, damit ihr Code nicht unbeabsichtigt mit anderen Apps oder Diensten interagiert.
Snyk Code unterstützt die Sprachen Kotlin, Java und C++ und eignet sich damit hervorragend für die Sicherheit von Android-Anwendungen.
Starten Sie mit Capture the Flag
Erfahren Sie in unserem virtuellen On-Demand-Workshop für Einsteiger, wie Sie Capture-the-Flag-Herausforderungen lösen.
Best Practices für die Sicherheit von Android-Anwendungen
Google, der für Android verantwortliche Anbieter, entwickelt das Sicherheits- und Datenschutz-Framework kontinuierlich weiter. Dadurch wird es jedoch schwieriger, Apps zu schreiben, die mit mehreren Android-Versionen kompatibel sind, da die Sicherheitsanforderungen variieren. Entwickler müssen die Berechtigungen und Datenschutzanforderungen, die Apps erfüllen müssen, früh im Entwicklungszyklus berücksichtigen, denn verschiedene Android-Versionen verhalten sich unterschiedlich.
Zu den weiteren wichtigen Best Practices für Android-Sicherheit gehören:
Sichere Kommunikation erzwingen: Entwickler sollten sichere Protokolle wie HTTPS verwenden, um die Datenübertragung zwischen der App und ihren Servern zu verschlüsseln. Implementieren Sie außerdem Zertifikat-Pinning. Damit wird sichergestellt, dass die App nur mit vertrauenswürdigen Servern kommuniziert, indem deren Zertifikat anhand eines bekannten öffentlichen Schlüssels überprüft wird.
Die richtigen Berechtigungen vergeben: Entwickler sollten sicherstellen, dass ihre Apps nur die Berechtigungen anfordern, die sie für ihre ordnungsgemäße Funktion benötigen. Unnötige Berechtigungsanfragen können dazu führen, dass Nutzer der App den Zugriff vollständig verweigern oder die App sogar aus Google Play entfernt wird. Fordern Sie Berechtigungen außerdem nur dann an, wenn sie benötigt werden, beispielsweise wenn ein Nutzer eine bestimmte App-Funktion verwenden möchte.
Daten sicher speichern: Entwickler sollten sensible Daten, die eine App lokal speichert, durch Verschlüsselung schützen. Außerdem müssen sensible Daten an sicheren Orten gespeichert werden, auf die Unbefugte keinen Zugriff haben. Speichern Sie Daten beispielsweise nicht auf externen Speichermedien wie SD-Karten, da andere Apps oder sogar Nutzer leicht darauf zugreifen können.
Dienste und Abhängigkeiten auf dem neuesten Stand halten: Entwickler sollten die Abhängigkeiten und Bibliotheken ihrer Apps regelmäßig aktualisieren, damit sie keine bekannten Sicherheitslücken oder Fehler aufweisen. Sie sollten sich außerdem über neue Sicherheitsbedrohungen informieren, ihre Apps so schnell wie möglich mit Patches aktualisieren und ungenutzte oder veraltete Abhängigkeiten entfernen, um die Angriffsfläche ihrer App zu minimieren.
Checkliste für die Sicherheit von Android-Anwendungen
Mit dieser Checkliste mit acht Punkten können Sie sicherstellen, dass Sie bei der Entwicklung von Android-Anwendungen die höchsten Sicherheitsstandards einhalten.
Sicherheit und Berechtigungsverwaltung sind entscheidend: Sicherheit sollte während des gesamten Entwicklungsprozesses oberste Priorität haben. Ermitteln Sie zu Projektbeginn mögliche Sicherheitsrisiken und Bedrohungen und legen Sie entsprechende Sicherheitsprotokolle fest. Berücksichtigen Sie außerdem die Verwaltung von Nutzerberechtigungen und stellen Sie sicher, dass Nutzer nachvollziehen können, auf welche Daten ihre App zugreift.
Kommunikation zwischen mobiler App und Backend: Die Kommunikation zwischen mobiler App und Backend muss sicher sein, und beide Seiten sollten robuste Sicherheitsmaßnahmen umsetzen. Stellen Sie sicher, dass alle Datenübertragungen zwischen der App und dem Backend verschlüsselt sind und sichere Protokolle wie HTTPS verwenden. Implementieren Sie außerdem Zertifikat-Pinning, damit die App nur mit vertrauenswürdigen Servern kommuniziert.
Bedrohungsszenarien auf Mobilgeräten sind anders: Mobile Apps werden in einer feindlichen Umgebung ausgeführt, in der sensible Daten gefährdet sein können. Berücksichtigen Sie, wie viele sicherheitskritische Daten auf dem mobilen Client gespeichert sind, und schützen Sie lokal gespeicherte sensible Daten durch Verschlüsselung. Behalten Sie außerdem mögliche Bedrohungen wie Spionage im Blick und ergreifen Sie geeignete Schutzmaßnahmen.
Alle verfügbaren Sicherheitsfunktionen des Android-Betriebssystems nutzen: Android bietet verschiedene Sicherheitsfunktionen wie sichere Speicherung, Schlüsselverwaltung und Sandbox-Isolierung. Nutzen Sie diese Funktionen, um die Sicherheit Ihrer App zu erhöhen.
Überlegen Sie, welche Berechtigungen Ihre Apps benötigen: Entwickler sollten sorgfältig abwägen, welche Berechtigungen ihre App benötigt, und nur die unbedingt erforderlichen anfordern. Eine frühzeitige Planung ist entscheidend, damit die App für den Umgang mit den erforderlichen Berechtigungen ausgelegt ist. Außerdem sollten Entwickler sicherstellen, dass Nutzer wissen, auf welche Daten die App zugreift und warum dies erforderlich ist.
Halten Sie Ihre Services und Abhängigkeiten mithilfe von Automatisierung auf dem neuesten Stand: Entwickler sollten automatisierte Tools verwenden, um die Abhängigkeiten und Bibliotheken ihrer App zu verwalten. So ist die App stets auf dem neuesten Stand und nicht durch bekannte Sicherheitslücken oder Fehler gefährdet.
Geben Sie klar an, welche Betriebssystemversionen Sie unterstützen: Entwickler sollten transparent machen, welche Android-Versionen ihre App unterstützt. Die Unterstützung zu vieler Android-Versionen kann eine Herausforderung sein. Finden Sie daher die richtige Balance zwischen Kundenservice und Geräteabdeckung einerseits und Sicherheit andererseits. Erinnern Sie Nutzer außerdem daran, auf die neueste App-Version zu aktualisieren, damit sie die sicherste Version verwenden.
Tests sind entscheidend: Tests sind unerlässlich, um potenzielle Sicherheitsrisiken und Bedrohungen aufzudecken. Entwickler sollten Intrusion Detection und andere White-Hat-Hacking-Methoden einsetzen, um die Sicherheit ihrer App zu testen. Beziehen Sie außerdem mobile Apps in alle Sicherheitstests und -messungen ein, um ihre Sicherheit zu gewährleisten.
Tools für die Sicherheit von Android-Anwendungen
Entwickler benötigen ein Sicherheits-Toolset, um potenzielle Sicherheitsbedrohungen zu erkennen und zu verhindern. Zu den häufig verwendeten Tools für die Anwendungssicherheit unter Android gehören:
SAST (statische Anwendungssicherheitstests): Eine Art von Sicherheitstest, bei dem der Quellcode oder die Binärdatei einer Anwendung analysiert wird, ohne den Code auszuführen. SAST-Tools verwenden Techniken wie Musterabgleich, Kontrollfluss- und Datenflussanalyse, um Schwachstellen frühzeitig in der Entwicklung zu erkennen.
SCA (Software Composition Analysis): SCA-Tools analysieren Open-Source- und Drittanbieter-Abhängigkeiten einer Anwendung, um Sicherheitslücken und Probleme bei der Lizenzkonformität zu erkennen. Sie durchsuchen den Code nach bekannten Sicherheitslücken, überwachen neue Schwachstellen und geben Empfehlungen zu deren Behebung.
Fuzzing: Eine Testmethode, bei der einer Anwendung ungültige, unerwartete oder zufällige Daten als Eingaben zugeführt werden, um Fehler oder Schwachstellen aufzudecken. Fuzzing-Tools generieren große Mengen an Testdaten, um potenzielle Schwachstellen bei der Eingabevalidierung einer Anwendung zu erkennen.
DAST (dynamische Anwendungssicherheitstests): Eine Art von Sicherheitstest, bei dem eine Anwendung während der Ausführung analysiert wird, um potenzielle Schwachstellen zu erkennen. DAST-Tools simulieren Angriffe und analysieren die Reaktionen einer Anwendung, um Schwachstellen wie Injection-Fehler, Cross-Site-Scripting (XSS) und Authentifizierungsprobleme aufzudecken.
IAST (interaktive Anwendungssicherheitstests): IAST-Tools kombinieren Elemente von SAST und DAST, um während der Ausführung einer Anwendung in Echtzeit Feedback zu potenziellen Sicherheitslücken zu geben. Sie erkennen Schwachstellen wie SQL-Injection, Cross-Site-Scripting und Pufferüberläufe.
Überwachung und Erkennung: Diese Tools überwachen die Sicherheit einer Anwendung im laufenden Betrieb kontinuierlich, um potenzielle Sicherheitsvorfälle zu erkennen. Sie überwachen Protokolle, Netzwerkverkehr und Systemereignisse, um Anomalien und mögliche Sicherheitsbedrohungen aufzudecken. Außerdem benachrichtigen sie Sicherheitsteams bei einem Vorfall, damit diese schnell reagieren können.
Sicherheit von Android-Anwendungen mit Snyk
Snyk bietet zwei Sicherheitstools für Android-Anwendungen: Snyk Code und Snyk Open Source.
Die SAST-Analyse von Snyk Code deckt potenzielle Sicherheitslücken wie SQL-Injection oder Cross-Site-Scripting-Angriffe (XSS) auf. Sie unterstützt Kotlin, Java und C++, gängige Programmiersprachen für die Entwicklung von Android-Anwendungen.
Die SCA-Abdeckung von Snyk Open Source erkennt und meldet bekannte Sicherheitslücken in den Abhängigkeiten von Drittanbietern Ihrer Android-Anwendung. Sie scannt die in Ihrer Anwendung verwendeten Open-Source-Bibliotheken und -Frameworks. Ein Bericht zu bekannten Sicherheitslücken hilft Ihnen, geeignete Maßnahmen zu ergreifen und das Risiko eines Sicherheitsvorfalls zu verringern.
Mobile Apps sind keine eigenständigen Systeme: Sie interagieren mit anderen Services und Abhängigkeiten, etwa APIs und Backend-Services. Damit das gesamte Ökosystem rund um Ihre Android-Anwendung umfassend geschützt ist, bietet Snyk weitere Sicherheitstools wie Snyk Container und Snyk IaC an.
Snyk Container analysiert die Sicherheit von Containern, um Schwachstellen in Ihrer containerisierten Umgebung zu erkennen und zu beheben. Snyk IaC scannt Ihre Infrastruktur auf Sicherheitslücken, darunter Fehlkonfigurationen und Verstöße gegen Compliance-Vorgaben.
Mit der umfassenden Auswahl an Entwicklersicherheitstools von Snyk können Sie Ihre Android-Anwendung gründlich auf Schwachstellen scannen und vor potenziellen Bedrohungen schützen – damit sie sicher und bereit für die Bereitstellung ist. Vereinbaren Sie noch heute eine Live-Demo und erfahren Sie mehr.