- 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ä luvussa käsitellään nykyaikaisten verkkoselaimien ja mobiililaitteiden ongelmia ja ratkaisuja, esim. hyökkäyksiä ja vastatoimenpiteitä keskittyen asiakkaaseen. Hyökkäyksissä hyödynnetään usein heikkouksia käyttäjien ja verkkoselaimien ja mobiilisovellusten välisessä vuorovaikutuksessa. Lisäksi käsitellään haasteita, jotka johtuvat trendistä tallentaa yhä enemmän tietoa asiakkaalle palvelimen sijaan. Lopuksi käsitellään fyysisiä hyökkäyksiä, jotka keskittyvät mobiililaitteiden heikkoihin kohtiin ohjelmistojen tai ihmisten sijaan.
Tietojenkalastelu ja väärennetyt linkit, painikkeet ja kuvat¶
Tietojenkalastelu (phishing) ja väärennetyt linkit, painikkeet ja kuvat (clickjacking) ovat ongelmia, jotka hyödyntävät sekä verkko- että mobiiliasiakkaiden käyttöliittymän heikkouksia. Kalastelu ja väärennökset hyötyvät ongelmista, joita ihmisillä on URL-osoitteiden ja HTML-dokumenttien dynaamisen sisällön tarkistamisessa.
- Tietojenkalastelu
Tietojenkalasteluhyökkäysten tarkoituksena on varastaa uhreilta arkaluonteisia tietoja, esim. kirjautumistiedot ja luottokorttinumerot. Yleisimmät tietojenkalasteluhyökkäykset käyttävät sähköpostia, verkkosivustoja tai mobiililaitteita uhrien huijaamiseen. Hyökkääjät naamioituvat luotettaviksi tahoiksi ja lähettävät väärennettyjä sähköposteja, näyttävät väärennettyjä verkkosivustoja, tai lähettävät väärennettyjä tekstiviestejä tai pikaviestejä. Väärennetyt verkkosivustot voivat näyttää aidolta. Hyökkääjät voivat käyttää varastettuja kirjautumistietoja tai luottokorttinumeroita esiintyäkseen uhreina ja päästäkseen tärkeille verkkotileille. Onnistuneet tietojenkalasteluhyökkäykset voivat johtaa identiteettivarkauksiin tai rahan menettämiseen.
Hyökkääjät väärentävät usein oikealta vaikuttavia verkkosivustoja huijatakseen käyttäjiä uskomaan, että he ovat vuorovaikutuksessa aidon verkkosivuston kanssa. Tietojenkalasteluhyökkäyksen aloittamiseksi hyökkääjät lähettävät käyttäjille manipuloituja linkkejä sähköpostin, verkkosivuston tai muun sähköisen viestinnän kautta. Manipuloitu linkki johtaa väärennetylle verkkosivustolle, joka näyttää kuuluvan kyseisen verkkosivuston takana olevalle aidolle organisaatiolle. Hyökkääjät väärentävät usein sosiaalisen median, verkkopankkien tai sähköisten maksupalvelujen tarjoajien verkkosivustoja. He huijaavat uhreja seuraamaan manipuloituja linkkejä käyttämällä esim. väärin kirjoitettuja URL-osoitteita ja aliverkkotunnuksia.
Jotta väärennetyt verkkosivustot näyttäisivät entistä aidommilta, tietojenkalastelijat muuttavat selaimen osoitepalkkia korvaamalla alkuperäisen osoitepalkin aidon URL-osoitteen kuvalla tai korvaamalla alkuperäisen osoitepalkin uudella. Osoitepalkin manipulointihyökkäykset vaativat JavaScript-komentojen käyttöä. Lisäksi tietojenkalastelijat hyödyntävät Internationalized Domain Name (IDN) homografiahyökkäyksiä. Tällaiset hyökkäykset käyttävät hyväkseen sitä, että käyttäjät eivät helposti erota erilaisia merkkikoodeja. Esimerkiksi kirjaimia “l” ja “I” (iso kirjain i) on vaikea erottaa, ja korvaamalla latinalaisen kirjaimen “a” kyrillisellä kirjaimella “a” https://paypal.com -urlissa käyttäjät ohjataan harhaanjohtavasti kalasteluPayPal-sivustolle. Manipuloituja URL-osoitteita ja osoitepalkkeja sisältäviä hyökkäyksiä on vielä vaikeampi havaita mobiiliselaimissa, koska osoitepalkki ei ole näkyvissä tavallisen selaamisen aikana. Vastaavasti mikäli palkki on näkyvissä, verkkosivun koko 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 käyttämällä enkoodausta, joka paljastaa petolliset merkit IDN-hyökkäyksissä.
Esimerkki: Phishing URL
https://paymentorganization.secure.server.com
Näyttää siltä, että URL-osoite osoittaa paymentorganization.secure -osioon. Linkki kuitenkin johtaa server.com -sivuston paymentorganization.secure -osioon.
- Drive-by-download -hyökkäykset
- Drive-by-download-hyökkäys tapahtuu, kun käyttäjä vierailee verkkosivustolla, tai napsauttaa linkkiä tai liitettä tietojenkalasteluviestissä tai haitallisessa ponnahdusikkunassa. Drive-by-download-hyökkäykset ovat yleinen ongelma verkossa ja niillä on erityinen rooli tietojenkalasteluhyökkäyksissä. Sen sijaan että käyttäjä päätyisi tavoittelemalleen verkkosivulle, Drive-by-download-hyökkäys lataa ja asentaa haittaohjelman käyttäjän tietokoneelle. Hyökkääjät tunnistavat uhriasiakkaat hyödyntämällä asiakkaan tietokoneessa olevia haavoittuvia ohjelmistokomponentteja haittaohjelmien levittämiseksi. Tällaisten hyökkäysten havaitseminen on aktiivinen tutkimusalue, ja se sisältää erilaisia lähestymistapoja, kuten poikkeamien tai allekirjoituspohjaisten haittaohjelmien havaitsemisen.
- Väärennetyt linkit, painikkeet ja kuvat
Clickjacking-hyökkäyksessä hyökkääjät manipuloivat verkkosivuston ulkoasua huijatakseen käyttäjiä klikkaamaan väärennettyä linkkiä, painiketta tai kuvaa. Clickjacking tunnetaan myös user interface redress -hyökkäyksenä ja se kuuluu confused deputy -hyökkäysten luokkaan. Hyökkääjät käyttävät läpinäkyviä tai läpinäkymättömiä kerroksia alkuperäisten verkkosivustojen päällä. Uhrit uskovat klikanneensa overlay-elementtiä, mutta sen sijaan klikkaavatkin alkuperäistä verkkosivuston osaa. Tällä tavoin hyökkääjät saavat uhrinsa käynnistämään mielivaltaisia toimia alkuperäisellä verkkosivustolla. Hyökkäyssivusto käyttää iFrame-kehystä kohdesivuston 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 online-tilille ja käynyt asetussivulla. Näissä tapauksissa hyökkääjä voi huijata uhrin suorittamaan toimintoja luotetulla sivustolla, kun uhri on jo kirjautunut sisään. 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 hyökkäysten havaitseminen ja ennaltaehkäisy eivät ole triviaalia. 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 JavaScript-komentosarjojen 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ätä puolustustekniikkaa kutsutaan FrameBustingiksi. Koska käyttäjät ovat saattaneet poistaa JavaScriptin käytöstä, tämä 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 myös alttiita molemmille hyökkäyksille. Tutkijat ovat havainneet, että on mahdollista huijata käyttäjät päästä-päähän tietojenkalasteluhyökkäykseen, jossa hyökkääjät voivat 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 kaksi käyttöoikeutta omaava haitallinen sovellus ottaa 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 (client-side storage) tarkoittaa alueita, jotka selain tai käyttöjärjestelmä tarjoaa verkkosivustoille tai mobiilisovelluksille tietojen lukemista ja kirjoittamista varten. Tallennus on paikallista asiakkaalle, eikä se vaadi palvelinpuolen resursseja tai aktiivista Internet-yhteyttä. Samaan aikaan pahantahtoiset käyttäjät voivat manipuloida tallennettuja tietoja. Tästä syystä asiakaspuolen tallennusalueet on suojattava haitalliselta käytöltä. Tässä osiossa kuvataan yleisiä asiakaspuolen tallennusalueita ja niiden suojausmekanismeja.
- Selaimessa
Historiallisesti asiakaspuolen tallennustilaa selaimessa on käytetty vain evästetietojen tallentamiseen. Evästeitä ei voida kuitenkaan käyttää suurten tai monimutkaisten tietomäärien tallentamiseen. HTML5:n myötä on olemassa tehokkaampia ja monipuolisempia vaihtoehtoja asiakaspuolen tallennukseen selaimessa. 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.
Asiakaspuolen tallennusmekanismien tietoturvaongelma on, että pahansuovat käyttäjät voivat manipuloida niitä. 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
Mobiilisovelluksissa asiakaspuolen tallennussuojauksen käsittely riippuu myös tiedon tyypistä ja tallennusmekanismista, esim. sovelluksen yksityinen tallennustila tai julkinen tallennustila, kuten SD-kortti. Tiedot tulisi allekirjoittaa digitaalisesti sekä selaimen että mobiiliasiakasohjelman tallennustarkoituksiin. 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, kuten SD-kortteja, jotka eivät käytä suojattuja pääsynvalvontamekanismeja. Sen sijaan sovelluksen yksityisille tallennusalueille tarjotaan asianmukaiset pääsynhallintamekanismit.
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 arkaluonteisia 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ä tarvitse 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 ovat vaarallisia mobiililaitteiden käyttäjille, kun he autentikoituvat laitteelle tai verkkopalveluihin julkisissa tiloissa, kuten junissa, rautateillä ja lentokentillä.