Hey, Mozilla: Quotes Are Not Legal in a URL

When I was a child, I learned a saying that I still find important to keep in mind:

Those who are sitting in a glass house shall not throw stones

The good folks at Mozilla may want to look up what that really means. Two days ago, Mozilla published Firefox version 2.0.0.5 to fix a security vulnerability resulting from an interaction between Firefox and Internet Explorer (IE). Put briefly, if a user that has Firefox installed uses Internet Explorer to browse to a malicious site that malicious site can cause IE to spawn Firefox on the user's computer. Firefox, in turn, fails to validate the input it receives from IE, and will run arbitrary code of the bad guy's choosing on the user's computer. This is especially valuable to criminals on Windows Vista since IE runs in protected mode on Vista by default, providing a layer of protection from malicious web code. Firefox does not have any such protection and executes with the full privileges of the locally logged on user.

In conjunction with the fix, Mozilla's Chief Security Something-or-Other, Window Snyder, wrote a blog post where she states that "This patch for Firefox prevents Firefox from accepting bad data from Internet Explorer. It does not fix the critical vulnerability in Internet Explorer. Microsoft needs to patch Internet Explorer..." [emphasis in the original]. The IE team, meanwhile, has stated that they do not intend to fix what they see as Mozilla's problem.

Well Window, those who sit in a glass house should not be throwing stones. Let's take a look at the issue, shall we?

Window's claim that this is a critical vulnerability rests on RFC 3986, which defines the standard Uniform Resource Identifier (URI) syntax. Section 2 of that RFC states that a URI consists of a limited set of characters; basically numbers, letters, and a few non-alphanumerics. It goes on to state that other characters are encoded using percent encoding. Specifically: "the only time when octets within a URI are percent-encoded is during the process of producing the URI from its component parts" (RFC 3986, section 2.4). The people who argue that Microsoft is at fault in passing the URI on to Firefox apparently take that statement to mean that IE should be encode the URI before passing it on to the protocol handler. Personally, I fail to see how taking a link on a page and passing it on to the handler that deals with that link constitutes "producing the URI from its component parts" but I could be missing something. I think the statement about percent encoding applies to the bad guy that constructed the URI in the first place, and the application that ultimately executes it. Therein lies the rationale behind my claim that the flaw is in the protocol handler, i.e. Firefox in this case.

However, let's assume that we take Mozilla's claims at face value; that IE really is at fault here. Window goes on to claim that this is a serious issue also affecting other applications. In fact, she points to a different article that demonstrates how to execute arbitrary code in Trillian using this "IE flaw". Thor Larholm adds a list of other protocol handlers, which can be passed arbitrary command line arguments, although this is merely a list of some protocol handlers, not a list of vulnerable ones. Window finishes her post with the usual line: "Mozilla recommends using Firefox to browse the web to prevent attackers from taking advantage of this vulnerability in Internet Explorer."

That would be sage advice, if:

  1. This were actually a vulnerability in IE, and not a failure of Firefox and Trillian to validate input, and
  2. If Mozilla were any safer

Just for fun, I decided to conduct a little test of that second hypothesis. I used the very simple protocol handler I wrote for the previous blog post:

#include <stdio.h> 
int main(int argc, char* argv[])
{
    // The URL is in argv
  
    printf("\nThere are %d arguments in the URL\n", argc);
    for(int i=0;i<argc;i++)  
   
{      
       
printf("\nArgument %d:\t%s",i,argv[ i ]);
    
}   
   
printf("\n");  
   
char c;
  
   
c = getc(stdin);
}

This program lets us inspect what the browser that calls the protocol handler actually passes on to that protocol handler. In other words, it lets us see exactly what Firefox and Trillian see when they are invoked using their respective protocols from a browser. The URL that is passed by the browser to the handler is passed as a command line argument (this is the argv parameter, in case your C is a bit rusty). The program simply enumerates all the command line arguments and prints them. To do that it needs to be registered, which we do with a reg script, like this:

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\TestURL]
@=URL:Test Protocol
"URL Protocol"=""
[HKEY_CLASSES_ROOT\TestURL\DefaultIcon]
@="cmd.exe"
[HKEY_CLASSES_ROOT\TestURL\shell]
[HKEY_CLASSES_ROOT\TestURL\shell\open]
[HKEY_CLASSES_ROOT\TestURL\shell\open\command]
@="\"c:\\test.exe\" \"%1\""

