01.08.2013
Esa Turtiainen

Monet kuvittelevat, että WWW-sivujen seurannan voisi kiertää pistämällä selaimesta evästeet pois päältä ja kieltämällä JavaScriptin suorittamisen. Näin ei ole.

Selain kertoo sinusta jokaisella elementillä, jonka se hakee verkosta kolmansilta osapuolilta. Hakijan ei tarvitse olla JavaScriptiä, vaan aivan yhtä hyvin olla sivulla viitattu kuva, CSS-tyylitiedosto tai jopa mikä tahansa merkkijono. Verkkosivun haussa ei ole mitenkään rajoituttu tyyppeihin, jotka ovat tiedossa sivua hakiessa. Myös palvelimen ilmoittama tyyppi voi olla aivan toinen kuin nimestä olisi voinut päätellä.

Mikäli JavaScript on päällä, ohjelmakoodi voi manipuloida sivun sisältämään linkkejä kenelle tahansa osapuolelle, vaikka linkkejä sivulla ei alun perin olisikaan. Edes sivun analyysissä ei välttämättä tuollaisia linkkejä löydy, koska ne voi olla jo poistettu siinä vaiheessa, kun sivua tutkitaan. Eri analysointikerroilla tutkittu sivu voi olla villisti erilainen, kun JavaScript-ohjelmat ovat uudelleenkirjoittaneet sivun paitsi sivun sisältöä niin myös rakennetta.

Kuva iltapäivälehdestä

Iltalehden sivu

Otin pikaiseen analyysiin Yhden iltalehden sivun. Täältä löytyy helposti hyviä esimerkkejä seurannasta, vaikka mitään perusteellista tutkimusta ei tehtykään.

Evästeet

Alkeellinen jäljitystekniikka ovat cookiet. Sivustot saavat kertoa vastauksissaan selaimellesi haluavansa selaimen muistavan nimi-arvo -parin.

Kun selaimesi lähettää tietopyynnön palvelimelle, jolle on tallennettu eväste, se lähetetään aina jokaisessa pyynnössä. Kun menet Googlen sivuille, jokaisessa sivusi tekemässä tietopyynnössä on jokainen Googlen tallennusta pyytänyt eväste mukana. Eikä vain Googlen pääsivun eväste vaan myös jokainen *.google.com voi asettaa evästeen google.com-sivustolle.

Luotettavan yrityksen palvelin onkin ulkopuolisen käsissä

eas.almamedia.fi:stä haetaan javascriptiä, joka mitä ilmeisemmin kontrolloi mainostamista. Tämä saa asettaa evästeitä kaikille almamedian sivustoille. eas.almamedia.fi-palvelimen ei kuitenkaan tarvitse olla Almamedian hallussa. IP-osoitteen perusteella haku löytääkin koneen Göteborgin läheltä Kärra-nimisestä paikasta.Todennäköisesti se on mainostajan oma palvelin, jolle on annettu selväkielinen nimi almamedian kautta. Näin mainostaja voi asettaa evästeitä kaikille almamedian palveluillevaikka nimen perusteella olisi estetty pääsy mainostusyrityksen omille sivuille.

Todennäköisesti samaa palvelua ovat esm3.emediate.eu ja eas3.emediate.se, joista haetaan kymmenittäin linkkejä. Näihin palataan kohta tarkemmin.

Sivut, jotka voivat olla mitä tahansa

Yksi sivusto, josta haetaan JavaScript-ohjelmia on dnn506yrbagrg.cloudfront.net. Cloudfront on Amazon Web Services -järjestelmän osa, joka jakaa yksinkertaista muuttumatonta web-tietoa tehokkaista palvelimistaan yhtä aikaa ympäri maailmaa. Minäkin voisin vuokrata sieltä saman palvelun ja saisin samanlaisen kryptisen koodin tiedon osoitteeksi. Tällaisen nimen perusteella tieto voi olla aivan mitä tahansa ja kenen häkkerin tahansa tekemää. Ja se suoritetaan sinun selaimessasi.

Toinen esimerkki "kenen tahansa" koodin suorittamisesta on se, että sivulla jossain vaiheessa oli kotikokki.net-mainos, joka tarvitsi kaksi tavanomaista JavaScript-kirjastoa: jQuery ja jCarousellite. Nämä haettiin kotikokki.net-sivustolta. Sivuvaikutuksena siis kerrottiin kotikokki.net-sivustolle, että minä luen Iltalehden sivua. ja suoritetaan koodia, joka tulee minulle yllättävästä lähteestä.

Mitä JavaScriptillä saa selville?

Vaikka JavaScriptissä ei olisikaan ongelmaa, sillä saadaan käyttäjästä jonkin verran tietoja.

Esimerkiksi google-analytics.com pitää yllä tietoja sivuston kävijöistä lähettämällä sivustopyynnössä seuraavannäköiset tiedot:

