Kategoria OWASP: MASVS-PLATFORM: interakcja z platformą
Przegląd
Tapjacking to odpowiednik luki w zabezpieczeniach sieciowych typu clickjacking w aplikacjach na Androida. Szkodliwa aplikacja nakłania użytkownika do kliknięcia elementu sterującego związanego z bezpieczeństwem (np. przycisku potwierdzenia), zasłaniając interfejs nakładką lub w inny sposób. Na tej stronie rozróżniamy 2 warianty ataku: pełne i częściowe zasłonięcie. W przypadku pełnego zasłonięcia atakujący nakłada się na obszar dotykowy, natomiast w przypadku częściowego zasłonięcia obszar dotykowy pozostaje niezasłonięty.
Wpływ
Ataki typu tapjacking mają na celu nakłonienie użytkowników do wykonania określonych działań. Wpływ zależy od działania, które jest celem ataku.
Ryzyko: pełne przesłanianie
W przypadku pełnego zasłonięcia atakujący nakłada się na obszar dotykowy, aby przejąć zdarzenie dotknięcia:

Środki ograniczające ryzyko
Pełnemu przesłanianiu zapobiega ustawienie View.setFilterTouchesWhenObscured(true) w kodzie. Blokuje to dotknięcia przekazywane przez nakładkę. Jeśli wolisz podejście deklaratywne, możesz też dodać android:filterTouchesWhenObscured="true" w pliku układu obiektu View, który chcesz chronić.
Ryzyko: częściowe zasłonięcie
W przypadku ataków polegających na częściowym zasłonięciu obszar dotykowy pozostaje odsłonięty:

Środki ograniczające ryzyko
Możesz ograniczyć częściowe zasłonięcie, ręcznie ignorując zdarzenia dotknięcia, które mają flagę FLAG_WINDOW_IS_PARTIALLY_OBSCURED. Nie ma domyślnych zabezpieczeń
przed tym scenariuszem.
Android 14 i accessibilityDataSensitive: na Androidzie 14 (API na poziomie 34) i nowszym możesz używać flagi accessibilityDataSensitive, aby chronić dane wrażliwe przed szkodliwymi usługami ułatwień dostępu. Gdy ustawisz tę flagę w przypadku widoków poufnych, takich jak ekrany logowania lub potwierdzenia transakcji, tylko usługi, które deklarują android:isAccessibilityTool="true", mogą odczytywać dane widoku lub wykonywać na nim działania związane z ułatwieniami dostępu. Na Androidzie 16 (poziom interfejsu API 36) i nowszych accessibilityDataSensitive blokuje też symulowane gesty dotykowe wstrzykiwane za pomocą AccessibilityService.dispatchGesture przez usługi, które nie deklarują android:isAccessibilityTool="true". Zapewnia to ochronę na poziomie systemu przed podsłuchiwaniem i atakami typu „wstrzykiwanie kodu”, które są charakterystyczne dla scenariuszy częściowego zasłonięcia. Możesz pośrednio włączyć accessibilityDataSensitive, określając android:filterTouchesWhenObscured="true" w plikach układu.
Konkretne zagrożenia
W tej sekcji zebrano zagrożenia, które wymagają niestandardowych strategii zapobiegania lub zostały wyeliminowane na określonym poziomie pakietu SDK. Są tu podane dla zachowania kompletności.
Ryzyko: android.Manifest.permission.SYSTEM_ALERT_WINDOW
Uprawnienie SYSTEM_ALERT_WINDOW umożliwia aplikacji utworzenie okna wyświetlanego nad wszystkimi aplikacjami.
Środki ograniczające ryzyko
W nowszych wersjach Androida wprowadzono kilka środków zaradczych, w tym:
- Na Androidzie 6 (poziom interfejsu API 23) lub nowszym użytkownicy muszą wyraźnie przyznać aplikacji uprawnienia do tworzenia okna nakładki.
- Na Androidzie 12 (poziom interfejsu API 31) i nowszych aplikacje mogą przekazywać
truedoWindow.setHideOverlayWindows().
Ryzyko: niestandardowy komunikat
Atakujący może użyć Toast.setView(), aby dostosować wygląd komunikatu wyskakującego. Na Androidzie 10 (API na poziomie 29) i starszych złośliwe aplikacje mogły uruchamiać takie powiadomienia w tle.
Środki ograniczające ryzyko
Jeśli aplikacja jest kierowana na Androida 11 (API na poziomie 30) lub nowszego, system blokuje niestandardowe powiadomienia toast w tle. W niektórych okolicznościach można jednak obejść to zabezpieczenie, używając serii powiadomień wyskakujących, gdy atakujący umieszcza w kolejce wiele powiadomień wyskakujących na pierwszym planie, które są uruchamiane nawet po przejściu aplikacji do działania w tle.
Od Androida 12 (poziom API 31) powiadomienia toast w tle i ataki polegające na wysyłaniu wielu takich powiadomień są w pełni blokowane.
Ryzyko: aktywność typu „kanapka”
Jeśli szkodliwa aplikacja przekona użytkownika, aby ją otworzył, może uruchomić aktywność z aplikacji ofiary, a następnie nałożyć na nią własną aktywność, tworząc kanapkę aktywności i przeprowadzając atak polegający na częściowym zasłonięciu.
Środki ograniczające ryzyko
Zobacz ogólne sposoby rozwiązywania problemów z częściowym zasłonięciem. Aby zapewnić dogłębną obronę, nie eksportuj aktywności, które nie muszą być eksportowane. Zapobiegnie to ich przechwyceniu przez atakującego.
Zasoby
Zmiany zasad dotyczących docelowego poziomu interfejsu API w Sklepie Play
Ataki na Androida polegające na zmianie interfejsu i wykorzystaniu usługi ułatwień dostępu
Polecane dla Ciebie
- Uwaga: tekst linku jest wyświetlany, gdy język JavaScript jest wyłączony.
- android:exported
- # Zarządzanie kluczami {:#key-management}
- Uruchamianie umieszczonego kodu DEX bezpośrednio z pliku APK