Podnoszenie ciężarów

Kategoria OWASP: MASVS-PLATFORM: Platform Interaction

Omówienie

Tapjacking to odpowiednik luki w zabezpieczeniach sieciowych typu clickjacking 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 obszaru dotykowego atakujący nakłada na niego warstwę, aby przejąć zdarzenie dotknięcia:

Obraz z pełnym przesłanianiem

Środki ograniczające ryzyko

Pełne przesłanianie jest zapobiegnięte przez 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 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 ograniczające ryzyko

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 taką sytuacją.

Potencjalne ograniczenie: ta metoda może zakłócać działanie nieszkodliwych aplikacji. W niektórych przypadkach wdrożenie tej poprawki nie jest możliwe, ponieważ negatywnie wpłynęłoby na wrażenia użytkowników, gdy częściowe zasłonięcie jest spowodowane przez nieszkodliwą aplikację.


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 tworzenie okna wyświetlanego nad wszystkimi aplikacjami.

Środki ograniczające ryzyko

Nowsze wersje Androida zawierają kilka środków zaradczych, w tym:

  • Na Androidzie 6 (API na poziomie 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 (poziom interfejsu API 29) i starszych złośliwe aplikacje mogły wyświetlać 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 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 powiadomień w tle i atakom polegającym na wyświetlaniu wielu powiadomień.


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 ograniczające ryzyko

Zobacz ogólne sposoby radzenia sobie z częściowym zasłonięciem. Aby zapewnić kompleksową ochronę, nie eksportuj aktywności, które nie muszą być eksportowane, aby uniemożliwić atakującemu ich przechwycenie.


Materiały