Audyt bezpieczeństwa aplikacji mobilnej idzie szybciej i daje więcej, gdy zespół przed startem wie, o co zapyta audytor, i ma pod ręką dowody. Ta checklista przekłada wymagania OWASP MASVS na pytania dla programistów iOS, Androida i backendu oraz na listę dokumentów do przygotowania. Możesz jej użyć do samooceny przed wydaniem, przed audytem albo przy odbiorze aplikacji od dostawcy.
Czym jest OWASP MASVS i która wersja jest aktualna
OWASP MASVS (Mobile Application Security Verification Standard) to standard wymagań bezpieczeństwa aplikacji mobilnych, używany przez architektów, programistów i testerów. Według stanu na 19 października 2026 r. najnowszym wydaniem jest MASVS 2.1 (v2.1.0): 24 wymagania w ośmiu grupach, od przechowywania danych po prywatność. Uzupełniają go dwa elementy projektu OWASP MAS: MASTG (Mobile Application Security Testing Guide), który opisuje, jak testować, i MASWE - katalog słabości łączący wymagania z testami. MASTG w wersji 2.0.0 z czerwca 2026 r. zakończył przebudowę przewodnika; testy z wersji 1 są jeszcze przez pewien czas dostępne, ale nie są już utrzymywane.
Treść wymagań podajemy w naszym tłumaczeniu - wiążące jest brzmienie angielskie w standardzie. Pytania i dowody to opracowanie Innovix, a nie część MASVS.
Jak korzystać z checklisty
- Dla każdego wymagania odpowiedz: spełnione, niespełnione albo nie dotyczy - i zapisz uzasadnienie przy „nie dotyczy”.
- Przy wymaganiach spełnionych wskaż dowód: plik konfiguracji, fragment kodu, opis procesu.
- Braki zamień w zadania z właścicielem i terminem, zanim aplikacja trafi do audytu.
Nie każda aplikacja musi spełniać wszystkie 24 wymagania. OWASP grupuje je w profile testów, a wybór profilu ma być decyzją opartą na ryzyku, podjętą z właścicielem biznesowym aplikacji; odstępstwa od zaleceń warto uzasadnić i udokumentować.
| Profil | Założenie o atakującym (według OWASP) | Kiedy wybieramy (nasza praktyka) |
|---|---|---|
| MAS-L1 | Przeciwnikiem są inne aplikacje zainstalowane na urządzeniu | Każda aplikacja - to profil podstawowy |
| MAS-L2 | Systemowi operacyjnemu nie można ufać, a atakujący może mieć fizyczny dostęp do urządzenia | Aplikacje bankowe, płatnicze, medyczne i firmowe z danymi poufnymi |
| MAS-R | Atakującym jest użytkownik urządzenia, w tym osoby zajmujące się inżynierią wsteczną i oszukiwaniem | Aplikacje bankowe i płatnicze oraz te, w których model biznesowy zależy od tego, czego aplikacja pozwala użytkownikowi (płatne treści, gry, limity) |
| MAS-P | Profil nie skupia się na atakującym, tylko na ochronie danych osobowych i odpowiedzialnym ich przetwarzaniu | Każda aplikacja, która zbiera dane osobowe - zwłaszcza z bibliotekami analitycznymi |
Co przygotować przed audytem aplikacji mobilnej
- wersje aplikacji - plik IPA albo dostęp przez TestFlight, plik APK lub AAB albo zamknięte testy w Google Play, w wersji możliwie bliskiej produkcyjnej,
- konta testowe - po dwa w każdej roli, z danymi przykładowymi, a nie danymi prawdziwych użytkowników,
- opis backendu - specyfikacja API (np. OpenAPI), środowisko testowe i kontakt techniczny,
- lista bibliotek i SDK - z wersjami i celem użycia (analityka, raportowanie awarii, reklamy, logowanie, płatności),
- deklaracje prywatności - odpowiedzi w App Store Connect, sekcja Bezpieczeństwo danych w Google Play i polityka prywatności,
- przepływy danych - jakie dane osobowe aplikacja zbiera, gdzie je zapisuje i komu przekazuje,
- poprzednie raporty - z testów i skanów, żeby audyt nie zaczynał od zera.
Zgody, okna testów i kontakty awaryjne opisujemy w artykule jak przygotować firmę do testu penetracyjnego.
MASVS-STORAGE: dane zapisane na urządzeniu
Ta grupa dotyczy danych, które zostają na telefonie dłużej albo w innym miejscu, niż zakładał zespół.
| Wymaganie MASVS | Pytania dla zespołu | Dowody do przygotowania |
|---|---|---|
| MASVS-STORAGE-1: aplikacja bezpiecznie przechowuje dane wrażliwe | Jakie dane wrażliwe aplikacja zapisuje na urządzeniu - tokeny, dane osobowe, pliki? Czy sekrety trafiają do Keychain i Android Keystore, a nie do UserDefaults czy SharedPreferences w postaci jawnej? | Lista danych zapisywanych lokalnie z miejscem zapisu; opis użycia Keychain i Android Keystore |
| MASVS-STORAGE-2: aplikacja zapobiega wyciekom danych wrażliwych | Czy dane nie trafiają do logów, kopii zapasowych, schowka, pamięci podręcznej ani do podglądu ekranu w przełączniku aplikacji? | Ustawienia kopii zapasowych dla iOS i Androida; zasady logowania w wersji produkcyjnej |
MASVS-CRYPTO: kryptografia i klucze
Tu nie chodzi o to, czy aplikacja szyfruje, tylko czym, w jakim trybie i skąd bierze klucz.
| Wymaganie MASVS | Pytania dla zespołu | Dowody do przygotowania |
|---|---|---|
| MASVS-CRYPTO-1: aplikacja stosuje aktualną, silną kryptografię zgodnie z dobrymi praktykami | Jakich algorytmów i trybów używa aplikacja? Czy liczby losowe pochodzą z bezpiecznego generatora systemu? Czy w kodzie nie ma własnych implementacji szyfrów? | Lista bibliotek kryptograficznych i algorytmów z miejscem użycia |
| MASVS-CRYPTO-2: aplikacja zarządza kluczami zgodnie z dobrymi praktykami | Skąd pochodzą klucze, gdzie są przechowywane i kiedy się je wymienia? Czy żaden klucz nie jest zaszyty w kodzie ani w zasobach aplikacji? | Opis cyklu życia kluczy; wynik przeszukania repozytorium i paczki aplikacji pod kątem sekretów |
MASVS-AUTH: logowanie, sesja i operacje wrażliwe
Decyzje o dostępie muszą zapadać na serwerze. Aplikacja może je tylko ułatwiać.
| Wymaganie MASVS | Pytania dla zespołu | Dowody do przygotowania |
|---|---|---|
| MASVS-AUTH-1: aplikacja używa bezpiecznych protokołów uwierzytelniania i autoryzacji | Czy logowanie korzysta z OAuth 2.0 i OpenID Connect z PKCE? Czy uprawnienia sprawdza serwer przy każdym żądaniu? Jak długo żyją tokeny i czy da się je unieważnić? | Schemat przepływu logowania, specyfikacja API, macierz ról i uprawnień |
| MASVS-AUTH-2: aplikacja bezpiecznie realizuje uwierzytelnianie lokalne | Czy biometria odblokowuje klucz w Keychain lub Android Keystore, czy tylko zwraca logice aplikacji wynik „tak” albo „nie”? Co się dzieje po dodaniu nowego odcisku palca albo twarzy w systemie? | Opis implementacji biometrii i kodu PIN |
| MASVS-AUTH-3: aplikacja zabezpiecza operacje wrażliwe dodatkowym uwierzytelnieniem | Które operacje wymagają ponownego potwierdzenia - zmiana numeru telefonu, rachunku, udostępnienie danych? Czy wymusza to serwer, a nie sam interfejs? | Lista operacji wrażliwych z opisem wymaganego potwierdzenia |
MASVS-NETWORK: komunikacja z serwerem
Ruch aplikacji każdy może podejrzeć na własnym telefonie, więc konfiguracja połączeń musi zakładać, że ktoś patrzy.
| Wymaganie MASVS | Pytania dla zespołu | Dowody do przygotowania |
|---|---|---|
| MASVS-NETWORK-1: aplikacja zabezpiecza cały ruch sieciowy zgodnie z aktualnymi dobrymi praktykami | Czy cały ruch idzie przez TLS? Czy App Transport Security i Network Security Configuration nie mają wyjątków dopuszczających ruch nieszyfrowany? Czy wersja produkcyjna nie akceptuje dowolnych certyfikatów? | Pliki konfiguracji ATS i Network Security Configuration; lista domen, z którymi łączy się aplikacja, także przez SDK |
| MASVS-NETWORK-2: aplikacja przypina tożsamość (pinning) wszystkich serwerów pod kontrolą wydawcy | Czy aplikacja stosuje pinning dla własnego API? Jak wygląda wymiana certyfikatu, żeby nie odciąć użytkowników starszych wersji? | Opis implementacji pinningu i procedury wymiany certyfikatów |
MASVS-PLATFORM: linki, WebView i interfejs
Miejsca, w których aplikacja przyjmuje dane od systemu i innych aplikacji, są jej drzwiami bocznymi.
| Wymaganie MASVS | Pytania dla zespołu | Dowody do przygotowania |
|---|---|---|
| MASVS-PLATFORM-1: aplikacja bezpiecznie korzysta z mechanizmów komunikacji między procesami | Które komponenty Androida są eksportowane? Jakie schematy URL, Universal Links i App Links obsługuje aplikacja? Czy link głęboki może otworzyć ekran z danymi bez logowania? | Manifest aplikacji Android; lista linków głębokich z parametrami |
| MASVS-PLATFORM-2: aplikacja bezpiecznie używa WebView | Czy WebView ładuje tylko zaufane treści? Czy ma włączony JavaScript i mostki do kodu natywnego? Czy może otworzyć pliki lokalne? | Lista ekranów z WebView i ładowanych adresów |
| MASVS-PLATFORM-3: aplikacja bezpiecznie korzysta z interfejsu użytkownika | Czy ekrany z danymi wrażliwymi są ukrywane w przełączniku aplikacji i chronione przed zrzutami ekranu tam, gdzie to potrzebne? Czy powiadomienia nie pokazują treści na zablokowanym ekranie? | Lista ekranów wrażliwych i treści powiadomień |
MASVS-CODE: wersje, aktualizacje i dane wejściowe
Aplikacja w telefonie użytkownika żyje latami, więc liczy się też to, jak wycofać wersję z błędem.
| Wymaganie MASVS | Pytania dla zespołu | Dowody do przygotowania |
|---|---|---|
| MASVS-CODE-1: aplikacja wymaga aktualnej wersji platformy | Jaka jest minimalna wersja iOS i Androida i czy zapewnia mechanizmy bezpieczeństwa, na których polega aplikacja? | Ustawienia minimalnej i docelowej wersji systemu |
| MASVS-CODE-2: aplikacja ma mechanizm wymuszania aktualizacji | Czy serwer potrafi odrzucić wersję ze znaną podatnością i wymusić aktualizację? | Opis mechanizmu wymuszania aktualizacji i kryteriów jego użycia |
| MASVS-CODE-3: aplikacja używa tylko komponentów bez znanych podatności | Czy znasz pełną listę bibliotek i SDK z wersjami? Kto i jak często sprawdza ich podatności? | Lista zależności (SBOM) i wynik ostatniego skanu SCA |
| MASVS-CODE-4: aplikacja waliduje i oczyszcza wszystkie niezaufane dane wejściowe | Czy dane z linków głębokich, powiadomień push, kodów QR i plików są sprawdzane przed użyciem? | Lista źródeł danych zewnętrznych i miejsc walidacji |
MASVS-RESILIENCE: odporność na analizę i modyfikację
Ta grupa odpowiada profilowi MAS-R. W wielu aplikacjach ważniejsze jest, by bezpieczeństwo nie zależało od tego, co dzieje się na telefonie - wtedy odpowiedź „nie dotyczy” z uzasadnieniem jest w porządku.
| Wymaganie MASVS | Pytania dla zespołu | Dowody do przygotowania |
|---|---|---|
| MASVS-RESILIENCE-1: aplikacja weryfikuje integralność platformy | Czy aplikacja wykrywa urządzenie z root lub jailbreakiem i co robi po wykryciu? Czy to wymóg wynikający z modelu zagrożeń? | Uzasadnienie w modelu zagrożeń; opis reakcji aplikacji |
| MASVS-RESILIENCE-2: aplikacja ma mechanizmy przeciw modyfikacji | Czy aplikacja wykrywa zmodyfikowaną paczkę albo zmieniony podpis? Czy serwer weryfikuje integralność aplikacji, zamiast ufać jej deklaracji? | Opis mechanizmów i ich weryfikacji po stronie serwera |
| MASVS-RESILIENCE-3: aplikacja utrudnia analizę statyczną | Czy kod jest zaciemniony tam, gdzie chroni wartość biznesową? Czy w paczce nie zostały symbole debugowania ani adresy środowisk testowych? | Ustawienia zaciemniania w procesie budowania |
| MASVS-RESILIENCE-4: aplikacja utrudnia analizę dynamiczną | Czy aplikacja wykrywa debugger i narzędzia instrumentacji? Czy reakcja nie psuje działania u zwykłych użytkowników? | Opis mechanizmów i wyniki sprawdzeń na urządzeniach testowych |
MASVS-PRIVACY: dane osobowe i deklaracje w sklepach
Za dane zbierane przez biblioteki zewnętrzne odpowiada wydawca aplikacji: Apple wymaga opisania w App Store Connect praktyk prywatności także partnerów, których kod jest w aplikacji, a Google Play - uwzględnienia w sekcji Bezpieczeństwo danych danych zbieranych przez biblioteki i SDK.
| Wymaganie MASVS | Pytania dla zespołu | Dowody do przygotowania |
|---|---|---|
| MASVS-PRIVACY-1: aplikacja ogranicza dostęp do danych i zasobów wrażliwych do minimum | Czy każde uprawnienie - lokalizacja, aparat, kontakty, dane o zdrowiu - ma uzasadnienie w konkretnej funkcji? | Lista uprawnień z celem użycia |
| MASVS-PRIVACY-2: aplikacja zapobiega identyfikacji użytkownika | Czy aplikacja i SDK nie wysyłają stałych identyfikatorów urządzenia ani danych, które pozwalają powiązać użytkownika między usługami? | Lista identyfikatorów wysyłanych przez aplikację i każdą bibliotekę |
| MASVS-PRIVACY-3: aplikacja przejrzyście informuje o zbieraniu i wykorzystaniu danych | Czy deklaracje w App Store Connect i sekcja Bezpieczeństwo danych w Google Play obejmują także dane zbierane przez SDK? Czy są aktualne po ostatnim wydaniu? | Aktualne deklaracje ze sklepów, polityka prywatności, lista SDK |
| MASVS-PRIVACY-4: aplikacja daje użytkownikowi kontrolę nad jego danymi | Czy użytkownik może wycofać zgodę, pobrać swoje dane i usunąć konto? | Opis funkcji zgód, eksportu danych i usuwania konta |
Aplikacje z danymi o zdrowiu - dodatkowe pytania
Aplikacje pacjenta, portale wyników i aplikacje laboratoriów przetwarzają dane szczególnej kategorii, więc do checklisty warto dopisać pytania, których MASVS nie stawia wprost. Stan na: październik 2026.
- Czy wiesz, które dane w aplikacji są danymi o zdrowiu - także te, z których da się wywnioskować stan zdrowia, jak nazwa zleconego badania?
- Czy dla przetwarzania tych danych przeprowadzono ocenę skutków dla ochrony danych, jeśli odbywa się ono na dużą skalę?
- Czy powiadomienie o gotowym wyniku nie ujawnia na zablokowanym ekranie nazwy badania ani wyniku?
- Gdzie aplikacja zapisuje PDF z wynikiem i czy plik nie trafia do kopii zapasowej albo folderu dostępnego dla innych aplikacji?
- Czy po zmianie numeru zlecenia albo identyfikatora pacjenta w zapytaniu do API nie da się pobrać cudzego wyniku?
- Czy biblioteki analityczne i raportowanie awarii nie dostają nazw badań, parametrów z ekranów wyników ani identyfikatorów pacjenta - i czy deklaracje w sklepach obejmują dane o zdrowiu, jeśli aplikacja je zbiera?
- Czy link do wyniku w SMS-ie albo e-mailu wymaga zalogowania i wygasa?
- Czy rodzic albo opiekun widzi tylko dane osób, do których ma prawo?
- Czy placówka albo laboratorium, dla którego działa aplikacja, podlega ustawie o KSC - i czy jako dostawca jesteś gotów odpowiedzieć na pytania o bezpieczeństwo w łańcuchu dostaw?
Testy aplikacji pacjenta, portali wyników, systemów laboratoryjnych i ich integracji opisujemy na stronie testów bezpieczeństwa systemów medycznych.
Checklista a audyt - co dalej
Checklista mówi, co zespół deklaruje. Audyt sprawdza, co aplikacja naprawdę robi: tester rozpakowuje ją, obserwuje ruch sieciowy i zapisy na urządzeniu, wysyła do API żądania z pominięciem interfejsu i porównuje wynik z deklaracjami. Rozbieżności, których szukamy w pierwszej kolejności, to sekrety uznane za „zaszyfrowane”, choć klucz leży obok w tej samej paczce, oraz biblioteki wysyłające dane przed zgodą użytkownika.
Zakres, przebieg i raport opisujemy na stronie audytu bezpieczeństwa i testów penetracyjnych aplikacji mobilnych, a różnice między skanem, pentestem i audytem - w artykule pentest, skan podatności czy audyt bezpieczeństwa.