A Security Bug In Mozilla - The Human Perspective
xslf writes "Alex Vincent, the reporter of the data-loss security bug 259708, writes about the behind the scene process of reporting it, casting light on the problems of dealing with security related bugs reported by the community, which isn't always aware of the security implications of the bugs reported. The issues with the FLOSS process shown in this bug might get worse, once more and more people use FLOSS and add to the process, without being full fledged coders, and rely on binary releases of software." (Note, you'll have to copy and paste that link to view the bug report, or click through from the linked story.)
See that text at the top of the page? Now look at the last part of it. See the text that reads "(Note, you'll have to copy and paste that link to view the bug report, or click through from the linked story.)"? Now why do you think that a post about how you cant use the link would be redundant?
"Have you ever thought about just turning off the TV, sitting down with your kids, and hitting them?"
But I thought the very nature of OSS makes this sort of thing impossible. What did I miss?
There's a Mercedes gap too. I want one and can't afford one, but it's not government's job to do anything about it.
Um, that seemed to be the whole point. Again and again throughout the article he does a mea culpa. At the same time, I believe his general frustration with not knowing how to proceed comes through. We in FOSS need a more concrete process on how to handle bug through the system. And even very successful projects, like Mozilla/FireFox, can do a better job at communicating the way to handle these types of situations.
Gotta find my destiny, before it gets too late --Ian Curtis
http://www.shadowpublications.com/blog
timothy, IT's prodigal douchebag, is kind enough to tell all the slashbots to copy and paste the link to get past the referrer problem.
The editors here truly don't care, even when someone goes out of the way to make it clear they don't appreciate the rubbernecker bandwidth.
I don't need no instructions to know how to rock!!!!
Wait a sec, you're bitching that they won't pay you to work for them, when you don't pay them for thier product?
Holy hypocrisy...
feh. stuff.
Fantastic. Talk about having your cake and eating it while telling everyone they can't have any.
If you offered to pay them to fix the bug, it would probably be a shade more consistent with your "I don't work for free" stance. Or is it just other people who should work for free?
On the other hand, open-source software backed by a stable company does not face the same problem. Consider Linux. If the open-source community did not address the security flaw expeditiously, then you can be sure that IBM will step into the picture and fix the problem promptly. IBM will never fail its customers. Hence, Linux exploded in popularity among commercial companies after IBM committed $1 billion to Linux.
What the heck is FLOSS ?
There was a 2002 paper published by the Mitre Corporation that used the term "FOSS", meaning "free and open-source software". As far as I know, this was the first use of the term, but it may go back a bit farther than this.
I don't, however, have any idea what "FLOSS" is supposed to mean. Assuming that it isn't related to dental hygiene, what is it supposed to stand for ? "Free {Linux, liberty, low-cost} open-source software" ? Just a nonsense corruption of "FOSS" ?
The closest explanation I can find is this blog entry by David Wheeler: "Free-Libre / Open Source Software". Is this really what people are trying to say ?
DO NOT LEAVE IT IS NOT REAL
is not very positive. If you ever dare to ask if any progress has been made, or for an ETA on a fix, you're bound to get a "well why don't you fix it yourself" indignant reply.
If progress is made, you'll see patches added to the bug, or comments from developers discussing the fix. Parents get annoyed by incessant kids in the car asking "are we there yet?", and developers get annoyed by incessant users asking "is this fixed yet?". In both examples, the question's answer is obvious.
Spamming a bug with comments like "why isn't this fixed?", "this bug still annoys me", "don't wontfix this bug" and "this bug is really old and annoying, you guys suck and don't care" doesn't help fix the bug - I can't speak for other developers, but getting many useless emails about a bug only makes me more likely to remove myself from the CC list and forget about it. Having to read through 150+ "why isn't this fixed" comments to find relevant information doesn't help anything either. If someone takes the time to figure out where a fix for a bug needs to go, or contributes something, it's different.
I would be more than willing to contribute code under contract for this project. Unfortunately, my services do not come free.
Mozilla is free. Many of the people who fix bugs (for example, me - you'll have to copy and paste that URL) aren't paid. Whining about volunteers not fixing a bug you care about doesn't do anything. Insulting them is even less productive. If you don't have anything constructive to say, don't bother people.
My server
I would be more than willing to contribute code under contract for this project. Unfortunately, my services do not come free.
I know this that was probably just an indignant reply, but I think you escalated it too much.
Out of curiousity, why should one expect to be paid to contribute to a product they themselves get for free? Free software generally doesn't allow the users to control the priority of bug fixes, and it's not as if they have a big enough budget such that they can pay people to fix the bugs they themselves complain about.
If you want a specific timeline for a particular project, rather than letting the (unpaid) developers perform their own opinion of how a bug triage should prioritize bugs, I suspect that you'd have to contribute.
"you're bitching that they won't pay you to work for them, when you don't pay them for their product?"
And complaining about how slow they are to fix their free product.
I knew a guy who participated in a church program to distribute donated furniture to the needy. They showed up at one house and the lady told them to take the couch back since it didn't match her drapes. For some reason, he stopped participating.
FOSS means that you don't have to wait for someone to change program behavior if you do not want to do so; however, it also means that you don't have any leverage if you want them to change the behavior for you -- they will always be happy to refund your $0.
That Mozilla has a _huge_ number of bugs, many of which have existed for a number of years, a lot of which probably won't be fixed any time soon. Those working on the project don't generally care about them enough to fix them -- this is, after all, "only" a denial of service bug (note: I'm not condoning or excusing this behaviour, just saying that this is how a lot of people think).
Hmmm. That's a rather difficult conclusion to reach if you really read the article and think about it. Alex accepted the blame where he messed up, and noted other places he wasn't sure about.
The fact is,the other person should not have reposted someone else's blog entry without permisison.
The article was quite insightful. Hopefully it will lead to a better process.
This guy made the #1 mistake you can make when it comes to bug advocacy. He assumed his bug was more important than all the others. It had to be fixed now! Now! Now! Now!
Which can be entirely correct, but you don't get anywhere by running around like chicken little trying to make everybody look at your bug. They heard you the first time. If you don't have any new substantive information to give them, sit back and relax. People never respond to selfish requests well. It can even discourage them from taking a look at it.
As he tried to convey in the article, the issue is not whether he can be faulted or not (and indeed, he can; then again, you can expect that many/most bug submitters would make "mistakes" like these).
The quote, however, deals with someone who submitted for his weblog a word-for-word copy of his original bug report, without any comments, return address, or source. That goes a bit beyond useless and unhelpful, IMHO; that borders on disrespectful. At the very least, as he is saying, if that person indeed wanted full disclosure, he should point to where he found the copy of the text, so that the Mozilla security team could be made aware of it.
Overall a well written article, certainly a lot more thoughtful than your comment.
-tor
>Whining about volunteers not fixing a bug you care about doesn't do anything.
Welcome to the real world. This is why companies have sales people/help desks/managers. The OSS model does away with it, and so now you see why they are needed.
>Insulting them is even less productive. If you don't have anything constructive to say, don't bother people.
Sort of like putting up your code for everyone to see and reviewing it (isn't this one of the strenghts of OSS?), people will look at your application. And they will critize on it. Don't want to hear what they have to say, don't listen.
The surprise isn't how often we make bad choices; the surprise is how seldom they defeat us.
Unless, of course, it is combined with a different bug that allows you to drop files on someone else's computer.
Heck, for that matter, (I am not a programmer or security expert) is it possible to write code (in Java, Python, anything) in plain text, and then drop it (as a cookie or as a linked page of some sort) onto the Hardrive of the other person - then run it using that exploit? I'd call that a critical issue. Heck, I'd call that a showstopper, and would push everyone I know - whom I have spent the last several months trying to switch to Firefox - to switch to another browser (possibly even IE w/ XP SP2)
This bug was a security bug in part because Firefox 1.0 changed the default download directory so that downloadable files were saved directly to the desktop.
Microsoft is always criticized for having bad defaults. In this case, having the default download directory be the desktop was a bad default. I would argue that you wouldn't neccessarily do bad to create a folder for each downloadable file. No one would be annoyed by that, and it would provide protection in the file system for any future holes.
You could also have a "recently downloaded files" directory on the desktop. Even a shortcut to "Location of downloaded files". Mozilla has been known for its innovation. Using the desktop is not innovative--the desktop should never be a permenant storage location. Everything Microsoft puts there is a shortcut.
I also question whether it was wise to change or set defaults in a "1.0" milestone release.
First off, if someone reports a bug, it should be ASSUMED that there is a potential security issue there, until proven otherwise. Why? Because there are generally side-effects. Even if the bug doesn't directly do anything nasty, it may very well cause something unintended which, in turn, causes something else unintended, and so on. Programmers generally talk of such effects "cascading" or "snowballing", because the effects usually do build up over time. Sooner or later, this will result in a corruption of data, a program crash or an exploit due to insufficient value checking.
There are two classes of bugs in a computer program. Those that cause the program to crash, and those that don't. The second type are much harder to track down (because you've no real indication of where the problem started), but they are generally much worse and much more prevelent.
The "correct" way to handle bugs is to assume that (almost) any problem puts the software at risk of a non-fatal bug that could (eventually) destabilize the program or open an exploit. Spelling errors in text messages are probably OK, but even there, if you're placing them in fixed-length buffers, it is saner to check and be sure that the risks are low than to ignore apparently trivial "appearance" stuff that could be catastrophic. I've seen programmers give themselves buffer overflows, I've even seen programmers rely on certain OS quirks when an overflow occurs. The code may not be portable, and it sure as hell isn't safe, but it does work.
(I've actually seen some code that won't run, unless the debug flag is present. The code will actually segfault if the extra padding the debug data creates is not there. Not from the Mozilla team, this was in a prior place of employment, but it does demonstrate that coding is not just about making something "work" it's about making it work for the right reasons.)
Now, the Mozilla team is probably simply too small to regard every bug entered in their database as a potentially critical show-stopping security hazard. This, however, reflects more on the userbase than on the Mozilla folks. Open Source works if, and only if, the "lots of eyes" out there looking for problems also translate into "lots of hands" for fixing problems.
Sure, not everybody is going to be a coder. So? If a mere 1 in every 100 users took the time to chase down not only the bug as seen, but at least some of the prior bugs that that bug depended upon to do anything at all... Mozilla would be in a lot better shape.
Politics in projects don't help. GCC and Glibc suffer badly from a management style that can be diplomatically summed up as "Old-Style IBM without the money - or the justification". There's a lot of "Not Invented Here", "Somebody Else's Problem" and "It Works For Us", although the GCC team is apparently a lot better than it used to be.
The moment any project suffers from any of those three things is the moment that it is under a self-imposed sentance of death, to be carried out the moment a better alternative arrives, where the only possible hope of a reprieve is to tackle those attitudes and eliminate them.
9 out of every 10 security bugs are caused by a fault in attitues, at the time of coding or later, and not by any fundamental nature of computing.
BTW, this is off-topic, but biologists and geneticists are mourning the passing of one of the three scientists who discovered the structure of DNA. The BBC is reporting the death of Professor Maurice Wilkins, aged 87. He died in hospital, no cause was given.
It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
I agree with everything you said, but remember this.
Any Mozilla/Firebird vulnerability will not ruin my system. It will not cause me to reformat and re-install linux. It will not cause suspect programs to be installed on my computer without my knowledge. I might lose my $HOME, but not the use of my computer or applications.
Think about how IE is different in this manner.
Enjoy,
It's just the normal noises in here.
"not ... a remote-data-access."
According to comment 58 in the bug report: "Given that this vulnerability actually allows sites to do useful things like steal passwords, I feel that we should address it ASAP."
This bug allows the browser to open and access a local file. The information about the file can then be sent to a remote site with some basic javascript. How is it not a remote data access again? The DoS issue is not good, but the file opening is worse, particularly if someone figures out a way to get the contents of the file rather than just the characteristics.
I'm flabbergasted that the mozilla security people seem to think that "hiding" a previously public bug after it's noticed that it has security ramifications is an effective way to keep black hats from noticing it.
I think it's safe to assume that black hats interested in finding 0-day security holes in mozilla have already, or soon will create a mirror of the bugzilla archive, with history. Then they can look for bugs that are suddenly removed from the public bugzilla archive, and have some very good candidates for fresh security holes.
And there's no way the mozilla security people can effectively combat this. At best they get into a technology arms race with the black hats, trying to figure out what techniques they're using to spider and mirror the archive.
Once a bug is posted to a public bug tracking system, even if it's only been there for an hour, you might as well give up and assume it's widely publically known.
Oh and in my personal experience, the best way to get a security bug fixed once you discover it is to immediatly write an exploit, clearly flag the bug as a security hole, and post it to a public forum with a sifficuently broad readership that someone in a position to fix the bug will, be that the project's BTS or bugtraq.
see shy jo
"I might lose my $HOME"
Please tell me why losing all the documents/files/data you personally created is better then reinstalling an OS/apps, which are available on CDs and the net?
Hopefully, you have a good back-up plan, but my personal files are 100x more important then any 3rd party binaries.
IMO - both situations are equally terrible.
It is not different. If more people stopped running under an administrator account the great majority of IE vulnerabilities would result in the same thing. Most email worms would as well.
You can happily run under a non-privileged account in Windows NT4 and higher. The opearating system has supported it for at least eight years. That most applications break under such a scenario is Microsoft's fault to a certain extent, but not entirely so. Software vendors are just too lazy to code that way and they assume that they have the go of the entire machine.
I would like to point another type of hypocrisy however - whenever there's a bug in a Microsoft product that is not "critical" in the sense you use, the slashbots come out of the woodwork claiming it's the end of the world yet again. But a bug in Mozilla that wipes out ~/ is OK, because it's "not critical". Do you really think it's "OK" for the average user to see their files wiped while /sbin is untouched? Tell you what: they would not. They'd rather have to wipe the machine and see it turned into a spam zombie than lose the vacation pics and whatever else they have under there.
The problem with your assesment of this problem is that you say "user" and you're thinking about a developer or a sysadmin (in a corporate environment perhaps) with nightly backups and whatnot. In that scenario this bug is a nuisance. In reality it's a disaster.
Anyone who is claiming that FLOSS is the perfect software development model is either trying to sell you something or simply mistaken. One of the weaknesses is simply everything is subject to interptation.
The people who find the bugs are often do not agree with the people fixing/writing the application. If you are using one of the "for profit" models, its easier to prioritorize bugs: you target the ones that are the most expensive first. With FLOSS it is the one that is most anoying. A bug might be the most anoying bug in the world but if the core team is not going to hit it they aren't inclined to fix it.
What is implied in the FLOSS development model is that the reporter is savy enough to jump into the code and either fix it themselves or give enough inside help to someone who can to cut down the fix time. When this does not happen you have problems.
In short, OSS is IMHO a better model for colaborative project development. However no one should ever believe it it is perfect. Everyone must remember that neither colaboration nor agreement are guarenteed with FLOSS.
One point you seem to have missed is that people pay Microsoft for their software and therefore have a right to expect Microsoft to correct security vulnerabilities in a timely manner. As we are not paying for Mozilla we really have no right to make demands. We do have the right to fix the bugs ourselves or pay someone else to fix them, of course.
Yes, ideally all bugs are fixed even more rapidly. But originally this wasn't marked as a security bug, and nonsecurity bugs often take more time to fix than you'd wish in any development process:
What changed everything was marking it as a security requirement. Here I agree with the author - the author should have identified this as a security problem in the first place. And I'm really sympathetic to his sitatuation; we all make mistakes, and at least he reported the bug in the first place. Thankfully, a later reader DID realize this, and raised it to a security issue. As a security issue, suddenly the "unlikely" problem becomes "near certainty" since an attacker WANTS to cause trouble, and will work to cause the unlikely to happen.
And once it was labelled as a security problem - look at the speedy response! It was fixed in less than a half hour - that's extraordinarily fast in any software development process, OSS/FS or proprietary. It's even more amazing because the problem was in a completely different place than 3 previous developers had thought... so this was clearly not an easy bug to find and fix (at least for most project developers).
And Firefox is still at the "previous release" level, it's not even officially released! I routinely use Mozilla and Netscape, not Firefox, because Firefox THEMSELVES state that the product's not ready. When they say it's ready, I'll let other people try it out first; version 1.0s are often a little wet behind the ears (remember Windows 1.0? Probably not, and there's a reason for that). But once Firefox 1.0 is out for a little while, I'll probably switch to it; it looks really nice. Obviously a lot of people
Getting ansy about taking a little extra time to find a non-security bug, when the product can't be released til it's fixed anyway, and it's hard to fix, seems a little excessive.
The process issues he raises are interesting issues, and they're certainly worth addressing. E.G., how do you "make secret" that which is already public? But I'm sure there are many possible answers; discuss, pick one, and move on.
- David A. Wheeler (see my Secure Programming HOWTO)
How quickly does this descend into The Two-Step Plan for Denying All Problems With Open Source While Also Ignoring Them Because They Hurt
Step 1: "Microsoft is worse" ... ...
Step 2: "Fuck off"
No profit here, of course.
Enjoy,
But it's OK for some dude to publish an IE vuln without first contacting Microsoft and giving them a chance to fix it
Maybe I'm in the minority here, but it's NOT ok for that to happen either. And if I'm not mistaken, the Bugtraq mailing list has very clear guidelines for handling disclosure of any bugs found in any programs. I believe one of those guidelines is that if you're having ongoing discussion with the vendor about a bug, there's no need to report it to Bugtraq. If, however, the vendor is ignoring you or has ignored you for months, post away. Sometimes posting in a public forum is the only way to get a vendors attention.
It's certainly not all right for someone to publish a vulnerability without contacting MS; any responsible FOSS developer will agree. However, once a security vulnerability is in the wild, it's in the wild, and pretending it doesn't exist will not help matters any.
The big beef most FOSS developers have with MS lies in the fact that the current rendering engine for MSIE, Trident, is obsolete, MS acknowledges it as such, and yet still refuses to overhaul it. I quote from Wikipedia (emphasis mine):
Now, this is a problem because many Windows users use versions of Windows which are obsolete: 98SE, ME, 2000. When Longhorn comes, this trend will of course hold true: people don't rush to the stores to buy the newest Operating System version. This means that people will be using still old versions of MSIE long after IE7 comes, which will, of course, be unsupported by MS because they don't want to trail support for 5 or 10 different versions of a single product.
Finally, tying the web browser to the OS version ensures that a product that is upgraded for free today won't be in the future: remember, you may get the "newest" version of MSIE for free, but you must pay $50 or $60 (if memory still serves) for a new version of Windows, not counting the hardware upgrades which prove necessary. Most people will think that the old version works "well enough" and blissfully go on surfing the Web. Remember, security vulnerabilities are such because they're not obvious.
In conclusion, FOSS developers do not criticize MS for keeping quiet about security vulnerabilities which do not yet have a fix; they criticize it for denying the need for a complete overhaul of their application even faced with massive evidence that their rendering engine has given what it had to give; instead, they concoct a scheme to force users to upgrade (spending money they might not have) in order to keep their data safe.
So.. please help me understand how this reflects so poorly on the Mozilla developers? Also, how does the way this was handled put them in the same crowd as MS? Especially after MS is caught sitting on serious security flaws for six months or more then sneaking the patches into a service pack without ever telling anyone the flaw existed?
That's what you missed, listening to anyone with any level of maturity and experience in the OSS community . Red Hat doesn't say that can NEVER happen with OSS. Linus doesn't say its IMPOSSIBLE for OSS software to ever have bugs or security issues that aren't found and fixed. The Debian developers don't claim they have fixed every single potential bug in every single package they put out.
One of the most annoying things users do is pick one single instance and say "HA!!!, this proves OSS is whatever". Newsflash, one OSS project doesn't=every OSS project. There is well written and secured OSS code out there and there is shoddy insecure OSS code out there. Nobody ever claimed that OSS is a panacea for all security issues.
Nice straw man though. Insightful my ass.
If you wanna get rich, you know that payback is a bitch
Any response or lack thereof from a company gives a clear indication of what they think of their customers
It could also be an indication of the huge number of bug reports Mozilla gets a day compared to the number of volunteers who triage and fix bugs.
Btw, what was the bug number of the bug you reported?
In business, if a virus sweeps your network and deletes 10-15 peoples home directories, no sweat. You tell them to keep working, and one at a time restore their files from the backup you did of those directories yesterday. (Any non-braindead company I would hope would be doing daily backups of user data). But if the virus takes out the *OS*, thats a whole other ball of wax. The sysadmin, who is a limited resource, has ot go around to N machines and re-install/re-image them. And for the hours this takes him, all the people involved cannot do any work. So you're basically throwing thousands of dollars of salary per hour down the toilet.