Firefox needs to rethink its password manager
Firefox is my browser of choice. Primarily because of the wide range of useful extensions available with make it very useful to me. In particular, Google Browser Sync and FireBug are extremely useful to me. Like many browsers, Firefox comes with a password manager. I don't know the details for other browsers, but Firefox's implementation is a security risk, a privacy risk, and unhelpful.
The Password Manager isn't handy
It's unhelpful, because it when you enter a new password, it prompt you whether you wish to save that set of credentials, giving you three options: Yes, No, and Never for this Site. I understand the first two options - you want confirmation before you store the credentials. The last option is odd though. I'm sure there are sites I never want to store credentials for, but usually, there are sites that I never want to store a particular username/password combo for. Why? Because it frequently occurs that I use another's browser (to show them this hip new web-page somebody gmailed me a link to), or vice-versa: that somebody else uses my firefox to log in temporarily.
Lately, we're seeing increased development and use web-apps, whose two prime benefits are ease of installation (namely none) and ease of access (namely anywhere). A browser would do well to make those two benefits really easy to achieve. In order to access one or more web-apps in a browser, you need to log in. That's obvious: you can't just have anyone using your private email after all. However, with ease of access being such a key benefit, it's ridiculous that using multiple accounts on one machine is so difficult. A guest should be able to securely use his email without logging out his host's email. By securely, I basically mean secure vs. XSS scripting. Clearly, if someone else is using your machine, you'll have to trust that person.
The problem with firefox's dialog is that it'll constantly appear for all guests that don't wish their credentials to be saved. Worse yet, if such a guest accidentally clicks on "Never" then even the host can no longer use the password manager. Since you're likely to have the same guests over and over again, this is annoying. You have two friends over, and they'll log you out (annoying) and stay logged in themselves (annoying) and potentially accidentally save their password (unwise, but I've seen this happen many times), or disable the password manager on that site (annoying).
The password manager tries to make logging in less of a hassle, but since most sites now allow long term cookies, it's really not that useful anymore, and it does bring up a distracting popup which takes thought to click away, lest you click on an option you don't want to.
The Password Manager is a privacy risk
The problem gets worse if you have a firefox profile shared between multiple machines: I use Google browser sync to do so, but there are other methods too. One of my co-web-dev's was busy discussing some bugs in the latest version and used his credentials to log on to the intranet app. Accidentally, he clicked to have his password saved, and now I just read his clear-text password on my home machine. Any guest using my machine could have looked at that password, at that should never have been possible.
Unfortunately, there are more risks like that. In a bugzilla report more reminiscent of a soap-opera than a bug report, A woman describes how she discovered dating sites in her fiancee's profile (because of an installation issue, these dating sites were also in her own profile, making the matter worse). She didn't find incriminating evidence in his bookmarks or history. Nor did she find saved passwords to any of these sites. What she did find, were sites which were set to "Never Save".
Firefox does not take the privacy of it's users seriously enough. An option which seems to be intended to avoid security or privacy issues should not leave that kind of trivially visible trace. Furthermore, firefox cannot be fully uninstalled (without manually deleting deleting hidden directories in your home directory). At the very least, firefox should be cognizant of the privacy issues surrounding these left-over profiles, especially as the application itself is so uncareful with the users secrets.
The Password Manager is a security risk
Unfortunately, the password manager doesn't just expose your private information to friends and family using your machine, it allows malicious internet content to steal your password too. A malicious page can read a password using the DOM once it's been entered - and the password manager enters your password for you. With a little creativity, phishers can create a login page to fool firefox into supplying the users credentials, and hide it from view while it's being harvested for that information. And that's exactly what happened recently, when MySpace accounts were compromised by phishers.
The Password Manager needs to go
As a result of all these issues, I've disabled the password manager, after clearing of it's content (and it's while clearing it that I discovered my coworker's password). In its current form, the tool is a security, privacy and usability issue that is in dire need of resolving.
What could Mozilla do to fix these issues?
- Firefox should store usernames and passwords not under the name of the website for which they work, but under a secure hash of that website's name. This means it's impossible to see for which websites you have a password stored.
- Firefox should not just use the website's name to identify a login field, but include a select bit of context of the login page to make phishing attempts more difficult. That bit of context could include some of the headers of the webserver, any certificate it is using, and some bits of html surrounding the submit form. It's better that the user need to log in again when a website is redesigned than that a phisher gets easy access to your private details.
- Firefox should not make passwords accessible via the DOM, and certainly not passwords which are auto-completed. This also means that if a script changes the target of the form, any auto-completed passwords need to be re-evaluated.
- Firefox should not store usernames and passwords in clear text, but encrypted with a key: that key should be derived from a different secure hash than that under which it is stored. In this way, an attacker can not determine a standard password which the user frequently uses easily. A master password should be also be an option.
- Firefox might consider a means of obscuring or removing sites from a users history if they have stored passwords for that site. This would make attacks more difficult, but the history (which I rarely see used anyway) less useful.
- Firefox should take a good look at user interaction with the password manager and rethink it's UI, its available choices, and the default settings to support real-world usage. A good starting point would be other browsers, and specifically opera, which I occasionally use and has an obviously better design. Firefox should also consider web-apps and the future goals of firefox as a platform, which might lead to changes about the way windows and tabs share cookies (i.e. sessions) so that multiple users can use firefox.
I'm not sure users can do much of anything beyond disabling the password manager (not a bad choice in my opinion) and being aware of the risks.
Webmasters can use the attribute autocomplete="off" on the form tag or the input tag to suppress the password manager for an entire form or just that field. However, users can force firefox to disregard the autocomplete="off" tag, and some do because of the perceived annoyance. This attribute isn't part of the HTML spec, but is supported by Mozilla- and IE-based browsers.
Firefox really needs to rethink it's password manager.




