Checklista bezpieczeństwa aplikacji mobilnej według OWASP MASVS - lista kontrolna przed audytem

Checklista bezpieczeństwa aplikacji mobilnej to lista pytań, którą zespoły iOS, Androida i backendu przechodzą przed audytem albo wydaniem aplikacji. Układamy ją według OWASP MASVS 2.1 - ośmiu grup i 24 wymagań - i przy każdym wymaganiu podajemy dowody, które warto przygotować dla audytora. Osobna część dotyczy aplikacji z danymi o zdrowiu. Checklistę przygotował zespół Innovix z Wrocławia, który prowadzi audyty bezpieczeństwa i testy penetracyjne aplikacji mobilnych dla firm z całej Polski.

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

  1. Dla każdego wymagania odpowiedz: spełnione, niespełnione albo nie dotyczy - i zapisz uzasadnienie przy „nie dotyczy”.
  2. Przy wymaganiach spełnionych wskaż dowód: plik konfiguracji, fragment kodu, opis procesu.
  3. 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ć.

Profile OWASP MAS i to, kiedy je wybieramy
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ół.

MASVS-STORAGE - pytania i dowody
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.

MASVS-CRYPTO - pytania i dowody
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ć.

MASVS-AUTH - pytania i dowody
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.

MASVS-NETWORK - pytania i dowody
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.

MASVS-PLATFORM - pytania i dowody
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.

MASVS-CODE - pytania i dowody
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.

MASVS-RESILIENCE - pytania i dowody
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.

MASVS-PRIVACY - pytania i dowody
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.

  1. 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?
  2. Czy dla przetwarzania tych danych przeprowadzono ocenę skutków dla ochrony danych, jeśli odbywa się ono na dużą skalę?
  3. Czy powiadomienie o gotowym wyniku nie ujawnia na zablokowanym ekranie nazwy badania ani wyniku?
  4. Gdzie aplikacja zapisuje PDF z wynikiem i czy plik nie trafia do kopii zapasowej albo folderu dostępnego dla innych aplikacji?
  5. Czy po zmianie numeru zlecenia albo identyfikatora pacjenta w zapytaniu do API nie da się pobrać cudzego wyniku?
  6. 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?
  7. Czy link do wyniku w SMS-ie albo e-mailu wymaga zalogowania i wygasa?
  8. Czy rodzic albo opiekun widzi tylko dane osób, do których ma prawo?
  9. 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.

Najczęściej zadawane pytania

Czym MASVS różni się od MASTG i MASWE?

MASVS mówi, co aplikacja ma spełniać (wymagania), MASWE opisuje słabości, które mogą to wymaganie naruszyć, a MASTG - jak je testować na iOS i Androidzie. W wersji 2.0.0 MASTG te trzy elementy projektu OWASP MAS są ze sobą powiązane, więc od wymagania można przejść do konkretnych testów.

Kto w firmie powinien wypełnić checklistę?

Najlepiej osoby odpowiedzialne za aplikację iOS, aplikację Android i backend, każda w swojej części. Grupę MASVS-PRIVACY warto przejść z osobą odpowiedzialną za ochronę danych, a odpowiedzi „nie dotyczy” zatwierdzić z właścicielem produktu, bo to decyzje o akceptacji ryzyka.

Kiedy aktualizować wypełnioną checklistę?

Po każdym wydaniu, które zmienia sposób przechowywania danych, logowanie, uprawnienia, obsługiwane linki albo listę bibliotek i SDK - inaczej odpowiedzi i dowody opisują poprzednią wersję aplikacji. Listę warto też przejrzeć po nowym wydaniu MASVS, bo zmiana treści albo numeracji wymagań zmienia odwołania w checkliście i w raporcie z audytu.

Czy checklistę można dołączyć do umowy z dostawcą aplikacji?

Tak. W zapytaniu ofertowym albo w umowie wskaż wersję MASVS i profile MAS, których spełnienie ma wykazać dostawca - np. MAS-L1 i MAS-P, a dla aplikacji z danymi o zdrowiu dodatkowo MAS-L2 - a przy odbiorze poproś o wypełnioną listę z dowodem przy każdym wymaganiu, zanim podpiszesz protokół odbioru. Wymagania, których dostawca nie spełnia, łatwiej wtedy rozliczyć jako zadania przed wdrożeniem niż jako poprawki po nim.

Źródła

  1. OWASP Mobile Application Security Verification Standard (MASVS) 2.1 ()
  2. OWASP MASVS - wydania w repozytorium projektu (v2.1.0 oznaczone jako najnowsze) ()
  3. OWASP Mobile Application Security Testing Guide (MASTG) ()
  4. OWASP MASTG - wydania w repozytorium projektu (v2.0.0 oznaczone jako najnowsze) ()
  5. OWASP MAS - profile testów (MAS-L1, MAS-L2, MAS-R, MAS-P), plik źródłowy strony mas.owasp.org/Profiles ()
  6. OWASP MASVS - Using the MASVS (wybór profilu jako decyzja oparta na ryzyku, podjęta z właścicielem biznesowym) ()
  7. Apple - App privacy details on the App Store ()
  8. Apple - Third-party SDK requirements (manifesty prywatności i podpisy SDK) ()
  9. Google Play Console Help - sekcja Bezpieczeństwo danych (Data safety) ()
  10. Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (ogólne rozporządzenie o ochronie danych, RODO), Dz.Urz. UE L 119 z 4.05.2016, ze sprostowaniami: L 127 z 23.05.2018, L 74 z 4.03.2021 - tekst skonsolidowany (Urząd Publikacji UE) ()
  11. Ustawa z dnia 23 stycznia 2026 r. o zmianie ustawy o krajowym systemie cyberbezpieczeństwa oraz niektórych innych ustaw (Dz.U. 2026 poz. 252) ()
  12. Licencja Creative Commons Uznanie autorstwa - Na tych samych warunkach 4.0 Międzynarodowa (CC BY-SA 4.0) - na tej licencji OWASP udostępnia MASVS; pytania listy kontrolnej to opracowanie Innovix na podstawie wymagań MASVS (tłumaczenie i skrót), a nie oficjalny przekład ()

Stan prawny na: Aktualizacja:

Powiązane artykuły

Porozmawiajmy o Twoim projekcie lub audycie

Opisz krótko, czego potrzebujesz - wrócimy z propozycją kolejnych kroków.

lub zadzwoń pod numer +48 575 621 877