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).


References