Engineers in Microsoft's Internet Explorer group are devising a new means to stamp out one of the web's biggest security banes: attacks that steal email, bank account credentials and other sensitive information by injecting malicious code into trusted websites.
Some of the web's biggest names - including Google, Yahoo and MySpace - have fallen victim to so-called cross-site scripting (XSS) attacks. Tens of thousands of other sites, some belonging to banks and health care providers, have also been been shown to be vulnerable. For the past few years, Firefox users have had the useful - but by no means perfect - NoScript plugin to insulate them, but currently no such protection exists for IE, which remains far and away the most popular browser.
That all will change with IE 8. Last month, Microsoft announced a new XSS filter that will be folded into the new browser. Microsoft earlier this week provided new details about its plans.
Specifically, engineers will take pains to ensure the XSS filter doesn't "break the web" by choking on false positives or slowing down the browsing experience. Cryptic error messages or dialog boxes are out. And so are overly aggressive filters that block legitimate sites or open users up to new types of attacks.
"It is challenging to mitigate XSS in a way that balances the needs of compatibility, security, and performance," David Ross, a Microsoft Security Vulnerability Research & Defense blogger writes.
To prevent performance bottlenecks, the filter only acts on web pages that can result in the execution of scripts, so objects such as images that don't include scripts are ignored. The filter also gives a green light to code that's found to originate from the site the user is visiting. The filter can also be disabled for specific zones, based on an administrator's preferences.
When the filter encounters a script that is hosted on a site other than the one being visited, a heuristics engine is started that inspects the URL and POST data of the requested page and uses regular expressions to identify possible XSS vulnerabilities. The filter scours the URL for suspicious characters such as script tags. When suspicious characters are found, the filter kicks into action by inspecting the HTTP code and generating a signature.
Signatures are then compared against the HTTP response and scripts found to be malicious are neutered. Instead of running the code, IE displays a message that says the page has been modified to prevent an XSS attack.
"If you deploy a security feature already knowing how to work-around it, I think it's more security theater than anything else," he told The Reg in an email.
Maybe. But the filter does have its proponents, among them Dave Aitel, CTO of Immunity Security. Because IE compares a web request to the page that's returned, the filter ought to be able to make informed decisions about whether an attack is taking place.
"That's more aggressive than anyone else is being other than Firefox," he says.
Microsoft's blog post is here. ®