Met deze trackingtechnieken wordt je surfgedrag gevolgd

Advertentienetwerken en internetbedrijven volgen je op de voet, vooral via mobiele apps en browsers. In dit artikel focussen we ons op bekende en onbekende trackingtechnieken. Denk aan cdn’s, tracking cookies, web storage, fingerprinting, favicons, cname cloaking en FLoC. Plus: wat doe je er tegen?

Er zijn verschillende redenen waarom websites bezoekers willen traceren. Zo kan het interessant zijn te weten welke pagina’s sitebezoekers bekijken, hoelang ze op een pagina blijven, waar ze op klikken enzovoort. Immers, zo’n analyse kan bijvoorbeeld aan het licht brengen dat belangrijke informatie op een pagina nauwelijks wordt gelezen, zodat bezoekers bijvoorbeeld minder geneigd zijn zich in te schrijven voor een nieuwsbrief. 

Tracering kan ook nuttig zijn voor de conversieratio van commerciële sites: hoeveel bezoekers gaan over tot een aankoop? Misschien blijkt hieruit wel dat een webpagina een lagere conversieratio heeft bij bezoekers afkomstig van een site met advertentie A dan wanneer ze vanuit een site met advertentie B zijn doorverwezen.

Wellicht de belangrijkste reden voor webtracking is profilering en gerichte marketing. Hoe nauwkeuriger men een bezoeker weet te profileren, hoe gerichter men advertenties kan aanleveren. Het zogenoemde retargeting is hierbij erg populair: je krijgt dan op diverse sites advertenties te zien voor een product dat je op een eerdere site hebt bekeken.

Tracking cookies zijn hiervoor wellicht de meest gebruikte techniek, maar er zijn er nog heel wat andere, waar gebruikers vaak geen weet van hebben. In dit artikel stellen we een hele reeks van deze technieken voor, evenals enkele verdedigingsmechanismen ertegen.

IP-adres

Als je naar een website surft, kunnen webserver je ip-adres loggen. Dat kan handig zijn om na te gaan of je de site al eerder hebt bezocht en hoe vaak, en welke pagina’s je al bekeken hebt. Welk ip-adres je achterlaat, kun je uitvinden via bijvoorbeeld iplocation.net, waar je meteen merkt dat een webserver nog andere systeem- en browserinformatie kan vastleggen (zie verder bij ‘Fingerprinting’). 

Tenzij je van een vast ip-adres gebruikmaakt, bijvoorbeeld gekoppeld aan je domeinnaam, leidt zo’n adres normaliter naar een adrespool bij je internetprovider. Zo’n ‘pool-adres’ verraadt je identiteit niet, maar het volstaat alvast wel om je land van herkomst te kennen. Dat kan dan weer nuttig zijn om alleen producten, bijvoorbeeld met aangepaste prijzen, te tonen die in jouw land beschikbaar zijn, maar net zo goed voor geoblokkades, zoals die door BBC iPlayer en andere mediaservices worden gebruikt.

Houd je dat ip-adres liever verborgen, dan kun je surfen via een anonimiserend netwerk als Tor, met behulp van de Tor Browser, eventueel gevirtualiseerd met Whonix. Of je gebruikt een proxy server of liever nog een betrouwbare VPN-dienst die je ip-adres verbergt en vervangt door het ip-adres van de VPN-server in een zelf te kiezen land.

Referrer

Niet alleen je eigen ip-adres kan worden gelogd, maar ook het webadres van de site waarop je hebt doorgeklikt om naar de volgende site te gaan. Een klein experiment verduidelijk dit. Start je browser op, surf naar Google, zoek naar ‘pcm web’ en klik op de link die naar de site van PCM leidt. Druk op F12 om naar de ontwikkelaarstools te gaan en open hier de Console, waar je document.referrer intikt. 

