-

Case TikTok: “Hei, me (vahingossa) vakoillaan”

Viime päivinä Suomenkin mediassa on uutisoitu laajasti TikTokin WebKit-integraatiosta, joka mahdollisesti kuuntelee käyttäjää [1]. Ongelman löysi ohjelmistotutkija Felix Krausse, jonka blogissa on kattava tekninen kuvaus sosiaalisen median WebKit-integraatioiden ongelmista [2]. Vahva lukusuositus kaikille, jotka sosiaalisen median sovelluksia käyttävät.

WebKit on selainydin, jonka pohjalle on rakennettu nykyisistä selaimista Googlen Chrome ja Applen Safari sekä Microsoftin uusin versio Edgestä. WebKit mahdollistaa selaimen integroimisen osaksi appia tai sovellusta. Ratkaisu on suosittu, sillä se mahdollistaa mm. linkkien avaamisen nopeasti osana sosiaalisen median sovellusta, mikä on hyvää käytettävyyttä. Tämä mahdollistaa esim. uutisen lukemisen Redditin mobiilisovelluksessa ennen aiheen kommentointia.

WebKit-integraatiot mahdollistavat myös ns. hybridisovellukset. Hybridisovelluksessa osa on laitekohtaista natiivikoodia ja toinen osa taas integroitu, mobiilioptimoitu selainnäkymä. Hyvin suosittu ratkaisu on siirtää kirjautuneen käyttäjän sessio natiivisovelluksesta integroidun selaimen puolelle.

WebKitin integraatiorajapinnat sisältävät mahdollisuuden kaikkien selaimeen tulevien pyyntöjen kuuntelun sekä ympäristön muokkauksen. Tässä on tietysti se riski, että pahantahtoinen sovelluskehittäjä voi kuunnella käyttäjän kirjoittamat salasanat ja tallentaa tietoa esimerkiksi käyttäjän lataamista sivuista.

Webkit-integraatiot ovat myös riski laitteen ja sovelluksen tietoturvalle, sillä vanhentunut WebKit-versio laitteessa tarjoaa hyvin dokumentoidun hyökkäysvektorin laitteeseen / sovellukseen. Hyökkääjän tarvitsee vain seurata WebKitin kehitystä ja katsoa, milloin on mitäkin tietoturvakorjauksia tehty. Jos laitteeseen asennetusta versiosta puuttuu uusimmat korjaukset, niin hyökkäysvektori on tunnettu. Webkitin aukolla on mm. jailbreakattu PlayStation 4 sekä lukuisia iOS-versioita.

WebKit-integraatio antaa mahdollisuuksia myös tietoturvan parantamiseen. WebKit-integraatioita käytetäänkin myös monien finanssialan toimijoiden sovelluksissa. Tässä on muutamia WebKit-integraation mahdollistamia tietoturvahyötyjä:

  1. JavaScriptin voi kytkeä pois käytöstä sivulta, jolla on vain staattista HTML:ää. Tämä pienentää mahdollista hyökkäyspinta-alaa itse sovellusta kohtaan merkittävästi.
  2. Palvelun sertifikaatin pinnaus, joka tuo lisäsuojaa man-in-the-middle -hyökkäyksiä[3] vastaan. Tällöin sovellus on turvassa, vaikka jokin laitteeseen asennetuista root-sertifikaateista olisi vaarantunut.
  3. Sovellus voi kuunnella selaimen URL-riviä ja voi täten siirtää käyttäjän ulkoiseen selaimeen, mikäli käyttäjä klikkaa linkkiä, joka veisi kolmannen osapuolen palveluun. Tämä pienentää riskiä WebKit-aukon hyödyntämiseen, sillä kaiken WebKitissä ajettavan koodin tiedetään tällöin olevan sovelluskehittäjän omaa koodia.

TikTok puolustautuu syytöksiin väittämällä, että he eivät oikeasti käytä tätä käyttäjän näppäimistön dataa mihinkään, vaan heidän mukaansa kyseistä ominaisuutta on käytetty ainoastaan sovelluksen kehittämiseen ja vikatilanteiden tutkimiseen (debugging) [4].

TikTok-kohun jälkeen monen suomalaisenkin sovelluskehittäjän on syytä tarkastella omia WebKit-integraatioitaan. Onko WebKit-integraatio yleensäkään enää tarpeellinen? Käyttäjän tietoturvasta huolestuneet kehittäjät voivat korvata WebKit-integraation SFSafariViewControllerilla (iOS) [5] tai Chrometabsilla (Android) [6]. Näiden kautta selain pyörii käyttäjän näkökulmasta sovelluksen sisällä, mutta sovellus ei pääse selaimen eikä selain sovelluksen dataan käsiksi.

Etenkin sensitiivistä dataa käsittelevän sovelluksen kannattaa harkita WebKit-rajapinnasta luopumista, sillä mahdolliset WebKit-aukot antavat hyökkäyspintaa kolmansille osapuolille. Esim. jokin sovelluksen lataama kolmannen osapuolen web-sivu saattaisi hyödyntää WebKitin haavoittuvuutta päästäkseen käsiin sovellukseen tallennettuun dataan.

[1] https://www.hs.fi/talous/art-2000009015280.html
[2] https://krausefx.com/
[3] https://en.wikipedia.org/wiki/Man-in-the-middle_attack
[4] https://www.forbes.com/sites/richardnieva/2022/08/18/tiktok-in-app-browser-research/
[5] https://developer.apple.com/documentation/safariservices/sfsafariviewcontroller
[6] https://developer.android.com/reference/androidx/browser/customtabs/package-summary