Bezpieczeństwo Aplikacji Android: Analiza statyczna i dynamiczna kodu
Android Cyberbezpieczeństwo

Bezpieczeństwo Aplikacji Android: Analiza statyczna i dynamiczna kodu

🔐 Bezpieczeństwo Aplikacji Android: Analiza statyczna i dynamiczna kodu

🧩 Wprowadzenie

W świecie mobilnym, gdzie aplikacje Android są pobierane miliardy razy, bezpieczeństwo kodu źródłowego staje się nie tylko najlepszą praktyką, ale obowiązkiem. Cyberprzestępcy aktywnie analizują aplikacje w poszukiwaniu luk – zanim zrobią to użytkownicy lub zespoły bezpieczeństwa.

Aby temu zapobiec, deweloperzy powinni stosować analizę statyczną i dynamiczną aplikacji już na etapie tworzenia. Dzięki tym metodom można wykryć potencjalne luki w zabezpieczeniach i błędy implementacyjne, które mogą prowadzić do wycieku danych, wykonania złośliwego kodu lub przejęcia aplikacji.


🔍 Czym jest analiza statyczna i dynamiczna kodu?

Rodzaj analizy Opis Etap
Statyczna (SAST) Analiza kodu źródłowego bez jego uruchamiania Przed wdrożeniem
Dynamiczna (DAST) Analiza aplikacji w trakcie działania, np. na emulatorze lub prawdziwym urządzeniu Podczas testów

🛠️ 1. Analiza statyczna kodu Androida

🧠 Na czym polega?

Polega na automatycznym przeszukiwaniu kodu źródłowego (Java, Kotlin, XML, manifesty) w celu:

  • wykrycia błędów logicznych,
  • znalezienia niebezpiecznych wzorców kodowania,
  • identyfikacji nieprawidłowych uprawnień i API.

🧪 Najczęstsze problemy wykrywane podczas SAST:

  • 🔓 Twardo zakodowane dane uwierzytelniające (hasła, tokeny API),
  • 🔍 Nadmierne uprawnienia w AndroidManifest.xml,
  • 🧷 Brak walidacji danych wejściowych (ryzyko XSS, SQLi),
  • 🪟 Niewłaściwe użycie WebView (brak setJavaScriptEnabled(false)),
  • 📦 Otwarte komponenty (exported services, broadcast receivers).
Czytaj  Wykorzystanie Narzędzi do Statycznej Analizy Kodu w Poszukiwaniu Luk w Aplikacjach macOS

🛠️ Popularne narzędzia do analizy statycznej:

  • Android Lint – wbudowane w Android Studio, analizuje XML i Java/Kotlin.
  • SonarQube – rozszerzalny system SAST z integracją CI/CD.
  • MobSF (Mobile Security Framework) – lokalna analiza APK bez kodu źródłowego.
  • FindBugs/SpotBugs, Checkmarx, Fortify – do głębokiej analizy kodu pod kątem podatności OWASP.

Bezpieczeństwo Aplikacji Android: Analiza statyczna i dynamiczna kodu


🧪 2. Analiza dynamiczna aplikacji Android

⚙️ Na czym polega?

Aplikacja uruchamiana jest w środowisku testowym (urządzenie fizyczne lub emulator), a tester analizuje:

  • interakcje z systemem,
  • ruch sieciowy,
  • zachowanie aplikacji pod wpływem manipulacji (np. fuzzing, reverse engineering).

🔍 Co można wykryć?

  • 📡 Wyciek danych w niezaszyfrowanych połączeniach (HTTP zamiast HTTPS),
  • 🪤 Błędy w logice sesji (brak wygasania, przechwytywanie tokenów),
  • 📁 Zapis danych w niezabezpieczonych lokalizacjach (np. /sdcard),
  • 🔁 Ataki typu man-in-the-middle (MITM),
  • 💣 Reakcje aplikacji na modyfikację plików konfiguracyjnych lub pamięci.