We now have a program that handles the TestURL protocol, invoked by calling testurl://<location>. To test it, I downloaded Thor Larholm's sample exploit, and changed it to call the TestURL protocol instead. The original script said:

<iframe src='firefoxurl://larholm.com"...

And my modified version said:

<iframe src='testurl://larholm.com"...

To test it, I opened the sample exploit using IE on a fully patched Windows Vista computer. IE, on Vista, will prompt you whether you want to open the external program or not, as shown in this picture:

 

If you click allow, you get this output:

It all seems to work. I get four command line arguments (three of which are part of the URL), which is what we would expect if the calling application, IE, or more specifically, urlmon.dll, does not escape the quotes in the URL. This is the crux of Mozilla's and Thor's claims. They want IE to escape the quotes so the URL is passed as a single command line argument.

Now, what do you suppose happens when you run the sample exploit using Firefox? First, you will get a big scary warning:

Cool. Firefox shows the user the entire URL. I wonder if that helps people in general make security decisions? Note also that the quotes are not escaped. Clearly, that must come later. To see, click "Launch Application" and you will get this output:

Can you spot the glass house too? To paraphrase Window: "This patch for Firefox ... does not fix the critical vulnerability in Firefox."

That's correct. Following Mozilla's, and Thor Larholm's logic, Firefox is subject to the exact same flaw that they blame on IE! Firefox also does not escape quotes in URLs before it passes them on to protocol handlers. I won't speculate here on why they failed to fix that "flaw" in the new version of Firefox that was just released.

Now, ordinarily I would not release details of an exploit without notifying the vendor first and giving them a reasonable chance to fix it. However, as I have claimed all along that the flaw is that the protocol handler fails to validate its inputs, I do not consider this particular issue to be a flaw in Firefox at all. Therefore, I do not believe I am engaging in irresponsible disclosure by letting people know that Firefox also does not protect users of Trillian from flaws in Trillian. I would never do such a thing, and I am sure Window will agree with me.

Update July 23, 2007
Replaced text output with screenshots because the exploit script did not render properly as some of it was blocked by the security filters on the blog. Also added a picture of the IE warning upon launching an external protocol handler outside of protected mode.

Published 20 July 2007 10:25 PM by jesper

Comments

# Paperino said on 21 July, 2007 09:00 AM

Jester, you are a genius. Shame on Mozilla for their bad marketing practices

# Blackstorm said on 21 July, 2007 12:55 PM

Yeah... I agree... a patch that doesn't patch anything, by the words of firefox team :)

I love this post :D

# Alun Jones said on 21 July, 2007 03:03 PM

You forgot to mention one thing - that scary looking dialog box has a check-box that allows the user to say "yeah, sure, I trust this URL". So, the scary dialog box that the user sees would probably have already been dismissed by the user on a previous (benign) use.

Such dismissable dialog boxes have few uses:

* a convenience, to warn users the first time through, that something unexpected is about to happen, so that they'll expect it next time.

* Err... that's all I can think of right now.

It's being used in this case to warn users about potentially dangerous behaviour, so that the user can say that yes, in every similar case, they will want the dangerous behaviour to succeed.

