Microsoft fortifies IE8 against new XSS exploits
Catching attacks without breaking the web
Engineers in Microsoft's Internet Explorer group continue to refine a new security feature designed to block malicious scripts that can be injected into trusted websites to steal email and account credentials. Judging from the magnitude of the problem, their task may never be completed.
Among the multitude of revisions introduced in last week's release of Internet Explorer 8 were tweaks intended to make the browser's cross-site scripting (XSS) filter better withstand tricks for concealing malicious characters in web addresses. Some of the world's foremost web application security experts helped, an indication of the difficulty of containing the threat.
One fix enables input to be treated as a stream of individual bytes rather than characters, a change that prevents attackers from evading the filter using Chinese characters in web addresses. Because of the way certain characters, including "<" are rendered in Chinese, bad guys were able to sneak them into malicious URLs that weren't detected by versions of the Microsoft beta browser.
A similar technique that uses a PHP function known as "stripslashes," which removes backslashes from strings, had also been used to bypass the IE XSS filter. The protection now generates additional signatures that offer alternate interpretations of the input.
Other fixes involve scenarios that use extremely long UTF-8 sequences or injections of FORM and ISINDEX elements. Nulls in HTTP responses and Object tags using the CODETYPE attribute have also received attention.
Over the past few years, XSS vulnerabilities have emerged as an Achilles Heel for some of the biggest and most sensitive websites. In December, researchers found several XSS flaws on the site of American Express that potentially could have allowed attackers to steal users' authentication cookies. Other sites that have been bitten by the bugs include Google Mail, Yahoo, MySpace, and Facebook.
XSS attacks allow attackers to inject hostile code into a targeted domain by taking advantage of a common practice among web developers who allow one website to link to images and scripts hosted from a second site. When Microsoft's XSS filter encounters code that's hosted on a different site, a heuristics engine inspects the URL and POST data and uses regular expressions to identify possible XSS vulnerabilities.
This is an extremely tall order for any browser. The ability of one site to link to code hosted on another site is a key architectural design at the heart of today's website, so filtering carries the risk of breaking many websites if not executed carefully. And the list of techniques for evading such filters is long and only getting longer.
Several top-flight researchers helped Microsoft pinpoint the weaknesses. They include Yosuke Hasegawa, 80sec, Ronald van den Heetkamp, Amit Klein, and Gareth Heyes.
Microsoft's goal seems to be to protect users against the most dangerous XSS threats without degrading the performance of legitimate websites. Contrast that with the NoScript extension for the competing Firefox browser, which does a great job of blocking many XSS attacks but also has the potential to confuse many less-sophisticated users.
The constantly expanding number of ways for bad guys to evade the Microsoft filter means its design is likely to remain an iterative, ongoing process with plenty of additional tweaks to come. ®