Kategoria OWASP: MASVS-PLATFORM: Platform Interaction
Omówienie
Atak StrandHogg / podatność na powiązanie zadań została włączona / spowodowana przez błąd projektowania w sposobie, w jaki Android obsługiwał wiele zadań, w szczególności funkcję zwaną ponownym przypisaniem zadania. Przenoszenie zadania aplikacji to funkcja, która umożliwia aplikacji przeniesienie aktywności z jednego zadania do innego.
Atak StrandHogg wykorzystuje brak jasności co do sposobu sprawdzania przychodzących działań stosu zadań aplikacji i pozwala złośliwej aplikacji na:
- przenoszenie szkodliwych działań do lub z puli ofiar
- ustawić złośliwą aktywność jako stos zwracania po zakończeniu działania ofiary;
Ta luka w zabezpieczeniach jest wykorzystywana przez manipulowanie ustawieniami allowTaskReparenting
i taskAffinity
.
Wpływ
Szkodliwa aplikacja może ustawić wartość atrybutu taskAffinity jednego ze swoich działań tak, aby odpowiadała wartości atrybutu packageName aplikacji docelowej. Może to być połączone z przejęciem intencji, dzięki czemu następnym razem, gdy użytkownik uruchomi aplikację docelową, zostanie uruchomiona również złośliwa aplikacja i wyświetlona nad aplikacją docelową.
W ten sposób można przejąć kontrolę nad działaniami legalnych użytkowników.
Użytkownik może zostać podstępnie nakłoniony do podania danych logowania w złośliwej aplikacji. Po rozpoczęciu aktywności i jej powiązaniu z zadaniem to powiązanie będzie obowiązywać przez cały cykl życia aktywności. Ustawienie wartości prawda dla parametru allowTaskReparenting powoduje jednak zerwanie tego ograniczenia i umożliwia przeniesienie istniejącej aktywności do nowo utworzonego „natywnego” zadania.
Aplikacja A może na przykład być kierowana przez aplikację B, która przekierowuje działania aplikacji A do stosu działań aplikacji B po powrocie z ukończonej aktywności aplikacji A. Przejście z jednej aplikacji do drugiej jest ukryte przed użytkownikiem i stanowi znaczące zagrożenie phishingiem.
Środki zaradcze
Zaktualizuj na android:minSdkVersion="30"
.
W marcu 2019 r. została załatana luka w zabezpieczeniach związana z atakiem StrandHogg / powiązaniem zadań. Wrześniu 2020 r. załatano nowszy i bardziej kompleksowy wariant tej luki. Pakiety SDK Androida w wersji 30 lub nowszej (Android 11) zawierają odpowiednie poprawki systemu operacyjnego, które eliminują tę lukę w zabezpieczeniach. Chociaż można częściowo ograniczyć skuteczność wersji 1 ataku StrandHogg za pomocą konfiguracji poszczególnych aplikacji, wersji 2 można zapobiec tylko za pomocą poprawki w wersji pakietu SDK.
Materiały
- Oryginalny artykuł naukowy opisujący podatność na atak na stronie Usenix 15{.external}
- Rozwinięcie pierwotnej luki przez grupę Promon Security{.external}
- Dokumentacja dla deweloperów aplikacji na Androida dotycząca android:allowTaskReparenting
- Dokumentacja dla deweloperów aplikacji na Androida dotycząca atrybutu android:taskAffinity
- Dokumentacja dla deweloperów Androida dotycząca elementu application android:allowTaskReparenting