Kategoria OWASP: MASVS-PLATFORM: Platform Interaction
Omówienie
Tapjacking to odpowiednik luki w zabezpieczeniach witryn internetowych polegającej na klikaniu bez wiedzy użytkownika w aplikacjach na Androida. Złośliwa 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 zakrywa obszar dotykowy, a w przypadku częściowego zasłonięcia obszar ten pozostaje odsłonięty.
Wpływ
Ataki typu tapjacking służą do nakłaniania użytkowników do wykonywania określonych działań. Skutki zależą od działania, na które ukierunkowany jest atak.
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 zaradcze
Pełne przesłanianie jest zapobiegnięte przez ustawienie View.setFilterTouchesWhenObscured(true)
w kodzie. Blokuje to kliknięcia przekazywane przez nakładkę. Jeśli wolisz podejście deklaratywne, możesz też dodać android:filterTouchesWhenObscured="true"
w pliku układu dla obiektu View
, który chcesz chronić.
Ryzyko: częściowe zasłonięcie
W przypadku ataków z częściowym zasłonięciem obszar dotykowy pozostaje odsłonięty:
Środki zaradcze
Częściowe zasłonięcie można zminimalizować, ręcznie ignorując zdarzenia dotyku, które mają flagę FLAG_WINDOW_IS_PARTIALLY_OBSCURED
. Nie ma domyślnych zabezpieczeń przed tym scenariuszem.
Android 16 i accessibilityDataSensitive
: począwszy od Androida 16 (API na poziomie 16) deweloperzy mogą używać flagi accessibilityDataSensitive
, aby jeszcze lepiej chronić dane wrażliwe przed złośliwymi usługami ułatwień dostępu, które nie są legalnymi narzędziami ułatwień dostępu. Gdy ta flaga jest ustawiona w przypadku widoków zawierających dane wrażliwe (np. ekranów logowania lub ekranów potwierdzenia transakcji), ogranicza możliwość odczytywania danych wrażliwych lub interakcji z nimi przez aplikacje z uprawnieniami dostępu, chyba że w manifeście aplikacji zadeklarowano, że jest ona isA11yTool=true
. Zapewnia to solidniejszą ochronę na poziomie systemu przed podsłuchiwaniem i atakami polegającymi na wstrzykiwaniu kliknięć, które są charakterystyczne dla scenariuszy częściowego zasłonięcia.
Deweloperzy mogą często włączyć accessibilityDataSensitive
, określając android:filterTouchesWhenObscured="true"
w plikach układu.
Konkretne zagrożenia
W tej sekcji znajdziesz zagrożenia, które wymagają niestandardowych strategii ograniczania ryzyka lub zostały ograniczone na określonym poziomie pakietu SDK i są tu wymienione dla pełności informacji.
Ryzyko: android.Manifest.permission.SYSTEM_ALERT_WINDOW
Uprawnienie SYSTEM_ALERT_WINDOW
umożliwia aplikacji utworzenie okna wyświetlanego nad wszystkimi aplikacjami.
Środki zaradcze
Nowsze wersje Androida zawierają kilka środków zaradczych, w tym:
- Na Androidzie 6 (poziom interfejsu API 23) i nowszym użytkownicy muszą wyraźnie przyznać aplikacji uprawnienia do utworzenia okna nakładki.
- Na Androidzie 12 (poziom interfejsu API 31) i nowszym aplikacje mogą przekazywać wartość
true
do funkcjiWindow.setHideOverlayWindows()
.
Ryzyko: niestandardowy komunikat
Osoba atakująca może użyć Toast.setView()
, aby dostosować wygląd wyskakującego komunikatu. Na Androidzie 10 (API na poziomie 29) i starszych złośliwe aplikacje mogły wyświetlać takie powiadomienia w tle.
Środki zaradcze
Jeśli aplikacja jest kierowana na Androida 11 (API na poziomie 30) lub nowszego, system blokuje niestandardowe powiadomienia w tle. W niektórych przypadkach można jednak obejść to zabezpieczenie, korzystając z serii powiadomień. Atakujący umieszcza w kolejce wiele powiadomień, gdy aplikacja jest na pierwszym planie, a powiadomienia są wyświetlane nawet po przejściu aplikacji w tło.
Od Androida 12 (poziom API 31) w pełni zapobiegamy wyświetlaniu toastów w tle i atakom polegającym na wyświetlaniu wielu toastów.
Ryzyko: kanapka aktywności
Jeśli złośliwa aplikacja przekona użytkownika do jej otwarcia, 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 częściowego zasłaniania.
Środki zaradcze
Zobacz ogólne sposoby ograniczania ryzyka w przypadku częściowego zasłonięcia. Aby zapewnić kompleksową ochronę, upewnij się, że nie eksportujesz aktywności, które nie muszą być eksportowane, aby uniemożliwić atakującemu ich przechwycenie.
Materiały
Zmiany w zasadach dotyczących docelowego poziomu interfejsu API w Sklepie Play
Ataki na Androida wykorzystujące zmianę interfejsu i usługi ułatwień dostępu
Polecane dla Ciebie
- Uwaga: tekst linku jest wyświetlany, gdy JavaScript jest wyłączony.
- android:exported
- # Zarządzanie kluczami {:#key-management}
- Bezpośrednie uruchamianie osadzonego kodu DEX z pakietu APK