The user (or the user's admin) approved this handler (by installing an app that created the associated registry key), so asking the user to approve it again is a bit of redundancy - not always bad in security terms, but in this case, it doesn't really add much of anything. Is an external program more dangerous than an internal plugin? In some cases, it can actually be safer, because (and SAFER is the key word, although SRP will get you more search hits) you can restrict the external application to run with limited rights.

# .:Computer Defense:. » Firefox vs Internet Explorer… Who’s Really At Fault said on 21 July, 2007 04:59 PM

Pingback from  .:Computer Defense:. &raquo; Firefox vs Internet Explorer&#8230; Who&#8217;s Really At Fault

# Paul’s esoteric meanderings » Blog Archive » I love it when PR Blows up in your face said on 21 July, 2007 07:44 PM

Pingback from  Paul&#8217;s esoteric meanderings  &raquo; Blog Archive   &raquo; I love it when PR Blows up in your face

# Spyware Sucks said on 22 July, 2007 01:01 AM

And... he hasn&#39;t lost his special knack for being able to aim his riposte just right... My regular

# Ben Bucksch said on 22 July, 2007 05:05 AM

The reason why the original bug is MSIE is simple: It is MSIE that starts the Firefox commandline, and the commandline says firefox.exe -url http://foo.com -chrome BLOCKED SCRIPTdoEvil(), and that's a fully legal way to start firefox, -chrome is just a way to specify the startup/main window, and any URL is accepted, and it has to have system rights. So, firefox just does what it has been told.

The assumption with commandline parameters is that they come from the user, and are thus fully trusted. Consequently, if any application starts another application, the former has the obligation to start the right commandline. Even more so when untrusted content is made part of the commandline. You have to take a lot of care for escaping there, it's very easy to get this wrong. This is a very old problem, lots of exploits a long time ago on Unix which happened that way, and it's always the launching application which is at fault, not the launched app.

It's a shame that MSIE gets this wrong, and it's clearly an MSIE bug.

It's even *more* shame that Firefox gets this wrong - a) because they should have less bugs, and b) because they have been warned by the MSIE bug, we should have checked ourselves.

# Robert Hensing's Blog said on 22 July, 2007 02:26 PM

Jesper does a pretty good job of addressing the question of who was at fault in the whole IE vs. Firefox

# Alun Jones said on 22 July, 2007 03:20 PM

Ben Bucksch's comment is incorrect - "The assumption with commandline parameters is that they come from the user, and are thus fully trusted."

This is not merely a command line - it is a declared and documented handoff of untrusted data coming from a remote and untrusted third party, not the OS, and not the user, but a potential hacker.

When Firefox registers "firefox -url" as a protocol handler, their programmers have declared that they are aware that anything coming through in "%1" is untrusted and unfiltered data, potentially from a hacker. If they choose to fully trust that, then they are either asleep at the switch, or not aware of security concerns.

# Tales from the Crypto said on 22 July, 2007 04:00 PM

Heard about the firefoxurl vulnerability? It turns out that you can exploit Firefox by having Internet

# XoftSpy SE Antispyware » Blog Archive » Jesper is alive and posting … damn it’s good to see him back said on 23 July, 2007 12:09 AM

Pingback from  XoftSpy SE Antispyware  &raquo; Blog Archive   &raquo; Jesper is alive and posting &#8230; damn it&#8217;s good to see him back

# Spyware Sucks said on 23 July, 2007 01:15 AM

Firefox is not having a good week. Hot on the heels of the &quot; Hey Mozilla: Quotes are not legal in

# XoftSpy SE Antispyware » Blog Archive » Firefox vulnerable to username and password theft said on 23 July, 2007 01:35 AM

Pingback from  XoftSpy SE Antispyware  &raquo; Blog Archive   &raquo; Firefox vulnerable to username and password theft

# Thor Larholm said on 23 July, 2007 03:17 PM

Alain Saint-Entienne left a comment on my IE post about this article and I can only repeat my answer from there - you are absolutely correct.

Firefox, and any application built on top of the Mozilla framework, is indeed plagued by the same flaw :)

The 2.0.0.5 security updates fixed the lack of inbound argument validation, but left any outbound arguments untouched.

Cheers

Thor Larholm

# » Mozilla caught napping on URL protocol handling flaw | Ryan Naraine’s Zero Day | ZDNet.com said on 23 July, 2007 09:39 PM

Pingback from  &raquo; Mozilla caught napping on URL protocol handling flaw | Ryan Naraine&#8217;s Zero Day | ZDNet.com

# Spyware Sucks said on 24 July, 2007 01:11 AM

Window says: &quot;Over the weekend, we learned about a new scenario that identifies ways that Firefox

# XoftSpy SE Antispyware » Blog Archive » Window Snyder fesses up - Firefox also passes “bad data” said on 24 July, 2007 02:22 AM

Pingback from  XoftSpy SE Antispyware  &raquo; Blog Archive   &raquo; Window Snyder fesses up - Firefox also passes &#8220;bad data&#8221;

# Firefox could also be used as the entry point | GNUCITIZEN said on 24 July, 2007 03:13 AM

Pingback from  Firefox could also be used as the entry point | GNUCITIZEN

# .: Daniel Melanchthon :. said on 24 July, 2007 03:38 AM

Das lernte ich schon als Kind und das gebe ich auch an meine Kinder weiter. In meinen Sessions werde

# Ronald van den Heetkamp said on 24 July, 2007 06:00 AM

Sure that is possible, but any less dangerous asking a user to download an executable.

So what you learned here is programming 101: pass arguments along cmd in windows.  

it's actually a very old trick based upon the telnet:// identifier put into an iframe, what does it do? it launches telnet.

No one in the universe would click yes to that mayhem you present once, let alone twice.

# Giorgio Maone said on 24 July, 2007 07:51 AM