Je leest nu https://www.google.nl af. Deze informatie wordt via de http-headers namelijk standaard doorgestuurd naar de bezochte website, zodat niet alleen deze site weet waar je vandaan komt, maar ook eventuele advertentie- of sociale medianetwerken met content op diezelfde webpagina.

Het valt trouwens niet helemaal uit te sluiten dat zo’n referrer privacygevoelige informatie bevat, bijvoorbeeld iets als www.website.com/?land=nederland&leeftijd=40&roker=1&inkomen=2300. Nu is het wel zo dat de meeste browsers, waaronder Chrome, Safari (met ITP oftewel Intelligent Tracking Prevention) en onlangs ook Firefox, een strenger referrer-beleid toepassen en zowel het pad als query-informatie voor alle ‘cross-origin’-verzoeken weglaten.

Overigens kun je in Firefox via about:config allerlei referrer-beleidsregels zelf aanpassen. Om referrer geheel te blokkeren stel je network.http.sendReferrerHeader in op 0. Verder zijn er browserextensies waarmee je zelf tot op siteniveau kunt bepalen hoe de browser met referrers hoort om te gaan, zoals Referrer Control (voor Chrome en Firefox).

Url-parameters

We hebben al aangegeven dat ook de url-parameters (query-strings met) informatie kunnen doorgeven die trackers best kunnen interesseren. In Google Ads wordt deze methode zelfs bewust gehanteerd via de zogenoemde ValueTrack-parameters. 

Wanneer een adverteerder bijvoorbeeld {lpurl}?network={network}&device={device} opneemt in zijn trackingsjabloon dan wordt de url iets als www.website.com/?network=g&device=t zodat de adverteerder weet dat je via een tablet en vanuit Google Search op die link hebt geklikt. Ook Google Analytics maakt trouwens volop gebruik van url-parameters, te herkennen aan &utm in de string.

Er zijn wel browserextensies die ongewenste url-parameters kunnen weghalen voor ze aan de webserver worden doorgegeven. Eén ervan is Neat URL, beschikbaar voor Firefox en Chrome. We bekijken heel kort de extensie in Firefox. 

Rechtsklik op het pictogram en kies Preferences. Ga naar het tabblad Opties om de Standaard geblokkeerde parameters te zien. Je kunt bij Geblokkeerde parameters ook andere parameters toevoegen. Stel, je wilt de parameter q alleen in google.nl-sites (en subdomeinen) laten verwijderen, dan volstaat q@*.google.nl. Bevestig je aanpassingen met Voorkeuren opslaan

Of dit een goed voorbeeld is, is nog maar de vraag, want hierdoor zullen je zoekopdrachten in google.nl niet meer werken zolang dit item is opgenomen...

Content Delivery Networks (cdn’s)

Talrijke sites gebruiken JavaScript en doen daarvoor graag een beroep op frameworks waarin frequente gebruikte JavaScript-functies zijn opgenomen. Zulke frameworks vinden ze bij zogeheten Content Delivery Networks (cdn’s). Google is een van de meest gebruikte, maar er zijn nog andere publieke cdn’s. Natuurlijk, wanneer frameworks bij cdn’s worden opgehaald, krijgen die ook je ip-adres en andere browserdata toegestuurd, wat alweer tracering mogelijk maakt.

Om dat tegen te gaan kun je een browserextensie als Decentraleyes installeren, beschikbaar voor onder meer Firefox en Chrome. Die zorgt ervoor dat de meest gebruikte frameworks lokaal worden opgeslagen zodat niet langer een aanroep naar zo’n cdn is vereist. Je kunt de werking voor en na uittesten op decentraleyes.org/test. Let wel, heb je een adblocker als uBlock Origin draaien, dan is het niet uitgesloten dat die het ophalen en updaten van lokale JavaScript-bibliotheken tegengaat.

Trackingcookies

