Mobilne aplikacije
Penetracijski test mobilnih aplikacij za iOS in Android
Mobilna aplikacija teče na napravi, ki je nimate pod nadzorom. Napadalec ima zato v rokah binarno datoteko, lokalno shrambo in omrežni promet. Pri penetracijskem testu mobilne aplikacije preverimo vse troje – in še zaledni sistem (backend), s katerim aplikacija komunicira.
Testiramo po standardu za preverjanje OWASP MASVS in vodniku za testiranje MASTG, zato je pokritost merljiva in ni odvisna od tega, kdo je aplikacijo ravno testiral.
Zaupajo nam
Mobilne aplikacije
Kaj testiramo v aplikacijah za iOS in Android
Penetracijski test (ali varnostni pregled) mobilne aplikacije zajema veliko več kot zaslone, ki jih vidi uporabnik. Delamo na fizični napravi in z dejansko različico aplikacije (build), po potrebi jo dekompiliramo in instrumentiramo ter preverimo vsako pot, ki bi jo napadalec lahko ubral z ukradenim telefonom ali z napravo s korenskim dostopom (root).
Kadar je aplikacija le lahki odjemalec, se resnično tveganje običajno skriva v vmesniku API za njo – tudi ta je del obsega.
Pokritost po kategorijah MASVS
| Področje | Kaj iščemo |
|---|---|
| Shranjevanje podatkov | Skrivnosti v shrambi SharedPreferences, nešifrirane podatkovne baze, občutljivi podatki v zunanji shrambi, podatki, ki ostanejo v varnostnih kopijah |
| Prenos podatkov | Nešifriran promet, manjkajoče preverjanje potrdil, pripenjanje potrdil (TLS pinning), ki ga je med izvajanjem mogoče zaobiti |
| Poverilnice in seje | V kodo vpisani ključi API, žetoni v dnevniških zapisih, žetoni seje z možnostjo ponovne uporabe (replay), biometrično preverjanje, ki v resnici ničesar ne varuje |
| Zaščita binarne datoteke | Izdajne različice z omogočenim razhroščevanjem, manjkajoče zaznavanje dostopa root in jailbreaka, odpornost proti prepakiranju in spreminjanju aplikacije |
| Vmesniki platforme | Izvožene komponente, zloraba globokih povezav (deep link), mostovi JavaScript v komponenti WebView, path traversal v ponudnikih vsebine (content provider) |
| Dobavna veriga | Kompleti SDK s podtaknjeno zlonamerno kodo, napadi dependency confusion, dinamično nalaganje nepodpisane kode |
Vsaka vrstica vodi do ustreznega poglavja v Haxoris Wiki (v angleščini), kjer opišemo ranljivost, način njene izrabe in odpravo.
Kako poteka test mobilne aplikacije
Test običajne aplikacije traja od začetka do konca dva do štiri tedne, vključno s ponovnim testiranjem (retest).
Določitev obsega
Dogovorimo se o platformah, različici aplikacije, testnih računih in o tem, ali je v obsegu tudi zaledni sistem. Fiksno ceno poznate, še preden se delo začne.
Statična analiza
Aplikacijo dekompiliramo, pregledamo manifest in pravice (entitlements) ter poiščemo skrivnosti, šibko kriptografijo in ostanke razhroščevanja v izdajni različici.
Dinamično testiranje
Na fizični napravi: instrumentacija med izvajanjem, prestrezanje prometa, obhod pripenjanja potrdil, pregled shrambe in zloraba izvoženih vmesnikov.
Testiranje zalednega sistema
Vmesnike API, od katerih je aplikacija odvisna, testiramo enako temeljito kot spletno aplikacijo: avtorizacijo, ranljivosti IDOR, omejitve števila zahtev in poslovno logiko.
Poročilo in ponovni test
Ugotovitve z dokazi in priporočili za odpravo, po uvedbi popravkov pa brezplačen ponovni test.
Kaj dobite
Vsak test mobilne aplikacije vključuje:
Mnenja strank
Kaj o nas pravijo stranke
Penetracijski test mobilnih aplikacij – pogosta vprašanja
01 Ali potrebujete izvorno kodo?
Ne. Privzeto testiramo po metodi black box, z izdajno različico aplikacije. Če nam lahko daste izvorno kodo ali razhroščevalno različico, jo bomo uporabili (testiranje grey box v enakem številu dni odkrije več), vendar to ni pogoj.
02 Ali testirate tako iOS kot Android?
Da. Večina strank testira obe platformi, saj odpovesta vsaka po svoje: v sistemu Android podatki najpogosteje uhajajo prek izvoženih komponent in shrambe, v sistemu iOS pa zaradi napačne uporabe shrambe Keychain in obhoda zaznavanja jailbreaka.
03 Ali je vključen tudi zaledni vmesnik API?
Lahko je – in običajno bi tudi moral biti. Mobilna aplikacija je pogosto le lahki odjemalec nad vmesnikom API, v katerem je prava avtorizacijska logika. Obseg izrecno zapišemo, da ni dvoma o tem, kaj smo preverili.
04 Koliko stane penetracijski test mobilne aplikacije?
Test aplikacije za eno platformo stane od približno 2.000 € naprej. Testiranje obeh platform skupaj z zalednim sistemom običajno obsega 8 do 15 delovnih dni. Fiksno ceno ponudimo po kratkem pogovoru o obsegu.
05 Ali lahko testirate aplikacijo, ki še ni objavljena?
Da, in to je celo boljši čas za test. Pošljite nam podpisano različico – prek TestFlighta, kot datoteko APK ali prek internega kanala za testiranje – in testirali jo bomo, še preden pride do vaših uporabnikov.