Typy aplikacji mobilnych
Od typu aplikacji zależą: powierzchnia ataku, narzędzia analizy (SAST/DAST), sposób dostępu do funkcji urządzenia i typowe wektory nadużyć.
1 Native Apps (iOS: Swift/Obj-C, Android: Kotlin/Java + ewentualnie NDK)
- Dostęp do funkcji urządzenia — aplikacje natywne mają najszersze możliwości. Mogą bezpośrednio korzystać z kamery, mikrofonu, sensorów czy systemów bezpieczeństwa takich jak Secure Enclave na iOS czy Keystore na Androidzie.
- W kontekście pentestów — należy dokładnie badać komunikację z API, przechowywanie danych w Keychain/Keystore oraz sprawdzać mechanizmy zabezpieczające przed inżynierią wsteczną (np. wykrywanie jailbreaka, root check, pinning certyfikatów).
- Artefakty do analizy — testy obejmują pliki instalacyjne (IPA/APK), binarki i zasoby aplikacji. Często spotyka się także kod natywny w C/C++ (NDK), który wymaga dodatkowej analizy reverse engineering.
2 Cross-platform Frameworks (Flutter, React Native, Xamarin/MAUI, Unity)
- Jedna baza kodu — aplikacje są tworzone raz i kompilowane na różne systemy (Android/iOS). Logika aplikacji często znajduje się w plikach charakterystycznych dla danego frameworka.
- W kontekście pentestów — potrzebne są narzędzia potrafiące rozpoznać i analizować strukturę frameworka (np. odpowiednie mapowanie pakietów, hookowanie metod). Analiza kodu wymaga czasem osobnych ścieżek dla SAST i reverse engineering.
- Mieszane podejścia — w jednej aplikacji może wystąpić zarówno kod natywny, jak i cross-platformowy, co oznacza dwa różne wektory analizy.
3 Web Apps (działają w przeglądarce mobilnej)
- Charakterystyka — są to w praktyce strony internetowe dostosowane do wyglądu i działania aplikacji mobilnej. Uruchamiają się w przeglądarce i mają ograniczony dostęp do funkcji urządzenia.
- Aktualizacje — łatwe do utrzymania, bo zmiany wprowadzane są po stronie serwera bez konieczności publikowania nowych wersji w sklepach z aplikacjami.
- W kontekście pentestów — analiza skupia się na warstwie webowej: sesjach, uwierzytelnianiu, nagłówkach CSP, podatnościach XSS czy CSRF. Ryzyka związane z lokalnym storage aplikacji są mniejsze niż w natywnych odpowiednikach.
4 Hybrid Apps (WebView + warstwa natywna; Cordova/Ionic/Onsen itd.)
- Połączenie światów — działają jak aplikacje natywne, ale duża część logiki korzysta z technologii webowych (HTML, CSS, JavaScript), osadzonych w komponencie WebView.
- Dostęp do urządzenia — przez warstwę pośrednią (most web↔native) mogą uzyskiwać dostęp do funkcji telefonu, których zwykłe web aplikacje nie obsługują.
- W kontekście pentestów — mamy dwie powierzchnie ataku:
- WebView (np. ryzyko XSS lub niebezpiecznych interfejsów JavaScript).
- Natywne pluginy (np. podatności związane z uprawnieniami, obsługą
file://, schematami URL lub intentami).
- Mosty JS-Native — kluczowa jest analiza mostów komunikacyjnych. Niewłaściwe zabezpieczenia mogą pozwolić na nieautoryzowane wywołania metod lub wstrzyknięcia kodu.
5 Progressive Web Apps (PWA)
- Charakterystyka — są to aplikacje webowe, które można „zainstalować” z poziomu przeglądarki. Wykorzystują mechanizmy Service Worker i manifest, mogą działać offline.
- Dostęp do funkcji urządzenia — oferują większe możliwości niż zwykłe web aplikacje (np. powiadomienia push), choć nadal ograniczone w porównaniu do aplikacji natywnych. W iOS część API nie jest obsługiwana (np. Face ID, ARKit).
- W kontekście pentestów — należy sprawdzać:
- cache i tryb offline (czy nie zapisują wrażliwych danych),
- poprawność kontroli uprawnień,
- bezpieczeństwo nagłówków HTTP,
- sposób korzystania z funkcji przeglądarki (np. dostęp do pamięci czy lokalnych baz danych).