The bug is already fixed, with the update waiting to be deployed.

In the meanwhile, NoScript users enjoy early protection: noscript.net/getit

# Jim Brown said on 24 July, 2007 08:07 AM

Let those who have not sinned cast the first stone... Mozilla certainly not entitled to

# [SSD] Security & Development Blog » Firefox, tan vulnerable como Explorer al Ășltimo bug “compartido” said on 24 July, 2007 11:24 AM

Pingback from  [SSD] Security &#038; Development Blog &raquo; Firefox, tan vulnerable como Explorer al último bug &#8220;compartido&#8221;

# David LeBlanc's Web Log said on 24 July, 2007 03:09 PM

There's been an interesting little tempest in a teapot going on WRT IE and Firefox. I in general don't

# Noticias externas said on 24 July, 2007 03:31 PM

There&#39;s been an interesting little tempest in a teapot going on WRT IE and Firefox. I in general

# Nobody Cares said on 24 July, 2007 03:50 PM

It figures that this joker Jesper works or did work for Microsuck!!  Programming theives that they are .  They cannot ever get it right cause all they do is copy and not create!!

# Firefox: Nuove Falle, ed Imbarazzo « Simply Security said on 25 July, 2007 02:29 AM

Pingback from  Firefox: Nuove Falle, ed Imbarazzo &laquo; Simply Security

# Firefox, tan vulnerable como Explorer al ??ltimo bug “compartido” | TechnoBytes MX said on 25 July, 2007 03:57 AM

Pingback from  Firefox, tan vulnerable como Explorer al ??ltimo bug &#8220;compartido&#8221; | TechnoBytes MX

# Quarto di miglio » Mozilla firefox said on 25 July, 2007 06:51 AM

Pingback from  Quarto di miglio &raquo; Mozilla firefox

# linuxuser said on 25 July, 2007 08:51 AM

A miserable try to let the IE look better that it is

Shame on you

# Muffin said on 25 July, 2007 08:55 AM

@Paperino: "[...] Shame on Mozilla for their bad marketing practices"

There is the glasshouse again: Mozilla's marketing practices? Take a look at Microsoft's marketing practices and come again...

# Spommel said on 25 July, 2007 09:31 AM

So in my opinion Firefox is as bad as IE at this failure. And you are proud of that? A product you have to pay for should be BETTER than a free alternative.

Spommel

# punissuer said on 25 July, 2007 11:43 AM

I agree with Ben Bucksch that the launching application is responsible for escaping command-line arguments, because it has some information to determine whether those arguments are valid that the launched app does not.  In this case, the browser (whether IE or Firefox) knows that the URL is supposed to be one argument, and that quotes in it are not valid.  If it launches another app with the URL split up as several command-line args, how is the second app to know this?  The second app may do further validation of its inputs, but that doesn't relieve the first app of its responsibility--if it can tell that the args are invalid, it should act.  Mozilla should fix this bug in Firefox, and then throw some more stones at MS Windows:  "We fixed this flaw quickly.  Why can't you?"

# jesper said on 25 July, 2007 12:23 PM

Those who think it is the calling app's responsibility to perform input validation for the called app should take a few moments to go read what David LeBlanc has to say about this. He has some really great insights on that particular issue:

blogs.msdn.com/.../security-dependencies.aspx

# Larholm.com - Me, myself and I » Handling URL protocol handlers said on 25 July, 2007 01:03 PM

Pingback from  Larholm.com - Me, myself and I &raquo; Handling URL protocol handlers

# Aion said on 25 July, 2007 03:13 PM

You mean to tell me Mozilla's Chief Security guy is called Window?

# multi_io said on 25 July, 2007 03:51 PM

Does anybody here think that rm -rf / should do something else than trying to delete / ? Does anybody here think that is is a bug in firefox that firefox -chrome BLOCKED 'BLOCKED SCRIPTsomething()' tries to run the javascript code "something()"? No, of course not. It's not a bug in rm or firefox. If you don't want to delete /, or if you don't want to run "something()", then you shouldn't issue those commands. But IE does. So the bug lies in IE (and Firefox < 2.0.0.6), period.

# Ansgar said on 25 July, 2007 04:17 PM

So what happens when I have a URL with several spaces and quotes?  e.g. <test://"  asd> (two spaces) and <http://" asd> (one space)  Will the parameters given to the url handler be the same, or will they be different? (I don't have Windows, so I cannot test it ;-) )

