You can find out more about Kristiina Rahkema’s PhD thesis in English here

Nutitelefonidest on saanud meie elu lahutamatu osa. Iga asja jaoks on olemas äpp: sõnumite saatmiseks, internetipanga külastuseks, auto lukust avamiseks. Kahjuks on paljud neist rakendustest ebaturvalised. Turvavigu on avastatud sellistes rakendustes nagu Facebook, TikTok ja WhatsApp. Nende turvavigade raskusaste võib ulatuda andmelekkest kuni pahaloomulise koodi käivitamiseni, mis ohustavad meie kõige privaatsemaid andmeid. Androidi rakenduste kohta on läbi viidud palju uuringuid, mis analüüsivad koodi kvaliteedi erinevaid aspekte, nagu hooldatavus ja turvalisus. On vähe toetavaid tööriistu ja iOS-i rakenduste kohta on teostatud väga vähe uurimistöid. iOS-i populaarsuse tõttu on oluline toetada arendajaid kvaliteetsete rakenduste loomisel nii turvalisuse kui ka hooldatavuse osas.

Selle lõputöö eesmärk on täiustada nii arendajate kui ka teadlaste tööriistade tuge ning täita mõned iOS-i rakenduste hooldatavuse ja turvalisusega seotud uurimislüngad. Esmalt arendasime välja GraphifySwifti – tööriista, mis tuvastab Swiftis kirjutatud projektides kasinaid koodimustreid. Kasinad koodimustrite olemasolu viitab halvale hooldatavusele kuna selline kood teeb raskemaks koodi kvaliteedi hoidmist pikema aja vältel. Seejärel rakendasime GraphifySwifti avatud lähtekoodiga iOS-i rakendustele ning analüüsisime kasinate koodimustrite levikut ja sagedust. Lisaks võrdlesime kasinaid koodimustreid iOS-i ja Androidi rakendustes. Me leidsime et iOS-i ja Android-i rakendustes esineb mõlemates sarnasel hulgal kuid erinevaid kasinaid koodimustreid, mis viitab sellele, et ühelt platformilt ei saa teadmisi ilma muudatusteta teisele platformile üle kanda. Nende täiendavate analüüside põhjal töötasime välja GraphfiyEvolutioni, laiendatava tööriista, mis suudab analüüsida nii hetkeseisu kui ka projektide arengut. Kasutasime GraphifyEvolutionit esialgseks kasinate koodimustrid evolutsiooni analüüsiks. Koodimustrite evolutsiooni analüüs annab tulevikus võimalust uurida miks sellised kasinad koodimustrid välja arenevad ning kuidas me neid aegsasti ennetada saaksime.

Arendasime SwiftDependencyCheckeri – tööriista, mis leiab iOS-i rakendustest teavet kolmandate osapoolte teekide sõltuvuste kohta ja tuvastab ebaturvalised sõltuvused. Seda tööriista saab kasutada otse koodiredigeerijas, et arendajad näeksid kui nende arendatavatel rakendustel on ebaturvalisi sõltuvusi. Kasutasime GraphifyEvolutionit ja SwiftDependencyCheckerit, et luua Swifti ökosüsteemi kolmandate osapoolte raamistike jaoks raamistike sõltuvusvõrgu andmekogu. Kasutasime seda andmekogumit Swifti ökosüsteemi erinevate aspektide uurimiseks. Analüüsisime Swifti ökosüsteemi üldist arengut, paketihaldurite kasutamist, tehnilist välga raamistike sõltuvustes ja turvavigade levikut. Leidsime, et iOS-i ökosüsteemis on huvitavaid muutusi üle aja paketihaldurite kasutamises. Arendajad liiguvad paketihaldurite vahel, tõime ka välja soovitusi paketihaldurite arendajatele kuidas saaks nende tööriistade populaarsust suurendada. Oma uuringutega tõime välja sõltuvuste uuendamise tähtsust et hoida rakendusi turvalisena. 

Tutvu Kristiina Rahkema doktoritööga siin