// 11 · PENETRAČNÍ TESTOVÁNÍ MOBILNÍCH APLIKACÍ

Penetrační testování mobilních aplikací

Penetrační testování mobilních aplikací prověřuje aplikaci na telefonu i její komunikaci s backendem z pohledu mobilního klienta. Díváme se, co aplikace ukládá do zařízení, jak mluví se serverem, jak řeší přihlášení a co z ní jde vyčíst po dekompilaci. Testujeme Android i iOS podle metodiky OWASP MASVS, tedy standardu pro bezpečnost mobilních aplikací.

// 01

Co na mobilní aplikaci testujeme

Test stojí na dvou přístupech, statické a dynamické analýze. Statická znamená rozebrání buildu bez spuštění: u Androidu dekompilaci APK, u iOS rozbor IPA, hledání natvrdo zadaných klíčů, adres serverů a tajemství přímo v kódu. Dynamická je aplikace za běhu na zařízení, kde sledujeme, co dělá s daty a se sítí. Řídíme se metodikou OWASP MASVS a testovací příručkou MASTG, které pojmenovávají, co se má u mobilní aplikace ověřit.

OWASP přitom nemá jeden seznam na všechno: mobilní aplikace se měří proti MASVS, ne proti webovému seznamu OWASP Top 10. Konkrétně jdeme po lokálním úložišti, tedy co si aplikace ukládá do telefonu a jestli jsou to přihlašovací tokeny, osobní data nebo klíče v čitelné podobě. Dál po komunikaci se serverem: jestli běží po TLS a jestli aplikace ověřuje certifikát serveru (cert pinning, tedy připnutí konkrétního certifikátu, aby se nedal podstrčit cizí). A po autentizaci a správě relací, tedy jak aplikace řeší přihlášení, odhlášení a platnost tokenu.

Poslední vrstva je interakce s telefonem a s prostředím. Sledujeme oprávnění, která si aplikace bere, data, která posílá do logů a do zálohy, a chování na zařízení s odemčeným systémem. Co se u toho liší mezi Androidem a iOS, rozebírá další sekce.

// 02

Android a iOS: co se liší

Android je otevřenější a jeho build se snáz rozebere. APK jde dekompilovat blíž ke zdrojovému kódu, takže se u něj víc práce věnuje tomu, co je vidět v kódu: natvrdo zadané klíče, adresy testovacích serverů, skryté funkce. Sledujeme i oprávnění, která aplikace požaduje, a komponenty, které vystavuje ostatním aplikacím v telefonu.

iOS je uzavřenější, zato se u něj víc řeší lokální úložiště a odolnost proti spuštění na zařízení s jailbreakem, tedy s obejitým omezením systému, kde má útočník nad telefonem plnou kontrolu. Díváme se, jestli aplikace takové prostředí pozná a jak se v něm chová, a jestli citlivá data leží v keychainu, nebo někde, odkud je jde přečíst snáz.

Když aplikace vychází pro obě platformy, testujeme je vedle sebe, protože stejný kód se na Androidu a iOS chová jinak, a v reportu je oddělujeme, aby bylo jasné, který nález platí kde.

// 03

A co backend za aplikací

Mobilní aplikace skoro nikdy nestojí sama, mluví s API na serveru, a část chyb je právě tam. Testujeme backend z pohledu mobilního klienta: jestli server věří tomu, co mu aplikace pošle, jestli si jde říct o cizí data záměnou identifikátoru a jestli kontrola oprávnění běží na serveru, ne jen v aplikaci, kterou má útočník v ruce.

Hranici držíme jasně. Backend testujeme potud, pokud s ním mluví mobilní aplikace. Čistě webové API a aplikaci testujeme zvlášť, protože webový klient a business logika celé aplikace jsou samostatný předmět s vlastním rozsahem. Do jedné zakázky se dá spojit obojí, rozsah se pak sečte.

// 04

Jak se počítá rozsah

Rozsah drží počet platforem (Android, iOS, nebo obojí), velikost a složitost aplikace a to, kolik má rolí a funkcí. Aplikace s přihlášením, platbou a chatem dá víc práce než jednoduchý katalog; u mobilu rozhoduje počet obrazovek a napojených služeb, ne velikost instalačního souboru.

