02.11.2022

Minkälaisia uhkia verkossa toimiviin sovelluksiin kohdistuu, ja kuinka haavoittuvuudet löytyvät? Mitä tietojärjestelmiin murtautuminen, kansan kielellä hakkerointi, oikeastaan on? Mitä verkossa toimivien järjestelmien kehityksessä tulee tietoturvan näkökulmasta huomioida?

Tietoturva ja tietomurrot ovat teemoja joista puhutaan paljon, ja syystäkin. Tietovuotoja raportoidaan suomalaisyrityksissä enemmän kuin Euroopassa keskimäärin. Verkkosivujen tietoturvasta tulee nopeasti mieleen SSL/TLS-sertifikaatti, kaksivaiheinen tunnistautuminen, sekä palvelin johon ei pääse julkisesta verkosta käsiksi. Kun puhutaan verkkosovelluksiin kohdistuvista tietoturvariskeistä, puhutaan tyypillisesti kuitenkin ongelmista, jotka tapahtuvat sovelluksen ohjelmakoodissa. Huonosti suunniteltu arkkitehtuuri johtaa helposti tietoturvaan vaikuttaviin ohjelmistovirheisiin, joilla voi olla vakaviakin seurauksia. Ongelmallista tietoturvasta tekee sen, että organisaatioissa siitä keskustellaan usein varsin korkealla tasolla, vaikka tietoturva täytyisi ottaa huomioon organisaation kaikilla tasoilla, ja silloin, kun itse ohjelmakoodia kirjoitetaan.

Nopea katsaus hakkeroinnin juurille

Vaikka internetin nopea kasvu 1990-luvun jälkeen on lisännyt eksponentiaalisesti hakkereiden määrää, tietojärjestelmien suojaaminen ja niiden murtautumisyritykset ovat olleet todellisuutta jo noin sadan vuoden ajan. Toisen maailmansodan aikana Saksalaiset käyttivät Enigma-salauslaitteita tekstipohjaisten viestien salaamiseen, jotka lähetettiin radiosignaaleilla eteenpäin. Vuonna 1932 Puolalainen matemaatikko Marian Rejewski sekä hänen kollegansa pääsivät työskentelemään Enigma-laitteen parissa ja kokeilivat purkaa sen salausta hyödyntäen erilaisia konfiguraatioita, jolloin laitteelle annetut syötteet johtivat tiettyyn lopputulokseen. Laitteen erilaisia konfiguraatioita, syötteitä ja vastauksia analysoimalla Marian pystyi kehittämään ymmärryksen salauksen toiminnasta ja salattuja viestejä pystyttiin purkamaan. Sama periaate toistuu edelleen tietojärjestelmiin murtamisessa. Järjestelmästä rakennetaan tarkka kokonaiskuva vertaamalla järjestelmälle annettuja syötettyä siltä saatuihin vastauksiin. Salattu radioviestintä antoi Saksalaisille etulyöntiaseman, ja liittoutuneille motiivin murtaa salaus. Nykyisin motiivina on järjestelmiin tallennettu arkaluontoinen tieto, josta hyökkääjät voivat hyötyä esimerkiksi rahallisesti. Saksalaiset tekivät vuosien saatossa salauksesta monimutkaisempaa, kun puolestaan liittoutuneet kehittivät automaatiota salauksen purkamiseksi. Kaava on voimassa edelleen: salauksista tehdään vahvempia ja tietoturva-aukkoja paikataan kun niitä ilmenee, mutta uudet teknologiat tuovat mukanaan aina uusia haavoittuvuuksia.

World Wide Webin nousu