Wellicht de populairste techniek bij sitetracking draait om cookies. Onze focus ligt hier niet zozeer op de functionele of zelfs analytische cookies, maar op de tracking cookies van derde partijen, bedoeld om je over diverse sites heen te volgen. 

Wat er gebeurt, is dat zo’n partij een stukje code, via een advertentie of een onzichtbaar plaatje, op de bezochte site plaatst om een cookie op je toestel te kunnen bewaren. De cookie kan dan worden ingelezen wanneer je een andere site bezoekt waarop die partij ook zo’n tracker heeft achtergelaten. Advertentienetwerken zoals die van Google hebben trackers op miljoenen sites.

Steeds meer browser blokkeren standaard cookies van derde partijen, zoals Firefox, Safari en Brave. We nemen Firefox even als voorbeeld. Tik about:preferences#privacy in op de adresbalk voor de module Privacy & Beveiliging. Je zult merken dat de Standaard-instelling onder meer Sociale-mediatrackers, Fingerprinters (zie verder bij ‘Fingerprinting’), Cross-site-trackingcookies en Cross-site-cookies in privévensters blokkeert. 

Wil je zelf bepalen welke trackers je met deze ETP-functie (Enhanced Tracking Protection) blokkeert, kies dan Streng of eventueel Aangepast. In de ‘strenge modus’ wordt ook de TCP-functie actief (Total Cookie Protection). Die hoort nog meer tracering door derde partijen te voorkomen, maar kan ook bepaalde functionaliteiten belemmeren.

Web storage

Er zijn helaas nog heel wat andere traceringstechnieken dan tracking cookies. Surf bij wijze van experiment maar eens met Firefox of Chrome naar YouTube waarna je op F12 drukt. Ga in Firefox naar Opslag of naar Application in Chrome en open hier (de tijdelijke) Sessieopslag en (de persistente) Lokale opslag. Dit toont aan dat browsers ook allerlei informatie kunnen bewaren buiten cookies om: de zogenoemde HTML5 web storage of DOM-storage (Document Object Model). Die kan trouwens veel meer data bevatten dan een gewoon cookie (zo’n 10 MB versus 4 kB). 

Om deze opslag leeg te maken klik je met rechts op de url en kies je Alles verwijderen (in Chrome selecteer je hier Clear). Lokale opslag verwijderen, kan trouwens ook op een meer ‘klassieke’ manier, ongeveer zoals je ook cookies weghaalt. We nemen Chrome als voorbeeld. Tik chrome://settings.siteData in en tik een domeinnaam in bij Cookies zoeken

Klik op een domeinnaam met lokale opslag en klik hierop. Kies Alles verwijderen om de inhoud leeg te maken. Alle lokale opslag in één keer weghalen kan ook. Druk op Ctrl+Shift+Delete, zet een vinkje bij Cookies en andere sitegegevens, stel Periode in op Alles en klik op Gegevens wissen (let wel, ook cookies verdwijnen hierdoor).

Fingerprinting

Lokale opslag via cookies of DOM-storage is niet eens noodzakelijk om je (browser) online te kunnen identificeren. Webservers kunnen als het ware een vingerafdruk van je browser en, via JavaScript, van je systeem nemen op grond van talrijke eigenschappen die je browser doorgeeft en die samen een uniek en dus traceerbaar datapatroon vormen. 

Om er maar enkele te noemen: user agent, geïnstalleerde plug-ins en fonts, standaardtaal, tijdzone, besturingssysteem enzovoort. Om een idee te krijgen van de vingerafdruk van je eigen browser(s) kun je bijvoorbeeld surfen naar coveryourtracks.eff.org

Steeds meer browsers trachten hiertegen bescherming te bieden. Zo hebben we het al even gehad over de module Privacy & Beveiliging van Firefox, maar Brave gaat nog een stapje verder en tracht de vingerafdruk er telkens anders uit te laten zien, zodat die niet zomaar herkend wordt. Tor Browser pakt het dan weer helemaal anders aan: die probeert de browser er bij alle gebruikers zo identiek mogelijk uit te laten zien.

