- COMP.SEC.100
- 17. WWW- ja mobiiliturvallisuus
- 17.3 Asiakkaan haavoittuvuudet ja niiden vähentäminen
Asiakkaan haavoittuvuudet ja niiden vähentäminen¶
Tässä alaluvussa tarkastellaan, miten hyökkääjät voivat hyödyntää heikkouksia, joita ilmenee käyttäjän vuorovaikutuksessa verkkoselaimien ja mobiililaitteiden kanssa. Nämä ovat ns. asiakaspuolen ongelmia, kun toisena puolena ovat palvelimet. Asiakaspuolelle kuuluvat myös haasteet, jotka johtuvat trendistä tallentaa yhä enemmän tietoa asiakkaalle palvelimen sijaan. Niiden lisäksi käsitellään vielä joitain fyysisiä hyökkäyksiä.
Tietojenkalastelu ja väärennetyt linkit, painikkeet ja kuvat¶
Sekä verkko- että mobiililaitteiden käyttöliittymissä on heikkouksia, jotka helpottavat käyttäjän harhauttamista tavoittelevia hyökkääjiä. Pohjalla ovat käyttäjien vaikeudet URL-osoitteiden ja HTML-dokumenttien dynaamisen sisällön tarkistamisessa.
- Tietojenkalastelu
Aiempi luku on jo esitellyt kalasteluhyökkäystä ja sen ekosysteemiä. Tarkastellaan tässä harhautuksen tekniikkaa. Perusidea on saada käyttäjä syöttämään arkaluonteisia tietojaan, etenkin valtuustietoja, hyökkääjän hallinnoimaan paikkaan. Jotta käyttäjä ohjautuisi sellaiseen, hänelle lähetetään jollain viestimellä tai verkkosivulla linkki, joka vaikuttaa hänestä sellaiselta, jota kannattaa seurata (taustalla tarpeellisuus, kiinnostavuus yms.). Kohteen, yleensä verkkosivuston, pitää myös vaikuttaa oikealta, vaikka se onkin hyökkääjän tekemä (esim. ulkoasultaan kopio aidosta). Hyökkääjät väärentävät usein esimerkiksi sosiaalisen median, verkkopankkien tai sähköisten maksupalvelujen sivustoja.
Jotta väärennetty sivusto näyttäisi mahdollisimman aidolta, hyökkääjä voi JavaScriptin avulla muuttaa selaimen osoitepalkkia näyttämään aidon URL-osoitteen kuvaa tai korvata alkuperäisen osoitepalkin uudella. Lisäksi tietojenkalastelijat hyödyntävät homografiaa, jonka Internationalized Domain Name (IDN) mahdollistaa. Tällainen hyökkäys perustuu siihen, että eri aakkostoissa on samalta näyttäviä kirjaimia (homoglyfejä). Esimerkiksi - ilman IDN:ääkin - kirjaimia “l” ja “I” (pikku L ja iso i) on vaikea erottaa. Korvaamalla - IDN:ää soveltaen - latinalainen “a” kyrillisellä kirjaimella “а”, URL pаypаl.com saadaan harhauttavaksi (kokeile Ctrl-F paypal tältä sivulta). Manipuloituja URL-osoitteita ja osoitepalkkeja sisältäviä hyökkäyksiä on erityisen vaikea havaita mobiiliselaimissa, koska osoitepalkki ei ole näkyvissä tavallisen selaamisen aikana. Vastaavasti mikäli palkki on näkyvissä, URL ei välttämättä mahdu siihen kokonaisuudessaan. Verkkosivustojen tietojenkalastelu on yksi yleisimmistä hyökkäyksistä ja useimpien ihmiskäyttäjien on vaikea havaita tietojenkalastelu-URL-osoitteita ja -sivustoja.
Yleisiä vastatoimia ovat erilaiset tiedotuskampanjat ja tietojenkalasteluun liittyvä harjoittelu. Näillä yritetään kiinnittää huomiota kalastelun mahdollisuuteen ja opettaa käyttäjiä havaitsemaan phishing-URL-osoitteet. Nykyaikaiset selaimet käyttävät myös teknisiä turvatoimia, esim. mustia listoja ja visuaalisia indikaattoreita, jotka korostavat URL-osoitteen ylätason verkkotunnusta. Esim. Google Chrome näyttää URL-osoitteet koodauksella, joka paljastaa petolliset merkit IDN-hyökkäyksissä.
Esimerkki erilaisesta URL-ongelmasta: linkki
https://bestbank.secure.server.cоm
voi saada käyttäjän luulemaan, että hän navigoi bestbank.secure-sivuston johonkin palvelinosioon. Linkki kuitenkin johtaa server.cоm-sivuston osioon bestbank.secure. Lisäksi tässä cоm≠com, mutta sellaista ylätason nimeä ei rekisteröitäisi (vrt. myös laki).
- Drive-by-download -hyökkäykset
- Kun käyttäjä vierailee verkkosivustolla, tai napsauttaa linkkiä tai liitettä tietojenkalasteluviestissä tai haitallisessa ponnahdusikkunassa, voi tapahtua drive-by-download -hyökkäys. Sellaiset ovat yleinen ongelma verkossa ja niillä on erityinen rooli tietojenkalastelussa. Sen sijaan, että käyttäjä päätyisi tavoittelemalleen verkkosivulle, hyökkäys lataa ja asentaa haittaohjelman käyttäjän tietokoneelle. Hyökkääjän pitää selvittää uhrinsa tietokoneen sormenjälki. Sen avulla päätellään osana normaaliakin verkkoviestintää, mitä ohjelmistokomponentteja koneessa on. Jos niiden joukossa on haavoittuvia, esim. vanhoja versioita, hyökkääjä tietää, miten hän saa haittaohjelmansa asentumaan. Näiden hyökkäysten havaitseminen on aktiivinen tutkimusalue, ja se sisältää erilaisia lähestymistapoja, kuten poikkeamien havaitsemisen ja haittaohjelmatunnisteiden (“signatures”) käytön.
- Väärennetyt linkit, painikkeet ja kuvat
Clickjacking-hyökkäyksessä hyökkääjät manipuloivat verkkosivun ulkoasua huijatakseen käyttäjiä klikkaamaan jotain soveliaalta (houkuttelevalta tms.) näyttävää linkkiä, painiketta tai kuvaa, mutta klikkauksen vaikutus kohdistuu sen alla olevaan alkuperäisen sivuston kohteeseen. Clickjacking tunnetaan myös user interface redress -hyökkäyksenä ja se kuuluu confused deputy -hyökkäysten luokkaan. Hyökkääjä siis “pukee” kerroksia alkuperäisen verkkosivun päälle (myös läpinäkyvät ovat mahdollisia) ja saa uhrinsa käynnistämään toimia alkuperäisellä verkkosivustolla. Hyökkäys tapahtuu varsinaisesti hyökkääjän laatimalla sivustolla, joka käyttää iFrame-kehystä kohdesivuston (eli “deputy”n) lataamiseen ja voi hyödyntää iFrame-kehysten absoluuttisia paikannusominaisuuksia oikeaa visuaalista kohdistusta varten. Siksi uhrien on vaikea havaita hyökkäyselementtejä alkuperäisen verkkosivuston kautta. Clickjacking-hyökkäykset ovat erityisen vaarallisia, kun uhri on jo kirjautunut sivustolle ja käy asetussivulla, jossa hän hyökkääjän harhauttamana tulee suorittaneeksi toimintoja joita ei tarkoittanut. Yksi näkyvimmistä clickjacking-hyökkäyksistä tehtiin Adobe Flash -laajennuksen asetussivulle. Hyökkääjät käyttivät näkymättömiä iFrame-kehyksiä huijatakseen uhrejaan muuttamaan laajennuksen suojausasetuksia ja antamaan hyökkääjille pääsyn uhrien koneiden mikrofoniin ja kameraan.
Clickjacking-hyökkäyksillä voidaan käynnistää muita hyökkäyksiä verkkosivustoja ja niiden käyttäjiä vastaan, esim. Cross-Site Request Forgery- ja Cross-Site Scripting -hyökkäyksiä. Clickjacking-hyökkäykset vaikuttavat sekä työpöytä- että mobiiliselaimiin.
Clickjacking-hyökkäys ei ole ohjelmointivirhe, vaan käsitteellinen ongelma JavaScriptissä. Siksi vastatoimet eivät ole triviaaleja. Clickjacking-hyökkäysten havaitseminen ja estäminen voidaan tehdä sekä palvelin- että asiakaspuolella. Verkkoselaimen käyttäjät voivat poistaa JavaScriptin ja iFrame-kehykset käytöstä estääkseen hyökkäykset. Koska tämä kuitenkin rikkoisi monia verkkosivustoja, erilaiset selainlaajennukset (esim. NoScript) sallivat JavaScriptin ohjatun suorittamisen käyttäjän puolesta. Clickjacking-hyökkäysten vaikutusten hillitsemiseksi käyttäjien tulisi kirjautua ulos online-tileiltä poistuessaan verkkosivustolta, vaikka tämä onkin epäkäytännöllistä. Palvelinpuolen clickjacking-hyökkäysten estämiseksi verkkosivustojen kehittäjien on varmistettava, että verkkosivusto ei ole kehystettävissä, ts. verkkosivusto ei lataudu, jos se on iFramen sisällä. Verkkosivusto voi sisältää JavaScript-koodin, joka havaitsee, onko verkkosivusto lisätty iFrame-kehykseen, ja rikkoa iFrame-kehyksen. Tällä puolustustekniikalla on nimenä FrameBusting. Koska käyttäjät ovat saattaneet poistaa JavaScriptin käytöstä, menetelmä ei kuitenkaan ole luotettava. Suositeltu palvelinpuolen suojausmekanismi on asettaa HTTP-vastausotsikko oikein. X-FRAME-OPTIONS-otsikko voidaan asettaa arvoon DENY, mikä estää verkkosivuston lataamisen iFrame-kehykseen.
- Tietojenkalastelu ja clickjacking mobiililaitteissa
- Tietojenkalastelu ja clickjacking eivät rajoitu selaimiin ja verkkoon. Mobiilisovellusten käyttäjät ovat alttiita molemmille hyökkäyksille. Tutkijat ovat havainneet mahdollisuuden tietojenkalasteluhyökkäykseen päästä-päähän -tyylisesti, jolloin hyökkääjä voi saada täyden käyttöliittymän hallinnan käyttämällä väärin Androidin Instant App -ominaisuutta ja salasananhallintaohjelmia kirjautumistietojen varastamiseen. On olemassa myös Cloak & Dagger -hyökkäys, jossa jo kahden käyttöoikeuden omaaminen riittää siihen, että haitallinen sovellus saa haltuunsa koko käyttöliittymäsilmukan. Hyökkäys mahdollistaa edistyneen clickjackingin, keyloggerin käytön, stealthy phishingin ja puhelimen huomaamattoman avaamisen.
Asiakkaan tallentama ja varastoima data¶
Asiakaspuolen tallennustila tarkoittaa alueita, jotka selain tai käyttöjärjestelmä tarjoaa verkkosivustoille tai mobiilisovelluksille. Tallennus on siis paikallista eikä se vaadi palvelinpuolen resursseja tai aktiivista Internet-yhteyttä. Koska pahantahtoiset käyttäjät voivat manipuloida tallennettuja tietoja, asiakaspuolen tallennusalueet on suojattava. Tarkastellaan asiaa erikseen selaimen ja mobiilin kannalta.
- Selaimessa
Historiallisesti asiakaspuolen tallennustilaa selaimessa on käytetty vain evästetietojen tallentamiseen. Evästeitä ei voida kuitenkaan käyttää laajojen tai monimutkaisten tietojen tallentamiseen. HTML5:n myötä on olemassa tehokkaampia ja monipuolisempia vaihtoehtoja. Näitä ovat WebStorage, joka on samanlainen kuin evästeet ja tallentaa key-value -pareja, ja IndexedDB, joka toimii tietokantana noSQL-tietokantojen tapaan ja jota voidaan käyttää dokumenttien, muiden tiedostojen ja binääriblobien (binary large object) tallentamiseen.
Arkaluontoisten tietojen, esim. istuntotietojen, eheyden takaamiseksi kehittäjiä kehotetaan allekirjoittamaan kryptografisesti asiakkaalle tallennetut tiedot ja varmistamaan ne haettaessa.
Tietojen eheyden lisäksi toinen tärkeä WebStorage- ja IndexedDB-tallennusnäkökohta on, että tallennettuja tietoja ei tyhjennetä automaattisesti käyttäjien poistuttua verkkosivustolta. Tietojen tallentamiseksi istuntomaisesti verkkosovelluskehittäjiä neuvotaan luottamaan WebStorage API:n sessionStorageobjectiin.
- Mobiilisovelluksissa
Mobiilitallennuksen suojaus riippuu myös tiedon tyypistä ja tallennusmekanismista. Sovellus voi esim. käyttää yksityistä tallennustilaa tai jaettua kuten SD-korttia. On suositeltavaa, että kehittäjät allekirjoittavat ja salaavat arkaluontoiset tiedot ja käyttävät asianmukaista käyttäjän syötteiden sanitointia. Tämä koskee erityisesti jaettua tallennustilaa. Sillä ei ole suojattua pääsynvalvontaa - toisin kuin sovelluksen yksityisellä tallennusalueella.
Arkaluonteisen tiedon vuotamista Android-sovelluksissa on tutkittu. Esim. 1 100 suositun Android-sovelluksen turvallisuutta tutkittaessa havaittiin, että huomattava määrä sovelluksia on vuotanut arkaluonteisia käyttäjätietoja julkisesti luettaviin tallennuspaikkoihin, kuten lokitiedostoihin ja SD-kortille. On myös havaittu, että jotkin arkaluontoiset tietovuodot tehdään tarkoituksella, jotta tietoja saadaan välitettyä toiselle, yhteistyössä toimivalle haitalliselle sovellukselle.
Fyysiset hyökkäykset¶
Fyysisillä hyökkäyksillä pyritään hyödyntämään virheitä ja heikkouksia, jotka johtuvat laitteen käytöstä.
- Kosketusnäytön töhryt
- Smudge attack -hyökkäyksessä hyökkääjä yrittää oppia salasanoja, PIN-koodeja tai kosketusnäyttölaitteeseen syötettyjä kuvioita. Kun kosketusnäytölle syötetään kirjautumistietoja rasvaisin sormin, näyttöön jää jälkiä. Käyttämällä sopivia kameroita ja kuvankäsittelyohjelmistoja, hyökkääjä voi palauttaa rasvajäljet ja päätellä niistä tietoja. Hyökkääjä tarvitsee selkeän näkymän kohdenäyttöön.
- Olan yli kurkkiminen
- Olan yli kurkkiminen on fyysinen hyökkäys, jossa hyökkääjä yrittää saada luottamuksellisia tietoja, esim. salasanoja, PIN-koodeja, avauskuvioita tai luottokorttien numeroita. Hyökkääjä tarvitsee selkeän näkymän kohdenäyttöön. Hyökkääjä voi suorittaa hyökkäyksen joko suoraan katsomalla uhrin olkapään yli tai pidemmältä etäisyydeltä käyttämällä työkaluja, esim. kameroita tai teleskooppeja. Tämän tyyppiset hyökkäykset uhkaavat mobiililaitteen käyttäjiä, kun he autentikoituvat laitteelle tai verkkopalveluihin julkisissa tiloissa, kuten junissa, asemilla ja lentokentillä.