Mobiliisovelluksen tietoturvatestaus alkaa yleensä pyynnöllä kytkeä pois sovelluksen mahdolliset turvaominaisuudet. Joskus tästä pyynnöstä tulee asiakkailta ihmettelyä, eikä pyyntöä ymmärretä kokonaisuudessaan. Ymmärrämme asiakkaidemme huolen siitä, että poisto voi tuntua pelottavalta, mutta mistä tämä pyyntö johtuu ja mitä kaikkea pyyntö koskee?
Mitä turvaominaisuuksia sovelluksissa yleensä on?
Kaikkein yleisimmät suojaukset, joita pyydämme poistamaan ovat SSL Pinning ja Root/jailbreak detection.
SSL Pinningille ei ole vakiintunutta suomenkielistä sanaa, mutta sitä voisi kutsua vaikka SSL varmistukseksi. Siinä mobiilisovellukseen tallennetaan tietyn palvelimen SSL-sertifikaatti tai julkinen avain ja yhteys sallitaan vain, jos sertifikaatti vastaa tätä tallennettua arvoa. Tällä varmistetaan, että sovellus kommunikoi vain luotettavan palvelimen, eli yleensä asiakkaan oman palvelimen, kanssa.
Root tai jailbreak detection voisi vapaasti suomennettuna olla suojauksista puretun laitteen tunnistaminen. Roottaukseksi kutsutaan Android puhelimen avaamista järjestelmänvalvojan oikeuksille ja jailbreak tarkoittaa samaa asiaa, mutta Apple puhelimille. Jatkossa puhutaan selvyyden vuoksi vain roottauksesta, mutta tarkoitetaan kumpaakin.
Puhelimeen tarvitaan järjestelmänvalvojan oikeudet, jotta tietoturvatestaamisen aikana päästään tarkistamaan mitä tietoja sovellukset tallentavat puhelimen muistiin, sekä lukemaan ja muokkaamaan sovelluksen verkkoliikennettä tietoturvatestaamisen vaativalla tavalla.
Miksi laitteissa on turvaominaisuuksia?
Kaupasta ostetuissa puhelimissa on ominaisuuksia, joilla rajoitetaan puhelimen ominaisuuksia, jotta puhelinten käyttäminen olisi turvallisempaa. Esimerkiksi jokaisella puhelimeen asennetulla sovelluksella on oma osio, johon sovellus voi tallettaa tietoa, eikä tähän kansioon pääse käsiksi ilman, että puhelimelle on annettu täydet järjestelmänvalvojan oikeudet.
Näiden sovellusten omien tallennusosioiden lisäksi järjestelmänvalvojan oikeudet mahdollistavat käyttöjärjestelmän muokkaamisen avaamalla puhelimesta ominaisuuksia, jotka on otettu pois käytöstä turvallisuussyistä. Tällaisia ominaisuuksia on esimerkiksi laajojen varmuuskopioiden ottaminen laitteesta tai kustomoidun käyttöjärjestelmän asentaminen laitteen valmistajan käyttöjärjestelmän tilalle.
Jotkut sovellukset yrittävät tunnistaa, jos puhelin on rootattu, koska se samalla tarkoittaa, että puhelimella olevat tiedot voivat olla vaarantuneet. Esimerkiksi pankkisovellukset usein estävät tästä syystä sovelluksen käyttämisen rootatulla puhelimella.
Miten mobiilisovelluksen tietoturvatestaus toteutetaan?
Jotta mobiilisovelluksen tietoturvatestaus voidaan tehdä kunnolla ja asiakkaan kanssa sovitulla laajuudella, on testaajan asennettava testattava sovellus rootatulle laitteelle. Sovellusta ei voi käyttää rootatussa puhelimessa, jos siihen on asetettu suojausmekanismeja tarkistamaan onko puhelimen suojaukset avattu.
Testausta ei pysty kunnolla tekemään ilman roottausta, koska testauksessa pitää pystyä tarkistamaan, mitä tietoa sovellus tallentaa käyttöjärjestelmätasolla näihin aiemmin mainittuihin sovellusten omiin kansioihin. Tällä esimerkiksi varmistetaan, että sensitiivistä tietoa ei tallenneta tavalla, joka vaarantaa käyttäjään liitetyt tiedot tai että salassa pidettäviä asioita, kuten API avaimia, ei vahingossa vuodeta käyttöjärjestelmän tallennustilaan.
Rootatun puhelimen verkkoliikennettä pystyy myös lukemaan ja muokkaamaan esimerkiksi Burp Suite työkalua käyttämällä. Tämä on olennainen osa mobiilisovelluksen tietoturvatestausta, sillä tällä tavoin voidaan etsiä valtaosa mahdollisista haavoittuvuuksista.
Tätä verkkoliikenteen lukemista ja muokkaamista kutsutaan Machine-in-the-Middle-hyökkäykseksi ja tähän hyökkäykseen suojamekanismina toimii aiemmin mainittu SSL varmistus. SSL varmistus on siis sekä turvamekanismi tälle hyökkäykselle, mutta samalla se estää tietoturvatestaajilta sovelluksen kunnollisen testaamisen.
Miksi suojaukset siis tulisi poistaa?
Jotta mobiilisovelluksen tietoturvatestaus on tehokasta ja testaaja voisi käyttää aikansa mahdollisimman hyvin asiakkaan hyödyksi, kannattaa nämä edellä mainitut suojaukset ottaa pois testattavasta sovelluksesta. Näitä suojauksia voidaan yrittää kiertää erilaisin tavoin, mutta se on työlästä ja aikaa vievää. Yleensä ei kannata käyttää aikaa näiden suojausten toimivuuden testaamiseen, vaan on hyödyllisempää ajankäyttöä testata itse sovellusta.
Poistamalla suojaukset tietoturvatestaaja pystyy asettumaan sovelluksen ja sen verkkoliikenteen väliin ilman, että tarvitsee käyttää ylimääräistä aikaa testaukseen tarkoitetun järjestelmän rakentamiseen. Tämä nopeuttaa ja sujuvoittaa työntekoa, joka taas alentaa testauksen kustannuksia.
Vaikka suojaamattoman sovelluksen jakaminen voi tuntua turvattomalta, tietoturvatestaaja pitää huolen siitä, että sovellus pysyy turvassa. Näistä suojauskeinoista voi sopia yhdessä testaajan kanssa, mutta käytännössä tämä tarkoittaa sitä, että sovelluksen jakamisen jälkeen sovellusta säilytetään vain salasanasuojatussa, eli enkryptatussa, paikassa. Tietoturvatestausympäristöt ovat myös eriytetty muista sovelluksista ja asiakkaista esimerkiksi virtuaalikoneen sisälle.
Eli suojaamatonta sovellusta ei säilytetä ilman asianmukaisia suojamekanismeja ja sovellus pysyy kyllä turvassa tietoturvatestaajan ympäristössä.
Minja Silvennoinen
Information Security Specialist, 2NS