Kalendářně jde o čtyři až šest člověkodnů a jeden až dva týdny od zahájení po předání reportu. Rozsah a délka testu mobilní aplikace vychází z počtu platforem a složitosti, přesnou nabídku dostanete po vymezení rozsahu. Jeden retest opravených nálezů je součástí ceny.

// 05

Co od vás potřebujeme

Nejdřív build aplikace, tedy APK u Androidu a IPA u iOS, nebo přístup k testovací verzi přes TestFlight či interní distribuci. K tomu testovací účty pro každou roli, kterou aplikace zná, ať se dá testovat i to, co vidí přihlášený uživatel, a krátký popis funkcí, aby tester věděl, k čemu aplikace slouží a co v ní nemá jít udělat.

U aplikace, která má vlastní backend, potřebujeme vědět, na které servery se smí sahat, ať se test netrefí do cizí nebo produkční služby mimo rozsah. Pravidla zapojení a okno testování se domlouvají předem stejně jako u ostatních testů.

// 06

Kdy má test mobilní aplikace smysl

Smysl dává u aplikací, které drží něco cenného: přihlášení, platby, zdravotní nebo osobní data, přístup do firemních systémů. Čím citlivější data aplikace zpracovává a čím víc jich leží přímo v telefonu, tím větší je dopad jediné chyby v úložišti nebo v komunikaci.

Načasování je nejlepší před vydáním nové aplikace a po každé větší změně, tedy když přibude platba, přihlašování nebo napojení na nový backend. Test těsně před spuštěním zachytí chyby, dokud se dají opravit levně, ne až po incidentu na produkci. Co na mobilních aplikacích při testech nacházíme, rozebírá článek o nejčastějších chybách mobilních aplikací.

// 07

Klasifikace nálezů

Klasifikace závažnosti zranitelností
ZávažnostCVSS
Critical9.0 – 10.0
High7.0 – 8.9
Medium4.0 – 6.9
Low0.1 – 3.9

// 08

Časté dotazy

Prověření aplikace na telefonu i její komunikace se serverem z pohledu mobilního klienta. Testujeme lokální úložiště, šifrování a ověření certifikátu, autentizaci, kód z dekompilovaného buildu a chování na zařízení s odemčeným systémem. Postupujeme podle OWASP MASVS a nálezy na tento standard mapujeme. Backend testujeme potud, pokud s ním aplikace mluví.

Obojí, a když aplikace vychází pro obě platformy, i současně. Stejný kód se na Androidu a iOS chová jinak: liší se úložiště, oprávnění i způsob, jak se build dá rozebrat. Testujeme každou platformu zvlášť a v reportu je oddělujeme. Když máte jen jednu platformu, testujeme ji samostatně a rozsah je menší.

Podle OWASP MASVS, tedy standardu pro bezpečnost mobilních aplikací, a jeho testovací příručky MASTG. MASVS pojmenovává požadavky na úložiště, kryptografii, síť, autentizaci a odolnost aplikace, MASTG popisuje, jak je ověřit staticky i dynamicky. Nálezy v reportu na MASVS mapujeme, takže víte, který požadavek aplikace nesplnila.

Čtyři až šest člověkodnů a kalendářně jeden až dva týdny od zahájení po předání reportu. Cenu určuje počet platforem a složitost aplikace: přihlášení, platby a role dají víc práce než katalog. Přesné číslo dostanete v nabídce po vymezení rozsahu, orientační rozpětí rozsahů uvádí ceník rozepsaný po službách.

// BONUS KE KAŽDÉ ZAKÁZCE

Jednorázová kontrola úniků dat zdarma

Ke každé naší službě přidáváme jednorázovou kontrolu úniků: řekneme vám, jestli vaše firemní e-maily a hesla leží ke dni kontroly ve veřejných únicích nebo na dark webu. Je to stav k jednomu dni. Kdo chce vědět o úniku, kdykoli se objeví, přejde na průběžné sledování.

Jak průběžné sledování úniků funguje

// DALŠÍ KROK

Rozsah zakázky si projdeme spolu.

Napište nám, co chcete otestovat. Ozveme se a domluvíme si hovor, na kterém upřesníme rozsah, termín i cenu.