Aplikacje mobilne nie zawsze bezpieczne ale zawsze pożądane

Dzisiejsze urządzenia mobilne posiadają magazyny pamięci, na których zainstalowane są m.in. systemy operacyjne pozwalające użytkownikowi na łatwą pracę wśród bogatych zbiorów aplikacji mobilnych. Aplikacje mobilne pisane są przy użyciu różnych platform i języków programowania. Kiedyś aplikacje dla starszych urządzeń były pisane głównie w technologii Java ME.

Obecnie używa się tzw. pełnej wersji Java oraz C++ na platformie Android, Objective-C na iOS oraz C# na platformę Windows Phone (Windows Mobile).

Aplikacje mobilne dostarczane są do końcowych użytkowników na zasadzie tzw. sklepów z aplikacjami. Znajdują się w nich aplikacje darmowe oraz płatne. Aktualnie największymi centrami aplikacji są Google Play (Android), AppStore (iOS) i Windows Store (Windows Phone/ Mobile). Szacuje się, że obecnie w największych centrach aplikacji znajduje się ponad 6 milionów aplikacji mobilnych. Centra aplikacji są monitorowane, tzn. że teoretycznie każda aplikacja trafiająca do odpowiedniego sklepu przechodzi testy bezpieczeństwa. Oznacza to, że użytkownik powinien czuć się bezpiecznie pobierając aplikację z zaufanych centrów aplikacji. Czy jednak tak jest w praktyce? Czy można bezgranicznie zaufać każdej aplikacji pochodzącej z tzw. zaufanych źródeł? Jak się okazuje, niestety nie. Co więcej, liczba potencjalnie niebezpiecznych aplikacji zwiększa się i z kwartału na kwartał jest ich więcej.

Według TrendLabs ponad 16 milionów różnych zagrożeń zostało wykrytych przez firmę Trend Micro i jej serwis Mobile App Reputation (usługa w chmurze, która automatycznie identyfikuje zagrożenia mobilne na podstawie różnych zachowań konkretnej aplikacji) w samym tylko sklepie Google Play.

Jak więc złośliwe oprogramowanie dostaje się do użytkowników, mimo że aplikacje są sprawdzane? Dla przykładu, jedna z takich złośliwych aplikacji została zamaskowana jako dodatek o nazwie „Grand Theft Auto V” przeznaczony dla gry „Minecraft (Pocket Edition)”. Ta aplikacja została pobrana ponad 500 000 razy, a jej złośliwy kod jest trudny do wykrycia, ponieważ zawiera się tylko w niewielkiej części całego kodu aplikacji. Tak więc aplikacja z punktu widzenia użytkownika może działać zupełnie poprawnie, a pod spodem w sprytny sposób może wyprowadzać nam prywatne dane z urządzenia mobilnego.

uXDT a aplikacje mobilne

Ostatnio bardzo popularne w implementacji złośliwego kodu jest używanie funkcji uXDT. Niektóre aplikacje mogą używać mikrofonu urządzenia mobilnego, aby słuchać tego co robi użytkownik. Co więcej, aplikacje mogą już używać ultrasonograficznego śledzenia urządzeń (uXDT), aby dowiedzieć się więcej o użytkowniku. Analiza aplikacji dla systemu Android dowodzi, że użycie uXDT rośnie. Programiści coraz częściej integrują uXDT w swoich aplikacjach, aby podsłuchiwać sygnały ultradźwiękowe, które są poza zasięgiem ludzkiego słuchu. Obecnie pomagają one podsłuchiwać za zgodą użytkownika gdzie aktualnie się znajduje lub jakie reklamy ogląda. Natomiast jak możemy się domyślać, możliwości jest dużo więcej i już teraz uXDT wykorzystywane jest do śledzenia aktywności użytkownika poza jego wolą czy świadomością.

Jak zatem poradzić sobie z oceną aplikacji? Czy aplikacja, której drogi czytelniku używasz od zawsze jest na pewno bezpieczna? Oczywiście istnieją metody na analizę aplikacji mobilnych. Oprócz wspomnianych serwisów reputacyjnych można zagłębić się w kod aplikacji i sprawdzić ‘co w trawie piszczy’. Spróbujmy więc zagłębić się trochę w kod pewnej aplikacji służącej do przechowywania haseł. Po pierwsze sprawdźmy jej uprawnienia w pliku AndroidManifest (Ilustracja 1), aby przekonać się do jakich danych aplikacja ma dostęp i jakie aktywności może podejmować.

Aplikacja do przechowywania haseł przedstawiona na ilustracji 2 ma całkiem sporo uprawnień. Zmiana statusu Wi-Fi? Możliwość czytania SMS? Możliwość odczytu spisu połączeń? Możliwość zapisywania dźwięku? Są to zdecydowanie niepokojące sygnały podważające wiarygodność tej aplikacji. Spróbujmy zatem wejść jeszcze głębiej. Aplikacje Android w formie plików .APK to nic innego jak paczki .ZIP. Oznacza to, że aplikację .APK można rozpakować. Jednym z plików po rozpakowaniu aplikacji jest plik classes. dex. Jest to kod bajtowy rozumiany przez system Android. Kod bajtowy można dekompilować do formatu Java, który następnie jest możliwy do analizy.

Wśród zaimplementowanych możliwości aplikacji ukazuje się klasa odpowiedzialna za zapis rozmów głosowych. Analiza tej klasy przekazuje nam jasny sygnał – użytkowanie aplikacji, która miała służyć do przechowywania haseł nie ogranicza się tylko do jej głównego zadania, ale także służy do bezwzględnego śledzenia użytkownika. Analiza każdej kolejnej klasy jednoznacznie potwierdza, że aplikacja to nic innego jak spyware. Uważajmy zatem jakich aplikacji używamy na swoich nowoczesnych urządzeniach mobilnych i starajmy się wybierać zawsze takie, które po pierwsze pochodzą z oficjalnych sklepów aplikacyjnych, a po drugie nie wymagają dostępu do tego, do czego nie powinny. Racjonalne myślenie pomoże użytkować smartfon w bezpieczny sposób.