🛠️ Narzędzia dynamiczne:

  • Frida – narzędzie do dynamicznego hakowania i analizy runtime.
  • Burp Suite + emulator – do przechwytywania i analizowania ruchu sieciowego.
  • Drozer – testowanie bezpieczeństwa komponentów Androida (exported activities, serwisy).
  • Xposed Framework + modules – do manipulacji zachowaniem aplikacji bez modyfikowania APK.
  • MobSF (tryb dynamiczny) – pozwala na szybkie uruchomienie i monitoring aplikacji w piaskownicy.

🛡️ Najlepsze praktyki bezpieczeństwa kodu Androida

✅ Zasady ogólne

  • 📉 Minimalizuj uprawnienia – żądaj tylko tych, które są absolutnie potrzebne.
  • 🔑 Unikaj twardo zakodowanych kluczy – stosuj Keystore lub dynamiczne tokeny.
  • 🌐 Wymuszaj HTTPS – z pinningiem certyfikatu, jeśli to możliwe.
  • 🗂️ Zaszyfruj dane lokalne – użyj EncryptedSharedPreferences i SQLCipher.
  • 🚷 Nie eksportuj komponentów bez potrzeby (BroadcastReceiver, Service, Activity).
  • 👁️ Loguj ostrożnie – nie pozostawiaj danych uwierzytelniających ani danych użytkownika w logach.

🔁 Integracja z CI/CD

Wdrażaj analizy SAST/DAST w pipeline CI:

  • automatyczna analiza po commitach,
  • blokada merge requestów z krytycznymi lukami,
  • raportowanie problemów w czasie rzeczywistym.
Czytaj  Android 15 – najciekawsze funkcje i triki, które musisz znać w 2025 roku

🧩 Studium przypadku – Praktyczna analiza APK

  1. Pobranie APK z Google Play (lub build testowy).
  2. Decompilacja za pomocą JADX.
  3. Analiza kodu pod kątem:
    • SharedPreferences z danymi użytkownika,
    • WebView bez ograniczeń,
    • BroadcastReceiver ustawiony na exported=true.
  4. Testy dynamiczne w emulatorze z Burp Suite – analiza ruchu HTTP i podatności MITM.
  5. Zgłoszenie błędów zespołowi dev + poprawki w kodzie źródłowym.

✅ Podsumowanie

Bezpieczeństwo Aplikacji Android: Analiza statyczna i dynamiczna kodu to nie tylko domena zespołów security – to odpowiedzialność każdego dewelopera. Stosując SAST i DAST już na etapie developmentu:

  • wykrywasz luki przed atakiem,
  • oszczędzasz czas i pieniądze,
  • budujesz zaufanie użytkowników.

🔐 Bezpieczny kod to profesjonalny kod. Nie zostawiaj bezpieczeństwa na ostatnią chwilę.

 

Polecane wpisy
Programowanie bezbłędne (secure by design): Czy to utopia, czy realna przyszłość?
Programowanie bezbłędne (secure by design): Czy to utopia, czy realna przyszłość?

💻 Programowanie bezbłędne (secure by design): Czy to utopia, czy realna przyszłość? 📌 Wprowadzenie We współczesnym świecie cyfrowym, w którym Czytaj dalej

Ataki typu DNS Spoofing i DNS Poisoning – manipulacja ruchem sieciowym
Ataki typu DNS Spoofing i DNS Poisoning – manipulacja ruchem sieciowym

🌐 Ataki typu DNS Spoofing i DNS Poisoning – manipulacja ruchem sieciowym 🧠 Czym jest DNS? DNS (Domain Name System) Czytaj dalej

Marek "Netbe" Lampart Inżynier informatyki Marek Lampart to doświadczony inżynier informatyki z ponad 25-letnim stażem w zawodzie. Specjalizuje się w systemach Windows i Linux, bezpieczeństwie IT, cyberbezpieczeństwie, administracji serwerami oraz diagnostyce i optymalizacji systemów. Na netbe.pl publikuje praktyczne poradniki, analizy i instrukcje krok po kroku, pomagając administratorom, specjalistom IT oraz zaawansowanym użytkownikom rozwiązywać realne problemy techniczne.