IMO the handler should always be called with the url as *one* argument, even if it contains spaces.

Ansgar

# Aaron Margosis said on 25 July, 2007 04:56 PM

@multi_io:  Truly bizarre assertion there.  IE is not issuing the command, nor did Firefox ever issue the command.

@Ansgar:  As Alun Jones pointed out, the concept of "one argument" vs. multiple is limited to C/C++ and the way its typical runtime libraries parse command line input.  C/C++ apps often end up seeing only argc/argv.  Most other languages see input as a single string, possibly containing spaces.  Apps written for Windows (including C/C++) can call the GetCommandLine API to see the real command line.

# hcp said on 25 July, 2007 07:57 PM

MS is inconsequent, for the url handler hcp the parameter is escaped. perhaps because helpctr.exe can't deal with the unescaped parameters?

# vedala said on 25 July, 2007 10:48 PM

Aion, your comment cracked me up! ROFL

# punissuer said on 26 July, 2007 02:00 AM

As an argument for why web browsers should not perform any validation on arguments they pass to apps they call, I find David LeBlanc's insights far from convincing.  If my "CriticalBusinessApp [needed] quotes coming in" when it was being called as an URL handler, I'd ask my programmers what they were smoking.  Also, detecting malicious input is more difficult after it's been split into multiple arguments by the command line interpreter.  For example, validating an arg that's supposed to be an URL will not detect that the following -chrome arg was supposed to be part of that URL.

If we were talking about general applications, I might agree more with LeBlanc, but we're talking about web browsers.  There are rules that all web browsers are supposed to follow (like the spec for what is an URL), and so a browser has more context to determine what would obviously be invalid input for an external app.  If what incoming HTML said was an URL does not look like an URL, then it would obviously be poison for any program that expected an URL, so it should be escaped, and quoted to prevent splitting or other misinterpretation by the command line interpreter.

# Ivan Magrini said on 26 July, 2007 04:49 AM

To linuxuser: shame on you! I'm actually sick of this "MS is bad" "Linux/OSS is good" ... this is a technical discussion and Jesper's arguments are totaly OK.

As a software developer (no, I do not use MS development tools) I know, that you can never trust input passed to your app ... and therefore you should allways validate what your app is getting from the outside .... otherwise you are just a fool.

# Alun Jones said on 26 July, 2007 10:47 AM

@punissuer: If it's too difficult for you to spot malicious input using argc and argv, then you should stop using argc and argv. As Aaron pointed out, at any stage you can call GetCommandLine to get the command line as a single string and do your own parsing; you can also write your code as a Win32 app, rather than a console-mode app, and it will receive a single string containing the entire command line.

In this case, Internet Explorer is acting as a proxy, not a browser, and should behave that way; the protocol handler is acting as an Internet-facing client, and should behave that way. Asking that the proxy encode or decode stuff for you is not appropriate, because you will lose information about what the original intent was.

# multi_io said on 26 July, 2007 01:07 PM

@Aaron Margosis

Yes it is issuing the command if you click on a link named something like <a href='firefoxurl://foo.com"%20-chrome%20"BLOCKED SCRIPTsomething()"'>,  which is the whole point of the discussion!

(let's see how much of that text is left intact by the broken blog software on this server -- btw: is it any indication for MS's state of confusion when it comes to quoting issues that the server software here replaces every occurrence of "j a v a s c r i p t:something()" with "BLOCKED SCRIPT:something()"? :-P)

# punissuer said on 26 July, 2007 02:21 PM

Alun, I disagree with your characterization of the situation.  The first browser (whether IE or Firefox) is indeed acting as a browser.  It downloads, parses, and renders an HTML page.  It identifies anchor tags and href attributes, whose values should be URLs.  It's irrelevant whether the protocol handler is even aware of the network (file URLs, anyone?) since the problem occurs while it's validating its command-line input.  As for validating the command line as a single string, how is the protocol handler in any better position than the command-line interpreter that populated argv and argc?  Information about the original intent is lost when the calling browser fails to quote or escape the arguments.

# Alun Jones said on 26 July, 2007 02:48 PM

You're right - details of how to parse the protocol are only available to code that knows something about the protocol, and clearly the protocol handler would have no more knowledge about the protocol than the C Run-time library (it's not the command line interpreter, which people typically use to mean CMD.EXE)

# punissuer said on 26 July, 2007 03:58 PM