utmwv:5.4.3
utmn:1397791733
utmhn:www.iltalehti.fi
utmcs:ISO-8859-1
utmsr:1680x1050
utmvp:61x946
utmsc:24-bit
utmul:fi
utmje:1
utmfl:11.8r800
utmdt:Iltalehti.fi | IL - Suomen suurin uutispalvelu
utmhid:128799485
utmr:-
utmp:/etusivu/

Pyyntö on kuin mikä tahansa web-sivun pyyntö noilla parametreilla. Se ei siis "lähetä" mitään tietoa. Mutta pyynnön sivuvaikutuksena toimitetaan kaikki se, mitä selaimestasi saadaan selville. Näissä tiedoissa ei ole mitään erityisen vaarallista, kentät on selitetty Google Analyticsin dokumentaatiossa. Tämä kertoo näyttöni koon, selaimen valitun kielen, Flash-version, Java-tuen yms. Samoin se kertoo millä sivulla olet ja miltä sivulta klikkaamalla olet tälle sivulle päätynyt.

Pitkien lukujen väitetään olevan satunnaisia lukuja. Toinen estää pyyntöjen välivarastoimisen ja toinen yhdistää tiedot samalla sivulla olevaan jäljityskuvaan. Näistä luvuista sinua ei pitäisi olla suoraan mahdollista tunnistaa. Mutta toisaalta et siitä satunnaisten lukujen kanssa voi olla varmakaan.

Nämä ovat lähinnä ne tiedot, jotka JavaScriptin pitäisi saada selville käyttäjästä. Ei paljon muuta. Vanhoissa selaimissa saattoi saada selville selaushistorian. Mutta kaikkein tärkeintä on muistaa, että JavaScriptillä on täysi kontrolli selaimen sivun käyttöliittymään. Se, mitä tapahtuu pankkitililläsi voi olla jotain aivan muuta kuin se, mitä tapahtuu näytölläsi.

Jäljitysevästeet

Paljon Google Analytics -tietoja vaarallisempaa on tietää, että olet selaaja 23423453465. Silloin kaikki sivustoilla käyntisi ja niillä tekemisesi ovat yhdistettävissä toisiinsa. Jos kerrot osoitteesi kerran, se on kaikilla yhteistyötä tekevillä sivuilla tiedossa.

Sivustot eivät tarvitse kuin yhden numeron tallennettuna tietokoneeseesi, minkä avulla sinut tunnistetaan. Eikä tämän tekemiseksi tarvitse vaivautua kirjoittamaan JavaScript-koodia.

Yksinkertaisin tapa tunnistaa sinut on tietysti se, että annat evästeiden säilyä koneessasi. Esimerkiksi, kun Iltalehden sivulla oleva G+-nappi pyytää koodia apis.google.com:lta, selaimeni lähettää automaattisesti 12 eri evästettä pyynnön mukana.

Näiden jäljitysevästeiden lähettäminen on yleensä piilotettu hyvin vaarattomiin tiedostotyyppeihin. JavaScriptin päältälaittaminen ei vaikuta näihin mitenkään. Esimerkiksi apis.google.com-pyyntö on tyypiltään HTML-tiedoston haku. HTML-sivuilla on kuitenkin harvoin hyvää syytä hakea kokonaisia HTML-dokumentteja, koska perus-HTML ei sisällä toisen dokumentin laittamista päädokumentin sisään.

Suosituin paikka piilottaa jäljitysevästeiden lähetys on se, että sivu hakee 1x1-kokoisen GIF-kuvan. Näitä on Iltalehdenkin sivulla läjittäin. GIF-kuva on erittäin kevyt käsitellä eikä 1x1-kuva aiheuta virheilmoituksia.

Google Analytics on yksi, joka normaalin JavaScript-kutsunsa lisäksi varmuuden vuoksi lähtettää tiedot myös 1x1 GIF-kuvassa. Iltalehti ilmoittaa olevansa kiltti mainostaja kuvahaulla google-analytics.com:sta lisäparametreilla:

tid=UA-687304-63
&cid=12345
&t=event
&ec=IltalehtiBoksi
&ea=Impression

Mutta ei Google ole ainoa, eikä lähellekään tuhmimmasta päästä. Google on niin iso, ettei sillä ole varaa olla tarpeettoman tunkeileva.

Yksinkertaisen 1x1-sivun kyselyn tekevät uip.semasio.net, track.adform.net, cdn3.emediate.eu ja score24.com. Näistä ahkerimmat ovat saaneet koneelleni jo kahdeksan evästettä.

Ja on Iltalehden sivulla yksi jäljityskuva, joka on jpeg-formaatissa. Jpeg-formaatti on tarkoitettu valokuville, ja sitä on hitaampi käsitellä. Kuitenkin jpeg-kuvaviittaus sivulle admp-tc.iltalehti.fi on selvästi jäljityskuva. Tämä palvelin löytyy nimestä huolimatta Amazonin hallusta Irlannista.

