Saittien tietoturva vuotaa
Samuli Kotilainen • Piirros: Petri Rosten
Saittien tietoturva vuotaa

Viime vuosi osoitti, miten surkealla tolalla suomalaisten internet-palvelujen tietoturva on ollut. Julkisilla opeilla nettipalveluista tulee säälittävän helppoja saaliita rikollisille. Valtaosa ongelmista johtuu muutamasta perustason virheestä, ja keinot niiden korjaamiseen ovat kaikkien ulottuvilla.
Suomea on monesti sanottu tietoturvan mallimaaksi. Viime maaliskuussa paljastui ikävällä tavalla, mikä on todellisuus web-palveluissa. Harrastelijat pitivät Nordean ja Sammon verkkopankkeja pilkkanaan ja liittivät sivuille muiden nettipalveluiden aineistoa. Ja kun vauhtiin päästiin, alkoi aloittelijamaisia virheitä löytyä sadoilta suomalaisilta nettisivuilta. Netissä esiteltiin loputtoman pitkältä tuntuvia reikäisten sivujen listoja. Esimerkkejä oli Finnairista Viestintävirastoon, Helsingin Sanomista presidentin kansliaan ja Televisiokanavista McDonaldsiin.
Ongelmat eivät tietenkään rajoittuneet Suomeen. Maailman suosituimpiin kuuluville nettisivuille alkoi pian ilmestyä kiinalaista haittakoodia, joka yritti hyökätä suoraan sivujen lukijoiden kimppuun. Saastuneiden palvelujen joukossa olivat esimerkiksi suuret mediat USA Today ja ABC News sekä maailman suurin kauppaketju Walmart, joka on tunnettu jättimäisestä it-budjetistaan. Samantyyliset hyökkäykset jatkuivat eri muodoissa pitkin kevättä ja saastuttivat tuhansia ja taas tuhansia web-sivuja.
Uhan ei olisi pitänyt olla uusi. Esimerkiksi vuonna 2005 paljastui, että yhdysvaltalainen luottokorttimaksujen välittäjä Cardsystems oli vuotanut luottokorttitietoja suoraan rikollisille. Rikolliset pääsivät sisään nettipalvelun alkeellisen turva-aukon kautta, ja lisäsivät sinne omaa koodiaan. Palvelu lähetti puolen vuoden ajan joka päivä parituhatta luottokorttitietoa rikollisille, ennen kuin asia selvisi. Kenellekään ei varmaan ollut yllätys, kun yritys joutui lopettamaan toimintansa.
Vastaavia tapauksia on ollut paljon ja miljoonien ihmisten luottokorttitiedot ovat vaarantuneet. Kerta toisensa jälkeen on paljastunut, että merkittävienkin nettipalvelujen tietoturva on aivan retuperällä.
Mikä ihmeen tietoturva?
Avoin internet on tietoturvan kannalta maailman vaarallisin paikka. Luulisi, että tietoturvaan panostetaan, mutta näin ei ole ollut. Syy liittyy lähinnä ymmärryksen puutteeseen.
Monet ovat ajatelleet, että nettisivut ovat vain sähköinen esite. Tietoturvasta ei tarvitse huolehtia, kun palvelussa ei ole mitään varastettavaa. Sivujen tekijät ovat keskittyneet vain uuden toiminnallisuuden luomiseen. Toimintoihin on käytetty oppikirjojen ja netin valmiita simppelejä malleja, joissa ei ole tietoakaan turvatarkastuksista. Se, että web-kehityksen työkalut ja tekniikat ovat vaihtuneet tiuhaan tahtiin, ei tietenkään ole auttanut asiaa.
Usein sentään nettipalvelun tilaaja on osannut vaatia tietoturvaa, mutta hänkään ei yleensä ole ymmärtänyt, mitä se merkitsee. Pc-koneiden virustorjunta, lähiverkkojen palomuurit ja palvelinten varmistusnauhat ovat tuttuja käsitteitä, mutta harva tietää, mitä liittyy web-palvelun tietoturvaan. Sivujen tekijä on kuitannut asian vaikkapa lisäämällä palveluun ssl-salauksen. Näin saatiin rasti tietoturvan ruutuun, vaikka sivusto on reikäinen kuin sveitsiläinen juusto. Reikäistä palvelua on kaiken huipuksi saatettu markkinoida tietoturvaltaan sertifioituna, kun kyse on ollut vain yksittäisen salauksen sertifioinnista.
Viime keväänä suomut putosivat lopullisesti silmiltä, kun rikolliset alkoivat levittää hyökkäyksiä automaattisesti. Enää ei ole merkitystä edes palvelun sisällöllä tai sen sijainnilla. Rikollisten ohjelmat metsästävät mitä tahansa reikäisiä nettisivuja, ja yrittävät levittää haittaohjelmia suoraan käyttäjille.
Web-palvelujen tietoturvaan täytyy siis suhtautua uudella tavalla. Ensiksi on tärkeää ymmärtää netin turvauhat, sillä ne ovat erilaisia kuin muissa järjestelmissä.
Näin web-palveluun hyökätään
Edellä viitattujen ongelmien taustalla on melkein aina sama vika. Web-kehittäjät eivät ole ymmärtäneet, ettei käyttäjään saa luottaa hetkeäkään. Kaikki hänen antamansa tiedot pitää tarkistaa. Muuten käyttäjä voi syöttää palveluun tuhoisaa ohjelmakoodia.
Web-sovellusten ylivoimaisesti yleisin ongelma on niin sanottu xss-aukko (cross site scripting). Johonkin nettisivulla olevaan tekstikenttään (vaikkapa tavallinen hakukenttä) lisätään koodipätkä, joka vaihtaakin osan sivun sisällöstä toisesta palvelusta haettuun sisältöön. Suomessa maaliskuussa nähty haavoittuvuusrieha johtui juuri xss-aukoista.
Tällainen aukko on yleensä lähinnä nolo, mutta se voi mahdollistaa vaikkapa pankki- tai luottokorttitietojen varastamisen. Sopivan linkin avulla käyttäjä voidaan huomaamatta siirtää toisaalle tutulta ja luotetulta sivustolta. Nettiosoite on oikein, sertifikaatit ovat aidot ja kirjautumiskohta näyttää tutulta. Kirjautumisalue on kuitenkin kopio, joka tulee rikollisten nettisivulta – ja sinne menevät tiedotkin.
Toiseksi yleisin ja paljon vaarallisempi ongelma on niin sanottu sql-injektio. Nettisivujen tietoja säilytetään usein taustalla olevassa sql-tietokannassa. Vilpillinen käyttäjä voi yrittää syöttää nettisivun tekstikenttiin sql-ohjauskoodia, ja näin ujuttaa (injektoida) tietokantaan omia komentojaan. Suomessa nähdyissä automaattisissa hyökkäyksissä käytettiin juuri tätä menetelmää, ja sivuille saatiin ujutettua rikollisten hyökkäyksiä. Myös alussa mainitussa Cardsystemsin tapauksessa rikolliset pääsivät muuttamaan järjestelmää juuri sql-injektiolla.
Molemmat hyökkäykset ovat sukua pc-sovelluksia vaivaaville puskuriylivuodoille. Lääke hyökkäyksiin on sama. Käyttäjän syötteet pitää tarkistaa, ja läpi saa päästää vain haluttua sisältöä.
Tietoturvaa ei voi lisätä jälkikäteen
Muunlaisiakin tyypillisiä ongelmia on. Suurimpiin mokiin kuuluu se, että käyttäjä tunnistetaan jollain nettiosoitteessa näkyvällä suoralla tiedolla. Jos osoitteessa vaikkapa näkyy käyttäjänumero, voi toista numeroa kokeilemalla päästä suoraan naapurin käyttäjätilille. Käyttäjä täytyy tunnistaa jollain epäsuoremmalla tavalla, ja palvelun pitää muistaa tarkistaa, mihin käyttäjällä on oikeuksia ja mihin ei.
Myöskään loogisia tarkistuksia ei sovi unohtaa. Aivan liian monessa palvelussa luottokorttimaksun pystyy vaihtamaan miinusmerkkiseksi. Jos palvelu ei tarkista tätä, maksu meneekin palvelusta asiakkaalle päin, ja se hyvitetään hänen luottokorttitililleen.
Jos sivuilla on mahdollisuus lähettää sähköpostia, on tärkeää estää roskapostittaminen. On myös tärkeää muistaa päivittää nettipalvelun alustana toimivat palvelimet ja niiden kaikki ohjelmistot.
Muistettavia asioita on muitakin. Ehkäpä käytetyimmät ohjeet löytyvät avoimen Owasp-hankkeen sivuilta (www.owasp.org). Owaspin turvaongelmien Top-10-lista on monien mielestä paras paikka aloittaa nettisivujen korjaaminen.
Oleellista on ymmärtää se, että tietoturva ei ole jotain, minkä voi lopuksi liimata nettipalvelun päälle. Tarvittava turvataso tietenkin vaihtelee, mutta se pitää huomioida kehitystyössä koko ajan. Kun kaikki kehittäjät ymmärtävät turvallisuuden merkityksen, voidaan tarvittavat tarkistukset ja turvaominaisuudet rakentaa kerralla palveluun. Muutosten tekeminen jälkikäteen on paljon vaikeampaa ja kalliimpaa.
Miten löytää ja korjata turvaongelmat?
Web-palveluja on vuosien ajan rakennettu hyvin turvattomalla tavalla, joten nettipalvelun tietoturvan tutkiminen ja korjaaminen on enemmän kuin hyvä idea. Jos nettisivuilla käsitellään luottokorttimaksuja, on testaaminen jopa pakollista. Miten ongelmat sitten voi kaivaa esiin?
Monelle tulee ensimmäiseksi mieleen sovellusskanneri, joka etsii web-palvelusta ja sen lähdekoodista erilaisia turvaongelmia. Tarjolla on ilmaisia avoimen lähdekoodin ohjelmia (esimerkiksi Webscarab). Markkinoilla on myös lukuisia kaupallisia ohjelmia (esimerkiksi HP Webinspect, IBM Rational Appscan ja Acunetix). Niiden etuna on usein helpompi käytettävyys ja parempi raportointi. Tarjolla on lisäksi netissä tehtäviä automaattisia skannauspalveluja (esimerkiksi Outpost24 Outscan).
On kuitenkin hyvä muistaa, että automaattiset skannerit eivät löydä kaikkia aukkoja. Ne paljastavat selkeimmät ongelmat, mutteivät esimerkiksi sivujen logiikan virheitä ja muita syvällisempiä turvaongelmia.
Ihminen on paras skanneri
Jos sivusto on tärkeä, ja varsinkin jos sen kautta liikkuu suurempia rahavirtoja, voi olla järkevää panostaa kunnolliseen tietoturvan tarkastukseen. Niitä tekevät Suomessa esimerkiksi Codenomicon, Nixu, Nsense ja Louhi Networks. Asiantuntija tarkastaa palvelun ensin eri ohjelmatyökaluilla, mutta suuri osa työstä on käsin tehtävää ongelmakohtien kartoitusta. Jonkinlaisia virheitä löytyy melkein aina. Nsensen mukaan noin kolmasosassa tutkimuksia löydetään vakavimpia kriittisiä ongelmia. Testauksen hinta on laajuudesta riippuen 5000 – 10000 euroa.
Vaikka ulkopuolista apua voidaan tarvita, olisi paras, että palvelun kehittäjät osaisivat itse etsiä ja korjata turvaongelmia. He tuntevat palvelun parhaiten, ja voivat pitää koko ajan huolta palvelun turvallisuudesta.
Korjausurakoita miettiessä täytyy tietysti huomioida palvelun tärkeys. Jos kyseessä on esimerkiksi nettikauppa, on turvaan pakkokin panostaa kunnolla. Toisessa ääripäässä voisi olla esimerkiksi mainoskampanjaa varten tehty tilapäinen nettisivusto. On kuitenkin hyvä muistaa, että rikollisten automaattiset ohjelmat hyökkäävät tasapuolisesti kaikkien sivustojen kimppuun.
Laastaria ja lisäturvaa – sovelluspalomuuri
Jos nettipalvelusta löytyy turvaongelmia, mutta koodin muuttaminen on liian vaikeaa tai kallista, voi ratkaisu löytyä sovelluspalomuurista. Siinä missä tavallinen palomuuri estää verkkohyökkäyksiä, estää sovelluspalomuuri web-sovelluksiin tehtäviä hyökkäyksiä. Se tutkii kaiken nettiliikenteen sisällön, ja torjuu automaattisesti tyypillisimmät web-hyökkäykset. Lisäksi sovelluspalomuurin voi säätää torjumaan joitain tiettyjä ongelmia, joita on esimerkiksi löydetty turvatarkastuksessa.
Sovelluspalomuurilla on kuitenkin heikkouksia. Sitä onkin syytä pitää lähinnä hätäratkaisuna tai tietoturvan täydentäjänä. Ensinnäkin sovelluspalomuurin säätäminen on työlästä, ja vaarana ovat sovelluksen toiminnan ongelmat. Jos järjestelmään tulee muutoksia, voi säätöjä joutua tekemään uudelleen, jolloin syntyy helposti virheitä.
Sovelluspalomuurilla ei myöskään voi korjata kaikkia ongelmia. Esimerkiksi palvelun logiikkaan liittyvät ongelmat ovat sille monesti liian kova pala. Sovelluspalomuuri voi olla hyvä apuväline, mutta turvaongelmat on yleensä parasta korjata itse sovelluksissa.








