Kategoria OWASP: MASVS-PLATFORM: Platform Interaction
Omówienie
Zagrożenia dla bezpieczeństwa związane z precyzyjnymi linkami wynikają z ich podstawowej funkcji, czyli umożliwiania płynnej nawigacji i interakcji w aplikacji mobilnej. Liczne luki w zabezpieczeniach precyzyjnych linków wynikają z luk w implementacji lub obsłudze precyzyjnych linków. Te luki mogą zostać wykorzystane przez złośliwe podmioty, aby uzyskać dostęp do funkcji lub danych z podwyższonymi uprawnieniami, co może skutkować naruszeniem bezpieczeństwa danych, naruszeniem prywatności lub nieautoryzowanymi działaniami. Osoby przeprowadzające atak mogą wykorzystać te luki, stosując różne techniki, takie jak przejęcie precyzyjnych linków i ataki na weryfikację danych.
Wpływ
Brak odpowiedniego mechanizmu sprawdzania precyzyjnych linków lub niebezpieczne korzystanie z precyzyjnych linków może ułatwiać złośliwym użytkownikom przeprowadzanie ataków, takich jak obejście weryfikacji hosta, skrypty między aplikacjami i zdalne wykonywanie kodu w kontekście uprawnień podatnej aplikacji. W zależności od charakteru aplikacji może to spowodować nieautoryzowany dostęp do danych lub funkcji wrażliwych.
Środki zaradcze
Zapobieganie przejmowaniu precyzyjnych linków
Z założenia Android pozwala wielu aplikacjom rejestrować filtry intencji dla tego samego identyfikatora URI głębokiego linka. Aby zapobiec przechwyceniu precyzyjnych linków przez złośliwe aplikacje, w elementach intent-filter
w aplikacji AndroidManifest
zastosuj atrybut android:autoVerify
. Dzięki temu użytkownicy mogą wybrać preferowaną aplikację do obsługi precyzyjnych linków, co zapewnia prawidłowe działanie i zapobiega automatycznemu interpretowaniu precyzyjnych linków przez złośliwe aplikacje.
W Androidzie 12 wprowadzono bardziej rygorystyczną obsługę intencji internetowych, aby zwiększyć bezpieczeństwo. Aplikacje muszą teraz zostać zweryfikowane, aby obsługiwać linki z określonych domen. Można to zrobić za pomocą linków aplikacji Android lub wyboru użytkownika w ustawieniach systemu. Zapobiega to przechwyceniu linków przez aplikacje, które nie powinny ich obsługiwać.
Aby włączyć weryfikację obsługi linków w aplikacji, dodaj filtry intencji o tym formacie (ten przykład pochodzi z dokumentacji Weryfikacja linków do aplikacji na Androida):
<!-- Make sure you explicitly set android:autoVerify to "true". -->
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!-- If a user clicks on a shared link that uses the "http" scheme, your
app should be able to delegate that traffic to "https". -->
<data android:scheme="http" />
<data android:scheme="https" />
<!-- Include one or more domains that should be verified. -->
<data android:host="..." />
</intent-filter>
Wdrożenie niezawodnego sprawdzania poprawności danych
Precyzyjne linki mogą zawierać dodatkowe parametry udostępniane celowi docelowemu, np. w celu wykonania dalszych działań. Podstawą bezpiecznego przetwarzania precyzyjnych linków jest rygorystyczna weryfikacja danych. Wszystkie dane przesyłane z precyzyjnych linków powinny być dokładnie weryfikowane i oczyszczane przez deweloperów, aby zapobiec wstrzykiwaniu złośliwego kodu lub wartości do legalnej aplikacji. Można to zaimplementować, sprawdzając wartość dowolnego parametru precyzyjnego linku na tle wstępnie zdefiniowanej listy dozwolonych wartości.
Przed udostępnieniem informacji wrażliwych aplikacje powinny sprawdzić inne stany wewnętrzne, takie jak stan uwierzytelniania lub autoryzacji. Może to być na przykład nagroda za ukończenie poziomu w grze. W takim przypadku warto sprawdzić, czy spełniony jest warunek wstępny, czyli czy poziom został ukończony, a jeśli nie, przekierować użytkownika na ekran główny.
Materiały
- Weryfikacja linków aplikacji na Androida
- Praca z linkami aplikacji na Androida
- Rozwiązywanie intencji w sieci
- Magiczny link do przejęcia konta w aplikacji Arrive
- Precyzyjne linki i wykorzystywanie WebView – część I
- Precyzyjne linki i aplikacje WebView – część II
- Niedawna sugestia dotycząca problemu z precyzyjnymi linkami w Jetpack Compose