Een aanverwante techniek is canvas fingerprinting, waarbij via HTML5 de browser de instructie krijgt een onzichtbare tekening te maken. Minuscule verschillen bij het uitvoeren van deze taak kunnen volstaan voor een unieke vingerafdruk. Test het zelf even uit op browserleaks.com/canvas.

Browsercache

We hebben het al over DOM-storage gehad, maar er zijn ook technieken waarbij op een sluwe manier allerlei andere browsercaches worden ingezet. Het is bijvoorbeeld mogelijk dat een webserver een ID codeert in een afbeelding die bij het laden door de browser wordt gecachet. Het gevolg is dat ook andere webservers deze ID kunnen inlezen wanneer die hetzelfde plaatje hebben ingebed. 

Naast caches voor afbeeldingen zijn er onder meer ook caches voor stylesheets, fonts enzovoort en die kunnen in principe zonder meer worden uitgelezen.

Onlangs hebben onderzoekers van de universiteit van Chicago ontdekt dat ook favicons op een vergelijkbare manier als traceermiddel kunnen worden ingezet, zeker in combinatie met fingerprinting. Favicons belanden op een andere locatie dan de cookies, surfgeschiedenis of sitegegevens en verdwijnen dus niet als je cookies of je geschiedenis wist. Het is nu heel goed mogelijk dat een website diverse favicons van subdomeinen opslaat in een specifieke en dus identificeerbare combinatie.

In Chrome bijvoorbeeld belanden favicons in een (SQLite-)database met de naam favicons, standaard in %localappdata%\Google\Chrome\User Data\<profielnaam>. Je kunt die gericht inlezen met bijvoorbeeld DB Browser for SQLite, via een SQL-instructie als:

select f.url, b.* from favicons f inner join favicon_bitmaps b on f.id = b.icon_id where f.url like '%<beoogde_domeinnaam>%'

Cache partitionering

Om het zomaar delen van cache-informatie tegen te gaan is Firefox voorzien van FPI-functie (First Party Isolation), overigens geïnspireerd door Tor. Die houden in dat cookies, maar ook andere surfdata uit browsercaches, in principe alleen nog benaderbaar zijn vanuit hetzelfde domein, wat site-overstijgende tracering (cross-site tracking) moet bemoeilijken. Om deze functie in te stellen tik je about:config en vervolgens firstparty in. Dubbelklik op privacy.firstparty.isolate en zet de waarde op true.

Een vorm van cache partitioning dus, ook wel network partitioning genoemd. Safari biedt al langer ondersteuning aan voor zo’n functie en ook Chrome (versie 86 en hoger) heeft een vergelijkbare functionaliteit ingebouwd.

Een nadeel van deze vorm van bescherming is wel dat data per TLD (top level domain) opnieuw moeten worden gedownload, wat een nadelige impact kan hebben op sommige prestaties, zoals die van Google Fonts.

CNAME cloaking

In 2019 werd ontdekt dat een Franse krant een sluwe manier had toegepast om anti-traceringstechnieken te ontlopen: CNAME cloaking. Dat vergt enige toelichting.

Voor een browser zijn bijvoorbeeld www.website.nl en blog.website.nl (afkomstig van) dezelfde site of partij. Wanneer nu vanuit een pagina op www.website.nl inhoud wordt opgehaald uit blog.website.nl, dan komen alle cookies en aanverwante data ook beschikbaar voor deze tweede site. Deze kan ook cookies plaatsen die door de browser dan eveneens als eerste-partij cookies worden beschouwd en dus normaliter niet worden geblokkeerd. 

Door nu sluw gebruik te maken van CNAME-records (canonical name) kan de ene domeinnaam binnen het DNS-systeem naar een andere ‘gemapt’ worden en langs deze weg kan een tracker in de eerste-partij context van een bezochte website worden geïnjecteerd.

