Podnoszenie ciężarów

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:

Obraz z pełnym przesłanianiem

Ś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:

Obraz z częściowym zasłonięciem

Ś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 funkcji Window.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