A Google researcher has resurrected an attack that allows website operators to steal the browsing history of visitors almost a year after all major browser makers introduced changes to close the gaping privacy hole.
Proof-of-concept code recently posted by Google security researcher Michal Zalewski works against the majority of people using the Internet Explorer, Chrome, and Firefox browsers. In an informal test carried out by The Register, the attack was able to list recently visited sites on computers running both Microsoft Windows and Apple OS X. It worked even though all three browser makers have patched their wares to stop them from divulging the addresses of sites visited over the past month or so.
“My proof of concept is fairly crude, and will fail for a minority of readers,” Zalewski wrote. “But in my testing, it offers reliable, high-performance, non-destructive cache inspection that blurs the boundary between :visited and all the 'less interesting' techniques.”
Previous exploits usually exploited a mechanism built into all browsers that causes recently visited websites to appear differently than non-visited sites. Attacks based on the CSS, or cascading style sheet, definitions weren't merely theoretical. Last year, academic researchers caught YouPorn.com and 45 other sites pilfering visitors' surfing habits by targeting the browser vulnerability, which first came to light more than a decade earlier
Zalewski said browser makers closed the hole by “severely crippling” CSS functions built around the :visited selectors. His proof-of-concept, according to comments accompanying the sourcecode (link may not work in all browsers), takes a different approach known as cache timing. It starts by loading an iframe tag containing a list of website into the page accessed by the visitor. It then calculates how quickly the websites are rendered. Those that load more quickly must be stored on the browser cache, an indication they have been visited recently.
Cache timing has long been identified as a way to extract browsing history, as noted in a well-known paper (PDF) penned by Princeton University computer scientist Ed Felten. Up to now, the problem with the approach has been that the attacks were slow and easy to detect, making them impractical.
Zalewski said his method was able to overcome these disadvantages by allowing browsers to abort the underlying request quickly. As a result, it's able to test about 50 websites per second with no visible signs that anything is amiss. With minor tweaks – including optimizations, parallelism, and possibly a delay calibration, the code could be capable of detecting “several hundred” URLs. ®