Verschillende browsers hebben inmiddels verdedigingstechnieken ontwikkeld, zoals Safari (versie 14 en hoger) met ITP (Intelligent Tracking Prevention). Die laat bijvoorbeeld cookies die via CNAME cloaking zijn gezet automatisch na zeven dagen verlopen. 

Ook Brave 1.17 en hoger (met Brave Shields) en de adblocker uBlock Origin vanaf versie 1.25.0 zouden CNAME-cloaking detecteren en blokkeren, met behulp van de browser.dns-API van Mozilla. Op github.com/AdguardTeam/cname-trackers kun je terecht voor een geactualiseerde lijst van trackers die zich van CNAME-cloaking bedienen (circa 13.000 begin juni), voor gebruik in adblockers.

FLoC 

We hebben het in dit artikel al gehad over tracking cookies, maar als het aan Google ligt, worden zulke technieken in de loop van 2022 verleden tijd. Het bedrijf is namelijk volop aan het experimenteren met een alternatieve techniek: FLoC (Federated Learning of Cohorts). Wat houdt die precies in en in hoeverre biedt die de gebruiker meer garantie op privacy?

FLoC draait lokaal in je (Chrome-)browser, als onderdeel van Googles Privacy Sandbox-project, en gebruikt je surfgeschiedenis van de laatste week om je, met behulp van AI (federated learning) en op basis van een zogenoemde SimHash in te delen in een cohort, een categorie of groep van ‘gelijkgezinden’ (lees: gebruikers met dezelfde interesses). Elke groep krijg een FLoC-ID en dit label is in principe zichtbaar voor iedere bezochte website. Adverteerders krijgen dus niet langer een geïndividualiseerd maar gegroepeerd en dus min of meer geanonimiseerd interesseprofiel te zien.

Om te weten of je browser momenteel FLoC ondersteunt, hoef je maar te surfen naar amifloced.org. Begin juni zouden wereldwijd nog maar 0,5 procent van alle Chrome-installaties van deze functie zijn voorzien, maar de kans is groot dat Google zijn experimenten snel flink gaat uitbreiden.

Adverteerders lopen niet bepaald warm voor het FLoC-idee. Niet alleen maakt deze techniek het lastiger om heel gerichte advertenties te tonen – want geen geïndividualiseerde profielen meer – het geeft alweer de ontwikkelaars van browsers meer macht. Dit speelt dus vooral marktleiders als Google en Apple in de kaart.

Het is de vraag of de privacy van gebruikers hier echt mee gebaat is. Alweer een browserfunctie betekent namelijk per definitie een nieuw attribuut dat bij fingerprinting kan worden ingezet. De kans lijkt ons klein dat Google de gebruiker inzage zal geven in de gevormde cohorts of dat de gebruiker een cohort zal kunnen verwijderen als hij zich daarin niet herkent. 

Komt daarbij dat FloC-cohorts weliswaar niet als ‘identifiers’ kunnen fungeren, maar advertentiebedrijven weten de informatie uit zo’n cohort ongetwijfeld wel te linken aan data die ze via andere manieren binnenkrijgen, zoals fingerprinting. 

Er komt ook weerstand van andere browsers. Zo hebben Vivaldi en Brave al eerder meegedeeld dat ze FLoC niet zullen implementeren en hebben inmiddels ook Mozilla (Firefox) en Microsoft (Edge) hun veto uitgesproken. DuckDuckGo heeft bovendien de extensie Privacy Essentials geüpdatet, zodat je er FloC mee kunt blokkeren in Chrome.

Chrome’s FLoC krijgt dus heel wat kritiek: van andere browserontwikkelaars, van adverteerders en van diverse privacy-voorvechters. Wordt vervolgd.

Geschreven door: Toon van Daele op

Category: Nieuws, Security

Tags: chrome, firefox, security, privacy