Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book
Klik w niewinnego linka i masz przejęte konto na TikToku [podatność w appce na Androida]
Aktualizujecie na bieżąco appki mobilne, prawda? Wtedy ta wykryta przez Microsoft podatność już Was nie dotyczy.
W czym problem? Otóż appka TikToka korzysta z WebView – co nie jest niczym niestandardowym ani niebezpiecznym. Jak tłumaczy Microsoft:
WebView umożliwia appkom ładowanie i wyświetlanie stron internetowych, a przy użyciu wywołania interfejsu API addJavascriptInterface może również zapewniać funkcjonalność pomostową, która umożliwia kodowi JavaScript na stronie internetowej wywoływanie określonych metod Java określonej klasy w aplikacji.
WebView allows applications to load and display web pages and, using the addJavascriptInterface API call, can also provide bridge functionality that allows JavaScript code in the web page to invoke specific Java methods of a particular class in the app.
Prosty przykład poniżej. Proponuję czytać od linijki 10, gdzie wczytujemy na renderowaną stronę webową JavaScript, który odwołuje się do injectedObject (deklarowanej w linijce 8). Dokładniej – odpalany jest z JavaScriptu injectedObject.toString() – ale uwaga – jest to kod Java zdefiniowany w Appce! Więc z poziomu wczytanej strony można by uruchamiać dowolny w appce?
Nie ma tak prosto – przecież developerzy udostępniają tylko bardzo ograniczone klasy, do których można się dobrać z poziomu takiego mostu. Tak jest też w przypadku TikToka, ale z dużą gwiazdką ;-) Mianowicie:
Zidentyfikowaliśmy klasę, która korzysta z takiego WebView. Rejestruje most JavaScript, który ma dostęp do każdego typu funkcjonalności zaimplementowanej przez klasy pakietu [zredagowano].bridge.*.
We identified a class of interest that makes use of such a WebView. It registers a JavaScript bridge that has access to every type of functionality implemented by the classes of the [redacted].bridge.* package.
Z poziomu strony HTML (JavaScript) działamy tak:
foo – to nazwa funkcji którą chcemy odpalić, a params – to oczywiście przekazane do niej parametry. Jeśli więc udałoby się zmusić appkę do załadowania naszej strony (tj. użytkownik kliknie w przesłanego linka), mamy wykonanie względnej dowolnej metody, która znajduje się w kodzie appki TikToka:
Można to było zrobić mniej więcej takim linkiem: tiktok://webview?url=https://www.example[.]com klikniętym z dowolnego miejsca na telefonie (a to wszystko dzięki funkcji deeplinków, z których śmiało korzysta TikTokowa appka).
Podsumowując:
Przeglądając funkcjonalność dostępną dla kodu JavaScript na stronach internetowych załadowanych do WebView, zidentyfikowaliśmy ponad 70 ujawnionych metod. W połączeniu z ww. exploitem służącym do przejęcia kontroli nad WebView, metody te mogą zostać wywołane w celu udostępnienia funkcji atakującym.
Reviewing the functionality accessible to the JavaScript code in web pages loaded to WebView, we identified more than 70 exposed methods. When paired with an exploit to hijack WebView, such as the vulnerability we discovered, these methods can be invoked to grant functionality to attackers.
Microsoft wspomina np. o dwóch konkretnych możliwościach:
- Wyciągnięcie tokenów uwierzytelniających (z ciasteczek ofiary)
- Modyfikacja / pobranie danych konta TikToka ofiary – np. dostęp do prywatnych plików video czy dokonanie zmian danych profilu ofiary.
Podatność CVE-2022-28799 została naprawiona w wersji 23.7.3 appki androidowej.
~Michał Sajdak
A jak ktoś nie ma konta na TikTaku?
To tylko bierze w rękę popcorn i czyta :-)
Na insta i fb też jest webview i takimi linkami spamują do znudzenia
tak, samo webview jest b. popularne. Nieco mniej popularny bridge z JavaScriptu a jeszcze mniej popularne bugi które mogą być tym wprowadzane :)
Czy da się jakoś na androidzie 12 wymusić częstsze sprawdzanie aktualizacji ? mam włączony net w smartfonie 24/7, włączone automatyczne aktualizacje, zezwolone aktualizacje przez LTE i praktycznie za każdym razem jak wejdę w sklep play i tak jest co najmniej kilka aktualizacji do zainstalowania. Z przyzwyczajenia codziennie rano klikam aktualizacje, to wieczorem kolejne kilka apek do aktualizacji. Czy nie da się tego jakoś zrobić żeby np tel sam co przykładowo godzinę sprawdzał i instalował co tylko jest dostępne ? Mam neta bez limitu więc na danych mi nie zależy.