Een beveiligingsonderzoeker van Google heeft een nieuwe methode ontwikkeld om de surfgeschiedenis van webbrowsers te achterhalen. Websites zijn hierlangs in staat de lijst met eerder bezochte websites volautomatisch te oogsten, wat in strijd is met de wet bescherming persoonsgegevens. Ontdekker Michael Zalewski (beter bekend om zijn hackersnaam lcamtuf) heeft ook een proof-of-concept (PoC) gemaakt voor 'zijn' lek.

Firefox, Chrome, Opera, IE

“Mijn PoC exploit de cache-timing in Firefox op een manier die redelijk snel en betrouwbaar lijkt", schrijft hij in zijn post op de beveilingingsmailinglist Full Disclosure. “Het is een ruwe hack, dus het zal waarschijnlijk niet lukken bij sommige mensen, maar het is waarschijnlijk toch wel interessant."

De oorspronkelijke testcode die live staat op zijn eigen blog werkt voor Firefox, maar is inmiddels aangevuld met varianten voor Chrome en Opera. Gisteren is een experimentele variant voor Internet Explorer toegevoegd. Een steekproef door Webwereld met Chrome 15, IE8, Firefox 7 en 8 bevestigt de werking van de exploittool.

De hierbij gebruikte methode is eerder al theoretisch beschreven, maar kostte tot op heden én te veel tijd én vervuilde direct de cache van de browsergeschiedenis. De Google-onderzoeker heeft die problemen weten te vermijden, onder meer door de browsernavigatie af te breken voordat het daadwerkelijke http-verzoek wordt gedaan. De cache blijft daardoor bij het uitlezen onaangetast.

CSS-lek van 2010

Dit privacylek volgt op de ophef van maart vorig jaar, toen bleek dat een oude browserfunctie volautomatisch kon worden misbruikt. Het overzicht van reeds bezochte websites kon door JavaScript-code ongemerkt worden uitgelezen en worden gekoppeld aan webstatistiekenprogramma's, zo demonstreerde een Nederlandse hacker.

Beide lekken maken misbruik van de CSS-functie op basis waarvan een browser reeds bezochte links paars weergeeft (in plaats van het normale blauw). Alle browsermakers hebben hun software inmiddels aangepast om misbruik van het oude lek aan banden te leggen.