How is the protocol handler more able than <i>whatever</i> populated argv and argc even to determine where a maliciously malformed URL begins and ends if the calling app has not relayed this information with quotes, and escaped quotes in the malformed URL?  Skimming your blog, I found this statement which seems relevant:

<blockquote>It's vital for the protocol handler to see the "-url" argument as indication that everything following it is suspect. The first double-quote should not be taken as a sign that "%1" is over - the last double-quote before the end of the command line is that indicator.</blockquote>

I would agree with this statement completely if the -url argument were used only by programs calling Firefox as a protocol handler, so the command could have only the form 'firefox -url "%1"'.  But users can type the -url arg into CMD.EXE by hand, and follow it with other args, so the assumption that it must be the last double quote that ends the URL is not valid.

Also, the calling browser could use the "known good" principle you mention on your blog while escaping the URL.  Only characters which are not valid in URLs (like whitespace and double quotes) would be escaped, so a well formed URL would be unchanged.  Who cares if a maliciously malformed URL gets mangled?  The protocol handler should throw some kind of exception upon such input, anyway.

# aaaaa0 said on 26 July, 2007 10:50 PM

punissuer:

In which case, firefox should define a new command line switch and register its protocol handler like this:

firefox -untrustedurl "%1"

Then regular users using -url would be free to combine it with other switches, while the URL protocol handler would only use the safe switch (which would do all of what Jesper suggests.

# Jesper's Blog said on 27 July, 2007 12:17 AM

Sometimes you just have to wonder how far people will go to lend undeserved credibility to opinions.

# paperino said on 27 July, 2007 12:24 AM

@Muffin

I've never seen MS blame Turing for their bugs as Window Snyder just did.

# dabur said on 27 July, 2007 04:24 AM

I'm responsible for security in my company. For me it doesn't matter if it's FF or IE or AOL or "WTF" with a vulnerability.... The only thing that matters is having a fix so I can start the system engineers doing the dsitribution of it on all our client and server systems.

I would like to see some cooperation between the different software companies, to think about solutions that benefits for everybody.

Maybe looking in RFC3986 again and optimize it?

Fact: Nobody is perfect. All software have vumnerabilities. It's a matter of when they are discovered.

Greetings.

# Firefox 2.0 e IE7 soffrono dello stesso bug « Re Riccardo said on 27 July, 2007 06:28 AM

Pingback from  Firefox 2.0 e IE7 soffrono dello stesso bug &laquo; Re Riccardo

# [SSD] Security & Development Blog » Insisto: grave riesgo amenaza a usuarios de Firefox en Windows XP said on 27 July, 2007 10:29 AM

Pingback from  [SSD] Security &#038; Development Blog &raquo; Insisto: grave riesgo amenaza a usuarios de Firefox en Windows XP

# Sean said on 27 July, 2007 12:11 PM

My feeling on the whole thing? A pox on both their houses for not looking out for the security interests of the end user. Both Microsoft and Mozilla failed in an extremely important concept, ALL INPUT FROM REMOTE SOURCES MUST BE SANITIZED BEFORE IT IS ACCEPTED FOR INPUT! Microsoft is vile for passing on unsantized data, and Firefox is vile for not sanitizing its input.

# Toma Bussarov said on 30 July, 2007 01:55 AM

Did anybody read the picture from Firefox?

Just below the scary url that is presented to the user is written:

...it may be an attempt to exloit a weekness in that other program ...

In the case of IE "that other program" is Firefox. No more searching whose fault it is. Mozilla confesses.

# Pentiux said on 30 July, 2007 10:06 PM

Outsmating each other.

Both have flaws, I think.

Let's see who fixes thier flaws first.

# Exchangepedia Blog - » FireFox 2.0.0.6: Mozilla fixes the IE security hole that wasn't said on 31 July, 2007 03:39 PM

Pingback from  Exchangepedia Blog  -   &raquo; FireFox 2.0.0.6: Mozilla fixes the IE security hole that wasn't

# Reverend JAxON said on 01 August, 2007 08:34 AM

you can pick exploder which is just about as exciting as the Taco Bell menu. Or - pick Firefx which is the mexican putting your Nachos Bell Grande together. At least homeboy can mix it up!

# Email Filtering Services said on 12 September, 2007 05:40 PM

As the web continues to mass daddy guidance, we\'ll strive to show them to you.

# Security Blog di Feliciano Intini said on 11 October, 2007 10:01 AM

Scrivo questo post per avvisarvi dell'emissione del Microsoft Security Advisory 943521 e per tentare