OWASP-Kategorie: MASVS-PLATFORM: Plattforminteraktion
Übersicht
Die mit Deeplinks verbundenen Sicherheitsrisiken ergeben sich aus ihrer Hauptfunktion, die eine nahtlose Navigation und Interaktion in mobilen Apps ermöglicht. Deeplink-Sicherheitslücken entstehen durch Schwachstellen bei der Implementierung oder Verarbeitung von Deeplinks. Diese Sicherheitslücken können von böswilligen Akteuren ausgenutzt werden, um Zugriff auf privilegierte Funktionen oder Daten zu erhalten, was zu Datenpannen, Verstößen gegen den Datenschutz und unbefugten Aktionen führen kann. Angreifer können diese Sicherheitslücken mit verschiedenen Techniken ausnutzen, z. B. durch Deeplink-Hijacking und Datenvalidierungsangriffe.
Positiv beeinflussen
Wenn kein geeigneter Deeplink-Validierungsmechanismus vorhanden ist oder Deeplinks unsicher verwendet werden, können böswillige Nutzer Angriffe wie die Umgehung der Hostbestätigung, App-übergreifendes Scripting und die Ausführung von Remote-Code im Berechtigungskontext der angreifbaren Anwendung ausführen. Je nach Art der Anwendung kann dies zu einem nicht autorisierten Zugriff auf sensible Daten oder Funktionen führen.
Abhilfemaßnahmen
Deeplink-Hijacking verhindern
Android ermöglicht es von Natur aus, dass mehrere Apps Intent-Filter für denselben Deeplink-URI registrieren. Um zu verhindern, dass schädliche Apps Deeplinks abfangen, die für deine App bestimmt sind, implementiere das Attribut android:autoVerify
in intent-filter
im AndroidManifest
der Anwendung. So können Nutzer ihre bevorzugte App für die Verarbeitung von Deeplinks auswählen, um den beabsichtigten Betrieb zu gewährleisten und zu verhindern, dass schädliche Anwendungen sie automatisch interpretieren.
Für Android 12 wurde zur Verbesserung der Sicherheit ein strengerer Umgang mit Web-Intents eingeführt. Apps müssen jetzt bestätigt werden, dass sie Links von bestimmten Domains verarbeiten. Dies kann entweder über Android-App-Links oder über die Nutzerauswahl in den Systemeinstellungen erfolgen. So wird verhindert, dass Apps Links kapern, die sie nicht verarbeiten sollten.
Wenn Sie die Überprüfung der Linkverwaltung für Ihre App aktivieren möchten, fügen Sie Intent-Filter hinzu, die dem folgenden Format entsprechen. Dieses Beispiel stammt aus der Dokumentation Verify Android App Links (Links in Android-Apps überprüfen):
<!-- Make sure you explicitly set android:autoVerify to "true". -->
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!-- If a user clicks on a shared link that uses the "http" scheme, your
app should be able to delegate that traffic to "https". -->
<data android:scheme="http" />
<data android:scheme="https" />
<!-- Include one or more domains that should be verified. -->
<data android:host="..." />
</intent-filter>
Robuste Datenvalidierung implementieren
Deeplinks können zusätzliche Parameter enthalten, die an die Zielabsicht gesendet werden, z. B. um weitere Aktionen auszuführen. Die Grundlage der sicheren Deeplink-Verarbeitung ist eine strenge Datenvalidierung. Alle eingehenden Daten von Deeplinks sollten von Entwicklern sorgfältig validiert und bereinigt werden, um zu verhindern, dass schädlicher Code oder schädliche Werte in die legitime Anwendung eingeschleust werden. Dazu wird der Wert eines Deeplink-Parameters mit einer vordefinierten Zulassungsliste mit erwarteten Werten verglichen.
Apps sollten andere relevante interne Zustände prüfen, z. B. den Authentifizierungsstatus oder die Autorisierung, bevor vertrauliche Informationen offengelegt werden. Ein Beispiel wäre eine Prämie für den Abschluss eines Levels in einem Spiel. In diesem Fall lohnt es sich, die Voraussetzung zu prüfen, dass Sie das Level abgeschlossen haben und andernfalls zum Hauptbildschirm weitergeleitet werden.
Ressourcen
- Android-App-Links überprüfen
- Android-App-Links verwenden
- Auflösung von Web-Intents
- Kontoübernahme durch Abfangen des Magic-Links für die Arrive App
- Deeplinks und WebViews – Ausnutzungsmöglichkeiten – Teil I
- Deeplinks und WebViews – Ausnutzungsmöglichkeiten – Teil II
- Vorschlag für ein Deeplink-Problem in Jetpack Navigation