"Hyvä on, en lataa edes kuvia"

Selaimen ei tarvitse tietää, mitä se on hakemassa. Jos selain on esimerkiksi hakemassa CSS-tyylitiedostoa ja tuloksena onkin kuva, selain todennäköisesti armollisesti toteaa saaneensa väärän tyyppisen tiedoston (tyyppi katsotaan palvelimen ilmoittamasta MIME-määrittelystä, ei tiedoston loppuliitteestä) ja jatkaa sujuvasti eteenpäin.

Erityisesti niitä varten, jotka ovat laittaneet kuvien latauksen pois päältä *.gif-suodatuksella on kehitetty seuraava linkki:

http://eas3.emediate.se/eas?cu=421

Tämä hakee resurssin verkosta, mutta se onkin uudelleenohjaus linkkiin:

http://eas3.emediate.se/pixel.gif

Ja yllätys yllätys tämä onkin 1x1-jäljityskuva. Vaikka sinulla olisikin kuvien lataus pois päältä, melko varmasti selaimesi käy hakemassa tuon kuvan tarkastamatta uudelleen, että se on .gif-päätteinen.

CSS-tiedostot jäljityksessä

Eikä mikään estä käyttämästä CSS-tyylitiedostoja samalla tavalla jäljityksessä kuin kuviakin. Nykyaikaiset sivustot jaetaan kahteen osaan: HTML-tiedostot, jotka sisältävät sivuston sisällön ja CSS-tiedostot, jotka kuvaavat ulkonäön. CSS-tiedostot ovat siis aivan välttämättömiä sivuston käytölle.

www.score24.com lataa lyhyen CSS-tiedoston, joka kuvaa lippuja. Todellisuudessa se saattaa olla täysin seurantatiedosto, joka haetaan lisäargumenteilla:

partner=iltalehti&
sport=Soccer&
eventId=6167&
css=http://static.iltalehti.fi/css/score24tulospalvelu/iltalehti_v7_one_league_with_hidden_elements.css

Evästeet lähetetään CSS-tiedostoa pyydettäessa aivan samalla tavalla kuin muissakin hauissa.

Dynaaminen linkin rakennus

En ehtinyt kovin tarkkaan tutustua tähän, mutta vaikuttaa siltä, että suomalaisen leiki.com:n mainostamiscookiet rakentavat linkkejä dynaamisesti. Kun sivu latautuu, JavaScript osoitteesta kiwi5.leiki.com rakentaa sivustolle uusia CSS-linkkejä.

JavaScript voi selvittää selaimesta kaiken mahdollisen ja kertoo sen epäsuorasti eteenpäin. Tämä tehdään niin, että rakennetaan sivustolle CSS-linkki, jonka parametreissa kaikki kerrotaan kenelle tahansa, ja siihen piilotetaan evästeiden lähetys. Selaimesi sitten hakee tuon CSS-linkin etsiessään tyylitiedostoja, ja kertoo tiedot eteenpäin vaikka JavaScript ei pääsisikään suoraan verkkoon. Linkki voidaan vielä poistaa heti, kun se on suoritettu.

Eikä siinä kaikki

Iltalehden sivulla on vielä muutama mainostusviittaus, jotka eivät saaneet edellä mainintaa: s.atmedia.com, s1.adform.net, track.adform.net, b.scorecardresearch.com, ssl.gstatic.com (G+-nappi).

Ja voi niitä olla paljon muitakin. Tiedot käytiin läpi tavalla, mikä ei ollisi huomattu JavaScriptin poistamia mainoslinkkejä. Ja myös Flash ja Java olivat poissa päältä.

Salaus?

Ainoa salattu HTTPS-yhteys palvelimeen on G+-napin hakeminen. Kaikki muut tiedot ovat kenen tahansa verkkoa kuuntelevan käytettävissä. Kerrot käynnistäsi Iltalehden sivulla Irlantiin, Göteborgiin, Googlelle, Amazon CloudFront-palvelimeen ja kymmenkuntaan muuhunkin paikkaan. Ja kaikille niille, jotka ovat matkan varrella.

Yhteenveto

En keksi mitään keinoa, millä voitaisiin estää se, että selaimesi ei kertoisi jollekulle jäljittäjälle käyneesi Iltalehden sivulla. Voit laittaa evästeet pois päältä, Flashin pois päältä, JavaScriptin pois päältä, kuvien latauksen pois päältä ja suodattaa loppuliitteen perusteella linkkejä. Mutta yhä parametreja voidaan kuljettaa vaikka CSS-linkin mukana. Ja aina löytyy jännittäviä epäsuoria tapoja kiertää rajoituksia. Eikä nykyaikaista web-kokemusta voi saada ilman CSS-tiedostoja, kuvia eikä edes JavaScriptiä. Flash ja Java ovat kuitenkin sentään onneksi jo mennyttä maailmaa.