Archive for February 7th, 2009

As you probably know, plugins are external software components which the web browser delegates to render custom content inside web pages, and/or to play audio clips and potentially much more: they actually can do anything, since they're executable code running inside the browser process, with the same privileges as their host. This can cause major security concerns, no doubt about that. They've accumulated lots of security issues of their own over the time, and the scriptable ones (like Flash or Java) are often used in combination with JavaScript to prepare memory for attacks working around protection features deployed by modern OSes. That's why one of the major features of NoScript is blocking plugin content from untrusted web sites, and optionally from trusted too, in an easy "click to activate" fashion: this way you can considerably reduce your attack surface, while retaining the power of accessing plugin content on sites where you really need to.

Add-ons, in mozillaspeak, are a broader category, including plugins of course, but also themes (packages which can change your browser appearance, also called "skins" in other communities) and extensions. NoScript itself is an add-on, or more precisely an extension. Extensions are tiny applications developed with the same technologies which Firefox is made of (i.e. XUL, JavaScript, XPCOM and, possibly but rarely, C++) which upon installation get tightly integrated in the browser, extending (and hopefully enhancing) its functionality. They can access and modify practically any aspect of the browser, and are granted the same privileges as the browser. With great power comes great responsibility, and add-ons are obviously not immune of bugs which can compromise browser security.

There are some differences, though, between extensions and plugins in regard of security:

  1. Extensions which are found to be unsafe can be promptly disabled worldwide by Mozilla admins using a remote centralized mechanism. This is true for plugins too, but I'm very dubious that Mozilla would abruptly kill Flash (or even worse, Java) on all its users in reaction to a zero-day vulnerability disclosure...
  2. Extensions enjoy a safe and very effective update mechanism, which allow security updates to be deployed almost instantly. The same can't be said for most, if not all, the most popular plugins.
  3. The vast majority of Firefox extensions are open sourced. Those hosted on AMO, which is the only place where you can to safely install add-ons from* where Firefox sends you to safely install add-ons, must allow per-policy code reviews, therefore even in those rare cases where native executable code is included, this must comes with its sources, no matter the license. This allows manual screening against malicious extensions (all the hosted add-ons are also automatically scanned by anti-virus software anyway), or more focused security code reviews like the one Wladimir Palant performed recently.

Wladimir is also engaged in a laudable effort for educating extension developers to safer coding practices: whoever maintains or wants to develop a Firefox extension should subscribe his feed.

Coming to "Security Advisers", Roger A. Grimes (a CPA, a CISSP, a CEH, a CHFI, a TICSA, and an MCSE: Security, which in plain English means more or less "security consultant with a strong Microsoft background") recently wrote a serie of articles comparing security features of all the major browsers.

The one about Firefox contained, among others, a quite disturbing (for me at least) paragraph (emphasis is mine):

Although add-ons such as NoScript, and plug-ins such as Adobe Flash, bring many useful capabilities to Firefox, at the same time they come with problems and security issues of their own. Firefox has a built-in add-on manager that allows you to browse available extensions, install and uninstall them, and enable and disable them, but again, they can't be enabled or disabled with per-site granularity.

So I decided to send Roger an email, sparking a pretty intense exchange (in the meanwhile, I was implementing PoC X-Frame-Options compatibility for Firefox with my left hand).

Yesterday I noticed he published a synthesis of our discussion. Even though he cut some logic passages, making our reasoning a bit hard to follow, I have been positively impressed by his openness and I'd like to rectify just two little things:

  1. Roger introduces his report of our thread with these words:

    I indicated that browser add-ons (or plug-ins) could bring additional risk to a browser. One browser add-on provider, Giorgio Maone of Firefox's NoScript, wrote me to strongly disagree.

    As this very post of mine demonstrates, I couldn't and didn't disagree on the concept "that browser add-ons could bring additional risk to a browser". But I was rather surprised (and, honestly, pissed off) about his suggestive exemplification choices.

  2. In an original message of mine, I tried to explain my objection this way:

    You would never dare to say "Mail servers and Web servers, such as qmail and IIS, which come with problems and security issues of their own..."

    I choose qmail for my example because of its almost immaculate security records: should you pick a single product to illustrate mail server security risks, you'd bash Sendmail with its several documented vulnerabilities, rather than DJB's impervious creature. However the article inexplicably morphed "qmail" into GMail, making my point quite obscure (given that GMail is not even a proper mail server, nor exactly a security champion).

That said, I appreciate Roger's transparency and I hope we'll have chances for new constructive discussions.

* Note: JJ Barton correctly made me notice that sites different than AMO can adopt the same hosting security policies (automatic update over a SSL channel, which by the way is required by the Mozilla browser toolkit itself, and possibly blacklisting of unsafe versions), e.g. GetFirebug.com for the Firebug extension. However AMO is the place where you're automatically directed by Firefox itself when you look for an add-on, so stressing its security features was very important.

Bad Behavior has blocked 787 access attempts in the last 7 days.