1990-luvulla world wide web (www) koostui lähinnä HTML-kielellä kirjoitetuista dokumenteista, joilla käyttäjälle esitettiin staattista (pysyvää) sisältöä, jonka kanssa käyttäjä ei juurikaan voinut itse olla vuorovaikutuksessa. Sivustoilta puuttuivat siis erilaiset lomakkeet, painikkeet tai tekstikentät, joiden avulla sivuston toimintaan olisi voinut vaikuttaa. 2000-luku aloitti internetin uuden vaiheen, Web 2.0:n, sillä verkkosivustot alkoivat tallentaa käyttäjien syöttämää tietoa ja sivustot alkoivat toimimaan vuorovaikutuksessa käyttäjän kanssa. Hypertext Transport Protocol (HTTP) mahdollisti syötteiden lähettämisen ja jakamisen palvelimen kautta. Tämän seurauksena alkoi syntymään tekstin, kuvien, ja median jakamista verkon välityksellä, joka mahdollisti interaktiivisia sivustoja kuten blogeja, wikejä, keskustelufoorumeita ja sosiaalista mediaa, ja lopulta selaimessa toimivia, työpöytäsovellusten kaltaisia verkkosovelluksia. Nykyisin verkkoselaimissa toimivilla sovelluksilla hoidetaan esimerkiksi yritysten toiminnanohjausta sekä pankkitapahtumia. Selaimissa toimivien sovellusten ympärille on myös muodostunut valtava määrä liiketoimintaa, sekä suuria yrityksiä, kuten Google, Facebook, Twitter, joiden toiminta perustuu verkkosivujen olemassaoloon ja käyttäjän tietojen tallentamiseen palvelimille. Verkkosovelluksista on siis tullut erityinen kohde tietomurroille, sillä näihin järjestelmiin saatetaan tallentaa hyvinkin yksityiskohtaista käyttäjätietoa.

Tietojärjestelmiin murtautuminen nykypäivänä

Nykypäivänä merkittävimmät tietomurrot tapahtuvat kohdistamalla hyökkäykset verkkokehittäjien kirjoittamaan logiikkaan, eli järjestelmän ohjelmakoodiin, ja niistä löytyviin ohjelmointivirheisiin (puhekielessä bugeihin). Aikaisemmin hyökkäykset kohdistettiin lähes kokonaan palvelimiin, tietoliikennelaitteisiin, selaimiin, mutta nykyisin hyökkääjät etsivät haavoittuvuuksia verkkosovelluksissa käytetyistä ohjelmistoista ja lähdekoodissa olevista bugeista, jotka mahdollistavat pääsyn käsiksi arkaluontoiseen tietoon.

Modernit verkkosovellukset koostuvat monesta käyttöliittymärajapinnan alla olevasta uudesta teknologiasta, jotka mahdollistavat monipuoliset ominaisuudet, järjestelmien välisen kommunikaation, ja nopeuttaa niiden kehittämistä. Samalla järjestelmässä käytetyt teknologiat altistavat kehityksen aikana tapahtuville virheille ja järjestelmän haavoittuvuuksille. Edellisellä vuosikymmenellä verkkosivustoja tarjoiltiin lähes kokonaan palvelimelta, mutta nykyisin verkkosovellukset koostuvat useasta eri osasta, jossa palvelimella ja käyttäjän selaimessa toimii eri sovellus. Modernissa verkkosovelluksessa käyttöliittymä keskustelee eri tietokantojen kanssa REST-rajapintojen välityksellä, jolloin käyttäjälle on saatavilla kaikki tarpeellinen tieto yhdessä paikassa. Tyypillistä onkin, että modernit verkkosovellukset käyttävät useita seuraavista teknologioista: JSON, JavaScript, REST-API:t, SPA-kehykset (React, Vue, Angular, Svelte), autentikointijärjestelmät, verkkopalvelinohjelmistot (Linux, Windows, Express, Apache, Nginx), tietokannat (MySQL, MongoDB), paikalliset tietovarannot (evästeet), sekä muita kolmansien osapuolien avoimeen lähdekoodiin perustuvia ohjelmistoja, joiden haavoittuvuudet voivat altistaa järjestelmän tietoturvariskeille.

Miten verkossa toimivien sovellusten haavoittuvuudet löytyvät?

Käyttäjältä näkymättömissä olevat rajapinnat sekä palvelimet, kuten sähköpostipalvelimet tai testiympäristöt ovat otollisia paikkoja heikolle tietoturvalle ja ohjelmakoodista löytyville virheille, sillä ne usein jäävät vähemmälle huomiolle järjestelmiä ylläpidettäessä. Hyökkääjät kartoittavat esimerkiksi http-kutsujen avulla rajapintoja, jotka eivät ole suoranaisesti käyttäjälle näkyvissä tai tavalliselle käyttäjälle tarkoitettu. Myös pelkästään järjestelmän käyttöliittymää ja käyttöliittymän tekemiä rajapintakutsuja tutkimalla saa selville, miten järjestelmä toimii, ja millaisia syötteitä antamalla saadaan tietynlaisia vastauksia, ja miten syötteitä voi mahdollisesti manipuloida omaan tarkoitukseen. Eri käyttäjäoikeuksille voi olla rakennettu eri rajapintoja, joihin pääsee käsiksi muuttamalla järjestelmälle annettua syötettä. Ohjelmakoodissa olevat virheet tai huono arkkitehtuuri voi mahdollistaa pääsyn sellaiseen tietoon, jota ei ole tarkoitettu tavalliselle käyttäjälle.

