|Click here for more of Dark Reading's Black Hat articles.|
In the research, presented at last week's Black Hat USA conference, security consultant Paul Stone of Context Information Security found two separate but related attacks using functions in the latest version of the Hypertext Markup Language, HTML5.
In the first, timing differences in the way visited and unvisited links are drawn by the three major browsers--Microsoft Internet Explorer, Mozilla Firefox and Google Chrome--allow an attacker to determine whether a link is in the user's browser history. The same timing technique can be used to determine whether certain pixels are black or white, allowing an attacker to read a small amount of text, such as usernames, website cookie data, and other sensitive information.
"The reasons these things exist are because the developers put [code] optimizations in there to speed up the browser," Stone says. "When you fix them, it is a tradeoff between speed and privacy and security."
In the first half of the research, Stone investigated variations in the time it takes to draw links to determine if the links are in the user's browser history. The browser makers fixed such history sniffing in 2011, after researchers found that 46 of the top 50,000 websites were using the technique to spy on users.
Stone found that a new HTML5 function could be used to perform some graphics-intensive work and then test for delays in the redrawing of links. The redrawing shows up as slower refresh rates in Firefox and IE, as the browser applies the graphic-intensive transforms when the link is set to the visited color. Chrome is also vulnerable, but a slightly different technique has to be used to test each link, Stone says.
"You are drawing the links in the screens, and you can slow things down by using text shadow, and it's slow to draw," Stone says. "And you would make them invisible by making them tiny or transparent, so the users would not be aware of the attack."
Using the timing attack, he could check a browser's history against 13- to 20 URLs per second for Firefox and Internet Explorer and up to 30 per second for Chrome. However, by consecutively chopping a list in half and testing each half, the technique could parse a a list of 1,000 websites in about 17 seconds, depending on the number of visited links in the list, he says.
The research impressed Robert Hansen, director of product management at White Hat Security and one of the researchers who discovered clickjacking.
"I was blown away," he says. "He brought back an attack that was theoretically supposed to be dead. Guys like Jeremiah [Grossman] and I researched this and found no obvious way around it. "
In the second half of the research, Stone discovered that Firefox's implementation of certain filters for scalable vector graphics (SVG) led to differences in rendering that could be exploited for a variety of attacks. Using a specific filter, Stone found differences between a function provided with a white pixel or a black pixel. The technique could be used to sniff a browser history by making visited links have a white background and unvisited links have a black background.
Yet, the technique could also be used to determine the content of blocks of text. If the attacker knows the font and the location of text on a page, they could load in a targeted page into an iFrame and read specific pixels. But reducing each letter in a specific font to the minimum group of pixels that are different, the knowledge of certain pixels could allow text to be read fairly quickly. Using the technique, Stone was able to sniff the username and contact information from a targeted user's Google+ account in about 15 seconds. Because Firefox allows a site's source code to be opened in an iFrame, other sensitive information could be stolen as well.
The research is creative, unique, and extremely well-presented, says David Aitel, chief technology officer of penetration-testing tool maker Immunity.
"The fact is, he can read your Gmail," Aitel says. "This is a universal vulnerability, it's hard to fix, and that's what we look for in good research."
While Firefox has created a fix for the first issue, timing attacks are a hard problem to solve. Major websites have adopted the XFrameOptions tag--a sign to browsers to not load the site into an iframe--which should prevent the latter attack from working, but it's a workaround at best, says Aitel.
"This is not the sort of issues a user can mitigate," he says. "It is an issue that manufacturers and standards authors need to mitigate."
Have a comment on this story? Please click "Add Your Comment" below. If you'd like to contact Dark Reading's editors directly, send us a message.