OWASP-Kategorie:MASVS-PLATFORM: Platform Interaction
Übersicht
Tapjacking ist das Android-App-Äquivalent der Clickjacking-Websicherheitslücke: Eine schädliche App verleitet den Nutzer dazu, auf ein sicherheitsrelevantes Steuerelement (Bestätigungsschaltfläche usw.) zu klicken, indem sie die Benutzeroberfläche mit einem Overlay oder auf andere Weise verdeckt. Auf dieser Seite unterscheiden wir zwei Angriffsvarianten: vollständige und teilweise Verdeckung. Bei vollständiger Verdeckung wird der Touchbereich überlagert, bei teilweiser Verdeckung bleibt er unversehrt.
Positiv beeinflussen
Bei Tapjacking-Angriffen werden Nutzer dazu verleitet, bestimmte Aktionen auszuführen. Die Auswirkungen hängen von der Aktion ab, die der Angreifer im Visier hat.
Risiko: Vollständige Verdeckung
Bei vollständiger Verdeckung überlagert der Angreifer den Touchbereich, um das Touch-Ereignis zu manipulieren:
Maßnahmen zur Risikominderung
Eine vollständige Verdeckung wird durch die Einstellung View.setFilterTouchesWhenObscured(true)
im Code verhindert. Dadurch werden Berührungen blockiert, die von einem Overlay weitergeleitet werden. Wenn Sie einen deklarativen Ansatz bevorzugen, können Sie auch android:filterTouchesWhenObscured="true"
in der Layoutdatei für das View
-Objekt hinzufügen, das Sie schützen möchten.
Risiko: Teilweise Verdeckung
Bei Angriffen mit teilweiser Verdeckung bleibt der Touchbereich frei:
Maßnahmen zur Risikominderung
Eine teilweise Verdeckung wird dadurch behoben, dass Touch-Ereignisse mit dem Flag FLAG_WINDOW_IS_PARTIALLY_OBSCURED
manuell ignoriert werden. Es gibt keinen Standardschutz gegen dieses Szenario.
Möglicher Nachteil:Diese Maßnahme kann die Funktion von harmlosen Apps beeinträchtigen. In einigen Fällen ist die Einführung dieser Korrektur nicht möglich, da sie die Nutzerfreundlichkeit beeinträchtigen würde, wenn die teilweise Verdeckung durch eine harmlose Anwendung verursacht wird.
Spezifische Risiken
In diesem Abschnitt werden Risiken zusammengefasst, für die nicht standardmäßige Maßnahmen erforderlich sind oder die auf einer bestimmten SDK-Ebene behoben wurden. Die Informationen sind hier der Vollständigkeit halber aufgeführt.
Risiko: android.Manifest.permission.SYSTEM_ALERT_WINDOW
Mit der Berechtigung SYSTEM_ALERT_WINDOW
kann eine App ein Fenster erstellen, das über allen Apps angezeigt wird.
Maßnahmen zur Risikominderung
In neueren Android-Versionen wurden mehrere Maßnahmen eingeführt, darunter die folgenden:
- Unter Android 6 (API-Level 23) und höher müssen Nutzer explizit die Berechtigung für die App erteilen, ein Overlay-Fenster zu erstellen.
- Unter Android 12 (API‑Level 31) und höher können Apps
true
anWindow.setHideOverlayWindows()
übergeben.
Risiko: Benutzerdefinierter Toast
Ein Angreifer kann Toast.setView()
verwenden, um das Erscheinungsbild einer Toast-Nachricht anzupassen. Unter Android 10 (API‑Level 29) und niedriger konnten schädliche Apps solche Pop‑up-Benachrichtigungen im Hintergrund starten.
Maßnahmen zur Risikominderung
Wenn eine App auf Android 11 (API‑Level 30) oder höher ausgerichtet ist, blockiert das System benutzerdefinierte Hintergrund-Toasts. Diese Maßnahme kann jedoch unter Umständen durch Toast-Burst umgangen werden. Dabei reiht der Angreifer mehrere Toasts ein, während die App im Vordergrund ist. Diese werden dann auch nach dem Wechsel in den Hintergrund weiterhin gestartet.
Hintergrund-Toasts und Toast-Burst-Angriffe werden ab Android 12 (API-Level 31) vollständig abgemildert.
Risiko: Aktivitätssandwich
Wenn eine schädliche App einen Nutzer dazu bringt, sie zu öffnen, kann sie trotzdem eine Aktivität aus der Opfer-App starten und sie anschließend mit ihrer eigenen Aktivität überlagern. So entsteht ein Activity-Sandwich und ein partieller Okklusionsangriff.
Maßnahmen zur Risikominderung
Informationen zu allgemeinen Maßnahmen zur Minderung bei teilweiser Verdeckung Achten Sie im Sinne einer umfassenden Sicherheitsstrategie darauf, dass Sie keine Aktivitäten exportieren, die nicht exportiert werden müssen, um zu verhindern, dass ein Angreifer sie abfängt.
Ressourcen
Empfehlungen für dich
- Hinweis: Linktext wird angezeigt, wenn JavaScript deaktiviert ist.
- android:exported
- # Schlüsselverwaltung {:#key-management}
- Eingebetteten DEX-Code direkt aus dem APK ausführen