Hyökkääjät käyttävät myös hyödyksi internetistä saatavilla olevaa tietoa, kuten sivustoista otettuja välimuistikopioita, vuodettuja salasanoja, sähköposteja, SSH-avaimia, ei-julkisten osoitteiden DNS-listauksia, tai muuta arkaluontoista tietoa jota on ollut virheellisesti hakukoneiden saatavilla (esimerkiksi vahingossa julkiseksi asetetut ohjelmakoodivarannot), mutta sittemmin piilotettu. CVE (https://www.cve.org/) ylläpitää kattavaa listaa julkisesti tunnistetuista tietoturvahaavoittuvuuksista, ja tätä tietoa myös järjestelmiä kohtaan hyökkäyksiä tekevät tahot hyödyntävät.

Kolmansien osapuolien haavoittuvuudet

Luettelin aikaisemmin pitkän listan erilaisista teknologioista, joita verkkosovelluksien kehittämisessä käytetään. Modernien verkkosovellusten kehitys on yhä enemmän riippuvainen kolmansien osapuolien sekä avoimen lähdekoodin liitännäisistä sekä integraatioista. Sovelluksia kehitetään usein kolmansien osapuolien lisäosia hyödyntäen, sillä se nopeuttaa ja yksinkertaistaa kehittämistä ja järjestelmään voidaan toteuttaa paljon monipuolisia ominaisuuksia, joiden toteuttamiseen muuten kuluisi paljon enemmän aikaa ja resursseja. Miksi keksiä pyörää uudelleen?

Kolmansien osapuolien ja avoimeen lähdekoodiin perustuvat lisäosat ovat kuitenkin yksi tyypillisimmistä kohteista tietoturvahaavoittuvuuksien hyödyntämisessä. Ohjelmistotalon tuottamaa omaa koodia testataan usein hyvinkin kattavasti, mutta kolmansien osapuolien liitännäisten kohdalla testausvastuu ja tietoturva-aukkojen korjaaminen jää usein liitännäisten kehittäjäyhteisön harteille. Joskus verkkosovelluksessa on käytössä liitännäinen jonka päivitystuki on jo aikapäivä sitten loppunut, ja tämä voi altistaa järjestelmän haavoittuvuuksille. Verkkosovellusten aktiivinen päivittäminen ja ylläpito onkin tärkeä osa tietoturvasta huolehtimista.

Asiantunteva it-kumppani huomioi tietoturvan jo arkkitehtuurin tasolla

Jotta voi ottaa tietoturvan huomioon verkkosovellusten ekosysteemissä, tarvitaan laaja-alainen ymmärrys järjestelmän eri osa-alueista käyttöliittymän ja palvelimen välillä. Turvallinen verkkosovellus kehitetään panostamalla järjestelmän ylläpitoon, ja käyttämällä arkkitehtuuria, jossa tietoturvaan vaikuttavia ohjelmistovirheitä ei pääsisi muodostumaan. Myöskään julkisissa testiympäristöissä ei pääse käsiksi sellaisiin rajapintoihin, joihin ei tavallisten käyttäjien kuuluisikaan päästä, eikä sähköpostipalvelimia roiku suojaamattomina. Asiantunteva it-kumppani ymmärtää tietokantojen, käyttöliittymien, ja tietoliikenneprotokollien tietoturvariskit, ja osaa kehittää järjestelmät alusta alkaen nämä huomioiden.

Seuraamme jatkuvasti käyttämiemme kolmansien osapuolien pakettien ja moduulien kehityssykliä ja päivitämme niitä uusimpiin versioihin minimoidaksemme riskit. Meillä tietoturvan korkeaan tasoon kuuluu henkilökunnan tietoturvatietoisuuden jatkuva ylläpito ja kehittäminen.

Milloin teillä on verkkosovelluksen kolmansien osapuolien liitännäisten haavoittuvuudet paikattu? Onko teillä käytössä vanhentuneita kolmansien osapuolien liitännäisiä? Onko järjestelmässä tietoturvaan vaikuttavia ohjelmistovirheitä? Mietityttääkö järjestelmän ajantasaisuus? Kurkkaa meidän palvelumme, ja ota yhteyttä, niin jutellaan aiheesta lisää.

 

Tuukka Tihekari