Mobiliosios aplikacijos
Mobiliųjų aplikacijų įsilaužimų testavimas (iOS ir Android)
Mobilioji aplikacija veikia įrenginyje, kurio organizacija nekontroliuoja: užpuolikui atitenka ir pats aplikacijos paketas, ir įrenginyje saugomi duomenys, ir srautas tarp aplikacijos bei serverio. Tikriname visus tris sluoksnius, o kartu ir API, su kuriuo aplikacija bendrauja.
Testuojama pagal OWASP MASVS tikrinimo standartą ir MASTG testavimo vadovą, todėl testavimo aprėptį galima išmatuoti – rezultatas nepriklauso nuo to, kas konkrečią aplikaciją tikrino.
Mumis pasitiki
Mobiliosios aplikacijos
Ką tikriname iOS ir Android aplikacijose
Naudotojo sąsaja – tik viršutinis mobiliosios aplikacijos sluoksnis. Dirbame su tikru įrenginiu ir ta pačia laida, kuri patenka į „App Store“ ir „Google Play“: dekompiliuojame kodą, prireikus įsiterpiame į aplikacijos veikimą ir einame kiekvienu keliu, kurį užpuolikui atveria pavogtas telefonas ar įrenginys su root arba jailbreak teisėmis.
Kai aplikacija tėra plonas klientas, tikroji rizika beveik visada slypi už jos veikiančiame API: sesijos raktas lieka įrenginyje, o prieigos teisių serverio pusėje niekas nepatikrina. Todėl API įtraukiame į apimtį.
Aprėptis pagal MASVS kategorijas
| Sritis | Ką tikriname |
|---|---|
| Duomenų saugojimas | Slaptažodžiai ir prieigos raktai SharedPreferences ar UserDefaults failuose, nešifruotos duomenų bazės įrenginyje, asmens duomenys išorinėje atmintyje ir duomenys, patenkantys į atsargines kopijas. |
| Duomenų perdavimas | Nešifruotas duomenų srautas, netikrinami sertifikatai, sertifikatų susiejimas (pinning), kurį galima apeiti aplikacijos veikimo metu. |
| Prisijungimo duomenys ir sesijos | Į kodą įrašyti API raktai, į žurnalus patenkantys sesijos raktai, pakartotinai panaudojamos sesijos ir biometrinis patvirtinimas, už kurio nieko neužrakinta. |
| Dvejetainio kodo apsauga | Viešojoje laidoje paliktas derinimo režimas, root ar jailbreak aplinkos neatpažįstanti aplikacija ir silpna apsauga nuo perpakavimo bei kodo keitimo. |
| Platformos sąsajos | Eksportuoti komponentai, piktnaudžiavimas giliosiomis nuorodomis, WebView JavaScript tiltai, kelio perėjimo (path traversal) pažeidžiamumai content provider komponentuose. |
| Tiekimo grandinė | Kenkėjišku kodu užkrėsti SDK, priklausomybių painiojimas (dependency confusion), nepasirašyto kodo įkėlimas veikimo metu. |
Kiekviena eilutė veda į atitinkamą Haxoris Wiki skyrių (anglų kalba): jame aprašome, kaip užpuolikas išnaudoja pažeidžiamumą ir kaip jį pašalinti.
Kaip vyksta mobiliosios aplikacijos testavimas
Tipinei aplikacijai visas darbas kartu su pakartotiniu patikrinimu trunka 2–4 savaites.
Apimties derinimas
Suderiname platformas, testuojamą laidą, testines paskyras ir tai, ar į apimtį įeina API. Fiksuotą kainą pateikiame prieš pradedant darbą, o testuojame tik pagal rašytinį užsakovo leidimą ir sutartą apimtį.
Statinė analizė
Dekompiliuojame laidą, peržiūrime manifestą ir prašomus leidimus, ieškome kode paliktų raktų, silpno šifravimo ir derinimo liekanų.
Dinaminis testavimas
Dirbame su tikru įrenginiu: įsiterpiame į aplikacijos veikimą, perimame duomenų srautą, apeiname sertifikatų susiejimą, tikriname įrenginyje saugomus duomenis ir piktnaudžiaujame eksportuotomis sąsajomis.
API ir serverio pusė
API, kuriuo remiasi aplikacija, tikriname taip pat kruopščiai kaip web aplikaciją: prieigos teises, IDOR, užklausų ribojimus ir verslo logiką.
Ataskaita ir pakartotinis patikrinimas
Prie kiekvieno rasto pažeidžiamumo pridedame įrodymus ir šalinimo žingsnius. Įdiegus pataisymus, juos pakartotinai patikriname be papildomo mokesčio.
Ką gaunate
Į kiekvieną mobiliosios aplikacijos testavimą įeina:
Klientų atsiliepimai
Ką apie mus sako klientai
Mobiliųjų aplikacijų įsilaužimų testavimas – dažniausi klausimai
01 Ar reikia pirminio kodo?
Nereikia. Įprastai dirbame juodosios dėžės principu su viešąja laida. Jei galite pateikti pirminį kodą ar derinimo versiją, ja pasinaudosime: pilkosios dėžės testavimas per tą patį laiką randa daugiau. Tačiau tai nėra būtina sąlyga – jei aplikaciją kūrė partneris ir prie kodo prieiti negalima, patikrinimas vyksta lygiai taip pat.
02 Ar testuojate ir iOS, ir Android?
Taip. Dauguma klientų užsako abi platformas, nes klaidos jose skiriasi: Android dažniau praleidžia duomenis per eksportuotus komponentus ir įrenginio atmintį, iOS – per netinkamai naudojamą „Keychain“ ir apeinamą jailbreak aptikimą.
03 Ar į apimtį įtraukiamas ir API?
Paprastai taip. Mobilioji aplikacija dažnai tėra plonas klientas, o tikroji prieigos teisių logika veikia API pusėje. Apimtį aprašome sutartyje, kad vėliau nekiltų ginčų, kas buvo patikrinta, o kas ne.
04 Kiek kainuoja mobiliosios aplikacijos įsilaužimų testavimas?
Kainą lemia apimtis: kiek platformų tikriname, kokio dydžio ir kokio sudėtingumo yra aplikacija, ar joje vykdomi mokėjimai ir ar į apimtį įeina API. Vienos platformos aplikacija kainuoja nuo 2 000 €. Abi platformos kartu su API paprastai pareikalauja 8–15 specialisto darbo dienų. Po trumpo pokalbio apie apimtį pateikiame fiksuotą kainą už visą darbą, įskaitant pakartotinį patikrinimą.
05 Ar galite patikrinti dar nepaskelbtą aplikaciją?
Taip, ir tai – geriausias metas. Atsiųskite pasirašytą laidą: „TestFlight“, APK failą arba prieigą prie vidinio platinimo kanalo, ir patikrinsime ją anksčiau, nei aplikacija pasieks naudotojus.