Closed Bug 228684 Opened 21 years ago Closed 17 years ago

Remember overrides of Certificate Domain Name Mismatch

Categories

(Core :: Security: PSM, enhancement)

enhancement
Not set
normal

Tracking

()

RESOLVED DUPLICATE of bug 387480

People

(Reporter: jacobc, Assigned: KaiE)

References

()

Details

(Whiteboard: [sg:want P3])

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.6b) Gecko/20031210 Firebird/0.7+ (aebrahim) Build Identifier: Mozilla Thunderbird 0.4RC1 (20031201) Many hosted domains include SSL-secured IMAP email that uses a generic certificate belonging to the ISP. For example, I own a domain 'spaceshipnofuture.org' that is provided by 'dreamhost.com.' When I connect to 'mail.spaceshipnofuture.org,' the server presents a certificate with the hostname 'mail.dreamhost.com.' Because of this, Thunderbird will (correctly) display the Domain Name Mismatch dialog on initial connections to this mail server. Every time I start Thunderbird, I must click through this dialog, which is easily lost when many other windows are open. I would like the option to disable this dialog, perhaps with a checkbox on the dialog that reads something like "Display this error next time." I realize that this is potentially dangerous, but I think some users would be willing to take the risk. The risk could also be mitigated by only disabling the dialog for specific domain name combinations; for example, Thunderbird would remember that I disabled the dialog when encountering a cert for 'mail.dreamhost.com' when connecting to 'mail.spaceshipnofuture.org' -- if, upon a subsequent connection, a cert for 'foo.com' was presented by the server, then Thunderbird would display the Domain Name Mismatch dialog again. Reproducible: Always Steps to Reproduce: 1. Add an IMAP account and turn on SSL connections for the account. The account must be for a server that presents a certificate that does not match its hostname. 2. Check mail for this account Actual Results: Domain Name Mismatch dialog is displayed. Expected Results: The Domain Name Mismatch *should* be displayed by default; however, it would be helpful to be able to disable this dialog.
Component: Mail Window Front End → Preferences
OS: Windows XP → All
Hardware: PC → All
this is especially annoying when you have thunderbird set up to check mail every minute -- it presents the dialog each time.
Another reason: I use ssh tunnels a lot for both IMAP and SMTP. In general, I have to use a hostname that I can put in my /etc/hosts file, and which doesn't conflict with the real hostname for the remote server, so that I can continue to use that for non-tunnel use. e.g. I often use hostnames like: 127.0.0.1 ssh-realhostname the loopback address is used, since of course the tunnel endpoint is here, on my system. When I use these tunnels for IMAP/SSL or SMTP/TLS, I always get prompted with this warning, since of course ssh-realhostname != realhostname, even if we assume that realhostname == certificatehostname. I'm happy to see the warning, but I don't need to see it every single time.
It would be good if you could select a checkbox that said something like "Don't show this again," but it would only store information about those specific hosts in a list which would be editable in the advanced preferences.
I am experiencing a very similiar situation. When I connect to my IMAP server the address is: "username.myserver.com" , however the security certificate is for "*.myserver.com" because each user is connecting to a different subdomain. This raises an error in Thunderbird 0.9.2 and can be rather irritating. I am not sure what the expected behavior is for wildcard characters in a certificate domain name. Should I file this as a seperate bug or is Thunderbird handling it correctly? If Thunderbird is handling it correctly, could you please add an option to "Ignore this warning in the future". Thanks.
This bug annoys me a lot too... What about prompting the user with those standard choices? Sounds wise. * Accept this certificate permanently * Accept this certificate for this session only * Do not accep and do not connect My 2 cents.
I think this is no enhancement, this is damn annoying and you can't do anything about it. It's an usability bug. => Setting Normal + mail3 + proposing 0.9 I am also not sure if it's the right component
Keywords: mail3
Target Milestone: --- → Thunderbird0.9
please don't put bugs into milestones for me.
Keywords: mail3
Target Milestone: Thunderbird0.9 → ---
I have this problem in addition to the fact that the certificate for my mail host actually won't become valid for a year. This is an error on the part of the mail host, but its a free service run by volunteers. So they will get around to fixing it when they can. In the mean time I don't use SSL, because thunderbird complains every time it goes to get mail from the server. It would be very nice to ensure that any scenario where Thunderbird complains about a certificate can be overridden by the user.
Could we at least get this changed from an enhancement to a bug. The fact that I have to click a box everytime I start thunderbird is an error on thunderbird's part. Being able to save the cert. where ever certificates are saved would be nice. I found where one could import certificats, but I have no idea where the certificate is. It must be temporarily stored locally during a thunderbird session, because thunderbird only displays the annoying window at start up and only for the first account of the same mail server.
My email server uses two aliases ukc.ac.uk and kent.ac.uk the SSK certificate is issued by the ukc domain and my email is delevered from the kent domian. Therefore there is a mismatch and it everytime thunderbird looks for new email I have to confirm the certificate. Is there some way of confirming once per session and letting it confirm in the background?
I have the very same problem (I am hosted by dreamhost, too). It's a real pain in the butt. Cedric's suggestion in comment #5 of having the same options as for self-signed certs (accept permanently, blah blah) sounds just fine to me. I can confirm this thing in TB 1.0 final, for Chrissakes!
(In reply to comment #11) > I have the very same problem (I am hosted by dreamhost, too). It's a real pain > in the butt. I have a client hosted by Dreamhost, and there is an ugly hack you can use that will work for Dreamhost and probably other situations as a workaround until this bug gets fixed. What you do is add an entry to your HOSTS (or /etc/hosts) file that maps the domain name used in the certificate to the IP address of the IMAP server you are connecting to. Then adjust your Thunderbird settings to connect to <certificate-domain> instead of <IMAP-server-domain>. So for example, my client normally connects to mail.example.com, but the certificate from the ISP is for mail.dreamhost.com. So a HOSTS entry is added like: 1.2.3.4 mail.dreamhost.com where 1.2.3.4 is the IP address of mail.example.com. Then Thunderbird is updated to connect to mail.example.com. Granted this is a bit fragile, as it'll break if the ISP changes the IP of the IMAP server, and it makes the machine referenced in the certificate inaccessible.
Flags: blocking-aviary1.1?
not a 1.1 stopper.
Flags: blocking-aviary1.1? → blocking-aviary1.1-
Scott: I see there's been no work on this bug for 4+ months, and all of a sudden, with TB 1.1 coming up, you decide it's not blocking aviary. OK, so we won't have a usability fix for this in the months to come? This thing has been bothering a sheer amount of people since TB first came out. I assume certificate management is handled by some generic layer that can be found in most Mozilla products. This layer allows the kind of Always/JustThisTime/Never management that was referred to in comment #5. AAMOF, such a behavior is provided for self-signed certificates in TB. Could you please explain WHY oh why it is so difficult to extend this kind of behavior to domain mismatch? Every single time I've opened TB in the past year and over, I've had to press Enter to the mismatch prompt. It's annoying and reflects a very real and commonplace situation: ISP mutualized hosting! Why is this thing still enh/new ?!
I'm nobody here, I'm "just" a user of Thunderbird, but I have to say that it infuriates me to see that comment from Scott MacGregor. This is a bug. It needs to be fixed. I don't want to sound like a jerk, but as a user, I am blissfully ignorant of whatever secret concerns may drive you to decide that certain bugs are stoppers and others are not. My concern is simple: I want the software to work. Seeing that this bug is not going to be fixed severely damages the reputation of mozilla in my mind. It certainly doesn't help that no reason is provided either. This is the kind of thing that makes me think I'm going to drop Thunderbird and tell anyone who asks not to use it --- not because it's not a decent piece of software, but because I continue to receive the impression that Mozilla developers are not sensitive to the desires of actual users of their programs.
this is a core security lib issue - if you search bugzilla, you'll find a lot of reports of similar problems. The security team feels it would be a security hole to add an accept permanently button to this core security lib dialog, for various reasons, including man in the middle attacks, if I understand correctly. I'm sure that's not going to make anybody happy, but it's totally out of mailnews control.
(In reply to comment #16) > The security team feels it would be a security hole > to add an accept permanently button to this core security lib dialog, for > various reasons, including man in the middle attacks ? I'm saying *this* particular certificate for *this* particular server. If someone tries to MITM, that's a change. Why is this a security problem? And really, this bug makes using TB a PITA sometimes. For _this_ I switched email clients?
I'm not a security expert, and believe me, this is a pain for me since one of the servers I use has this problem. see bug 255025 among others. Cc'ing some security experts...
If you add an option that disables name checking, there absolutely will be a CERT alert, major vulnerability report about it. You will have essentially killed SSL's ability to protect you from all active attack. the mozilla browser/email client has a feature where when you first override a cert name mismatch, it remembers the name of the host you were trying to access and associates that info with the cert. Thereafter, (during the lifetime of that process) if you visit that host again, it will remember that you previously chose to allow that cert to be used for that hostname, and will not warn again. When that feature was first implemented, it didn't associate a hostname with the cert, and instead marked the cert as valid for all hosts. There were TWO separate CERT alerts filed about that bug. It was a situation where the user had chosen to override security, and STILL CERT declared the product vulnerable over it (and IMO they were right). So, the moral of this story is that you must be very careful in what you choose to allow for overrides. Don't make overrides any broader than they absolutely must be. It's not difficult for server admins to get certs that list multiple hostnames in a single cert. That is a much preferred solution to this problem.
Oh, bug bounties were paid for all the bugs mentioned above as CERT alerts. Probably not good to implement bugs that lead to paying bug bounties.
Hmm, on bug 255025 comment 1 someone suggested that it's the site's fault. I'm confused now: is it in fact Thunderbird's fault for not handling this (i.e. these sites are using some kind of certificate strategy which is actually sometimes a good idea) or does the problem only occur when the e-mail provider is doing something they should *never* do? That would be an important thing to make clear from the start (which isn't to say, however, that even if it's always the e-mail provider's fault, Thunderbird shouldn't allow an override when the user wants one. But if this is a sometimes valid thing for e-mail providers to do then this problem should definitely be fixed quick). Pardon my lack of security and network knowledge, I just really don't like this problem.
(In reply to comment #19) > the mozilla browser/email client has a feature where when you first override > a cert name mismatch, it remembers the name of the host you were trying to > access and associates that info with the cert. That's all _I'm_ asking for, actually. If you want to warn me _once_ (for the life of the process) that there's a mismatch between the cert and my server name, that's just fine. But to ask me _every_single_time_ I try to check my email is just ridiculous.
The hostname association feature I described is only good for the lifetime of the process. Each time you restart seamonkey, you get warned about any hostname mismatches the first time you enounter the site. Having said that, I should also mention that the SSL protocol is designed to avoid sending and validating certs on every connection. Having once connected and validated the cert, the client and server should establish a "session key" which is then re-used in subsequent connections between that same client and server for up to 24 hours, or the lifetime of the process, whichever is less. When a session key exists, the client and server should be able to negotiate a handshake without any certs being involved. If you are indeed being asked to revalidate certs on EVERY connection attempt then something is wrong in the implementation or configuration of either the client or the server. It sounds like one or both of their SSL session caches isn't working. mozilla's SSL client cache code works fine in the browser.
In reply to comment 21, Any SSL server that sends out a certificate that does not contain the DNSname(s) by which that server is known is misconfigured, IMO. One of SSL's key values, one that sets it apart from many other crypto protocols, is its ability to detect MITM attacks and protect the user from them. This ability depends on the client being able to determine, algorithmically, that the cert it receives from the server is the cert for the server that the client's user intended to contact. Today, the convention (in RFC 2818) is that the client must find the DNSname by which it tried to reach the server in the certificate's list of DNSnames. If the client receives a valid cert that happens to belong to someone other than the server it intended to reach, and the client does not detect this and report it, then it is trivial for a bad guy to interpose between the client and server and masquerade as the server. The hostname mismatch dialog is the ONLY thing that gives the user a chance to decide to avoid being succesfully MITM attacked. A user who routinely ignores all host name mismatch errors is a user who is completely vulnerable to MITM attacks. SSL is largely regarded as being immune to this attack precisely because the vast majority of SSL clients properly check the servers' certs to ensure they contain the desired host name. Any server admin who runs a server with a cert that does not contain all the names by which that server is commonly known and used it forcing a situation on his client users in which they will experience host name mismatches. IMO, that's a bad thing for a server admin to do to his users. Now, we can debate whether or not a client should allow its users to override these errors. There's no standard that says clients must or ever should do that. And we believe that most users always click past any errors that their clients allow them to click past, so the ability to click past the host name mismatch errors is effectively a vulnerability in itself. If the clients did NOT offer a way to click past this, you can be sure that a lot of lazy sysadmins woudl fix their certs, and users would not complain about having to click through so much. In some sense the ability to click through is itself the cause of these complaints. So, yes, if you're using a service from some server (especially if you're paying for it) and you're finding that you always have to deal with cert name mismatch dialogs, then your service provider should fix his server's cert. That's his responsbility, IMO. He should not be contiually putting you in a position to have to deal with alerts that serve a legitimate purpose of detecting MITM attacks. By being forced to repeatedly click past that warning, you become trained to ignore that error, and someday you may be victim to MITM because of that.
Nelson: First, thx for all the comments, they help getting a better understanding of the issue. I realize changing this is outside mailnews scope, but since this is the bug where most of the discussion takes place, I'll add a comment here. IMHO, putting up the same Name Mismatch dialog every single time TB starts (or every 24hrs, as per the session key expiry you mention) only serves to make users more apathic to such dialogs, so they end up disregarding them at large. Indeed, as long as the original Mismatch dialog prominently displays the /intended/ DNSname and the /cert's/ DNSname(s), why is that so dangerous to allow the user to permanently allow such "human match"? Later on, if the cert's DNSnames list changes, still w/o containing the intended DNSname, a new Mismatch dialog would appear. Such an override would only declare the actual cert to be OK for the intended domain, in the state it was at override time. I can't seem to find a reason why this constitutes a security issue (unless, of course, the user carelessly allowed permanent override, i.e. w/o regard to the cert's details, but then it's not the product's fault, it's the user's fault). Aside from this, you mention it's easy for server admins to produce a multiple-DNSname cert. I seem to recollect sysadm friends who did not appear to find a workable road towards this (this was for HTTPS covering of virtualhosts I believe). Would you by chance have a link at hand?
Brendan writes in comment #15: > ...it infuriates me to see that comment from Scott MacGregor. > This is a bug. It needs to be fixed. > > Seeing that this bug is not going to be fixed... Scott's comment was "not a 1.1 stopper." That doesn't mean the bug won't be fixed, only that other work has priority with respect to the 1.1 release. If you think the bug should have a higher priority, protest (I'm not sure if that accomplishes anything), vote for this bug, write a patch, or hire a developer to write a patch. Nelson Bolyard writes in comment #19: > the mozilla browser/email client has a feature where when you first > override a cert name mismatch, it remembers the name of the host you > were trying to access and associates that info with the cert. > Thereafter, (during the lifetime of that process) if you visit that > host again, it will remember that you previously chose to allow that > cert to be used for that hostname, and will not warn again. And that seems to be precisely the functionality desired to address this bug. (Though the duration shouldn't be only for the life of the process. It should be permanent. Having non-technical users see a warning they don't understand after every restart doesn't improve security.) > When that feature was first implemented, it didn't associate a > hostname with the cert, and instead marked the cert as valid for all > hosts. There were TWO separate CERT alerts filed about that bug. Interesting, and something for the developers to keep in mind so the same mistake isn't repeated, but what's your point? > It was a situation where the user had chosen to override security, > and STILL CERT declared the product vulnerable over it (and IMO they > were right). Of course they were right. It was a buggy implementation. So? > It's not difficult for server admins to get certs that list multiple > hostnames in a single cert. That is a much preferred solution to > this problem. Review the earlier comments on this bug. The condition was originally encountered by users of ISPs who map customer specific domains, such as mail.example.com for the example.com customer, to a shared mail server. It would be impractical to create a certificate that lists thousands of domains and keep it up to date as customers were added/removed from the mail server. Why not just have customers directly access mail.isp.net? Presumably the ISP uses the customer-specific subdomain to provide a level of indirection. They can reallocate how customers are assigned to mail servers transparently by updating DNS records. The other scenario mentioned in Comment #2 was port forwarding. Adam writes in comment #21: > ...is it in fact Thunderbird's fault for not handling this (i.e. > these sites are using some kind of certificate strategy which is > actually sometimes a good idea) or does the problem only occur when > the e-mail provider is doing something they should *never* do? I think it is somewhere in the middle. Thunderbird is correctly following the standards, but ISPs face some practical limitations in adhering to the standards. It's not unusual for a client (web, mail, whatever) to accommodate real-world usage. David Bienvenu in comment #18: > see bug 255025 among others. Seems like bug 255025 is a dupe of this bug. (And maybe this bug should be likewise moved to Core, if that's where the problem is.) Nelson Bolyard writes in comment #24: > ...we believe that most users always click past any errors that > their clients allow them to click past, so the ability to click past > the host name mismatch errors is effectively a vulnerability in > itself. Valid point. It's also why I'd rather train clients (customers) to pause and ask when such dialogs appear, rather than get them in the habit of blindly dismissing such dialogs. (While I was writing this Christophe Porteneuve posted a comment that makes the same point.) > If the clients did NOT offer a way to click past this, you can be > sure that a lot of lazy sysadmins woudl fix their certs... Also probably true, providing those who operate the mail server can't simply respond by saying, "we don't support Thunderbird." > [your service provider] should not be contiually putting you in a > position to have to deal with alerts that serve a legitimate purpose > of detecting MITM attacks. I think permanently dismissing such warnings holds minimal security risk, if implemented correctly, which is to warn the user again if any of the elements (the IP, cert host, and real host) change.
To spell out what others have intimated, fixing this bug would actually increase security by drastically increasing the ratio of significant warning dialogs. Consider a MITM attack in which evil.com intercepts communications between mail server X and its users. User Joe uses Thunderbird with its current functionality, while user Jane uses a mail client that lets her permanently trust a particular certificate/domain combination. When evil.com presents its certificate to Joe, and Thunderbird warns Joe of the discrepancy in evil.com's certificate, Joe clicks the OK button in the warning dialog immediately, without ever looking at the text of the warning, just as he always does (after the first few times) when he starts the application and it warns him about the domain discrepancy in mail server X's certificate. When evil.com presents its certificate to Jane, on the other hand, and her mail client warns her of the discrepancy in its certificate, Jane pays attention, because she hasn't seen that dialog for months (ever since she first told her mail client to permanently trust mail server X's certificate for her domain). So evil.com steals Joe's authentication tokens and accesses his email, but it doesn't steal Jane's, who contacts her mail administrators after receiving the unexpected warning dialog and learns she is under attack. This example isn't merely theoretical. My mail provider (pair.com) hosts thousands of domains, and its certificate is one of those whose domain (*.pair.com) doesn't match my mail server's domain name (mail.melez.com). I start Thunderbird several times a day to access my mail on that server, and every time I do so, I dismiss the domain mismatch warning dialog the moment it appears. Like Joe in the example, this behavior leaves me susceptible to MITM attacks. It's also a rational, calculated risk, since the warning dialog is virtually always seeding doubt about what is actually the correct server. For this warning dialog to meaningfully warn users of a potential attack, it should appear rarely and only when an attack appears likely. In the mail world, where mail servers increasingly serve multiple domains and users generally access the same small subset of servers, that will be best accomplished on the client side by allowing users to permanently accept a certificate/domain combination.
Well said, Myk. It's clear that if Thunderbird is going to be completely secure, it's going to have to not present an option to accept the certificate at all, but simply an error message with a note to tell your site administrator to fix their server. This would of course cause many people to be unable to use Thunderbird. If any of these connections are to be allowed, making the dialog go away permanently (for certain domains only) is better than having it recur. How about the following idea if we want to get really secure? Have a configuration option which says something like "allow certain invalid certificates", which is off by default. When an invalid certificate arrives, display an error, similar to the one currently displayed, but which tells users that they must enable that option if they want to insecurely work around their e-mail provider. Then they go select the option, try to get their e-mail again, and then they're asked if they want to allow certificates that have that particular form. This way, only users with bad e-mail providers are at significant risk (lower risk than now, anyway).
Oh, and by the way, under that configuration option I mentioned you could have a list of certificates that are allowed through, which the user can manage.
This whole discussion is ridiculous. This bug is a textbook example of many different invalid uses of PKI. It bug should be resolved INVALID. If you want to use PKI, which includes SSL/TLS, you need to follow its standards. Using PKI with invalid certificates offers the same level of security as not using PKI at all. There are known solutions to the problem : 1) the cert issuers/users could fix their certs to become valid . Then, the mozilla pop-ups will disappear. 2) the users could switch to the non-SSL port. There will be no pop-up about mismatched cert in this case either. But the solution should NOT be : 3) the security in mozilla clients should be compromised . This is what this "enhancement" request is about . With enhancements like these, who needs bugs ?
Julien, with all due respect you are wrong. Securing a connection using SSL/TLS can serve two purposes: * Verifying the identity of the other party * Encrypting the connection You are suggesting that because users do not want to verify the identity of the other party, they have no right to encrypt their connection and should use non-secure connections only. As others have pointed out, letting the user choose how much of the identity verification should be done does increase end-to-end security (and in no case is the security of the client(!) compromised).
Klaus, SSL/TLS rely on X.509 certificates. When you get an X.509 certificate, you must verify that it matches your party. Show me a standard document that says you have a choice not to do that.
(In reply to comment #32) > SSL/TLS rely on X.509 certificates. When you get an X.509 certificate, you must > verify that it matches your party. Show me a standard document that says you > have a choice not to do that. Sure, but (again, with all due respect) that seems to be beside the point that Klaus just made. You said earlier that "Using PKI with invalid certificates offers the same level of security as not using PKI at all," and Klaus pointed out that an encrypted connection is nevertheless plainly better than an unencrypted connection. Bear in mind also that ideal certificate management is probably impossible and certainly prohibitively expensive in a virtual hosting situation, which is what we're talking about here. Go back and read the original problem description. If I attempt to connect to "myhost.com," and the server presents a certificate for "actualhost.com," but I know that "myhost.com" is simply a virtual host on "actualhost.com," why can't I tell my email client to go ahead and treat this particular combination as valid? Especially if I make this choice with full knowledge of the risks involved?
Jacob, I disagree that an encrypted but unauthenticated connection is plainly better than an unencrypted, unauthenticated connection. If somebody has the ability to snoop through your traffic (the threat you are protecting against by encrypting), they have access to router data somewhere, and almost certainly also have the ability to run an MITM attack on you just by reconfiguring router settings. Thus, the cost of the MITM attack is only marginally higher than snooping plaintext traffic, and it is questionable why you would want to protect against one attack but not the other attack of very similar cost. The problem of SSL virtual hosting needs to be solved properly, through standard ways that don't involve compromising security, such as including multiple names in a cert, wildcard certs, or simply using a different cert for each domain, either through a dedicated IP per domain, or a dedicated port if extra IPs are not available. The later shouldn't be any more expensive for the ISP - and the limit is reasonable, 65536 ports, ie. 65536 domains, per IP address, which should be plenty. Most clients, and certainly mozilla mail, allow you to configure the port for mail servers. In the future, a single IP:port will also be usable for multiple certs for virtual hosting. See bug 116168 and 116169 . The ISPs have no excuse but their own laziness not to respect the standards. This argument cannot be used to justify compromising security in mozilla. If you want to do that for yourself, fine : since you understand the risks, you can pull the mozilla source, remove hostname check yourself, and recompile it. Most people don't understand the risks, and this shouldn't go into the main tree under any circumstance, not even as an option.
Julien > If somebody has the ability to snoop through your traffic (the threat you are protecting against by encrypting), they have access to router data somewhere, and almost certainly also have the ability to run an MITM attack on you just by reconfiguring router settings. in a non-switched environment anyone on the same local network can sniff network traffic but usually cannot reconfigure routing. Encryption does improve security. Going by your argument, the user should not be given the option to override the hostname mismatch even by session. We are all in agreement that a working PKI and matching certificates are ideal and desirable, but we do not live in an ideal world and we need to choose between several alternatives, none of which are ideal. Yes the people discussing this here know how to work around the problem (the easier solution than changing the source is to define the matching hostname locally in etc/hosts), this is not about finding solutions for a bunch of developers who understand the issue and can fix it for themselves but solving the problem for Mozilla users at large who don't know and either decide to use another mail client because of this "feature" or blindly accept the security warning, and any other security warning they will get, every time because they are so numerous. PS. The SSL 3 specification explicitly allows for secured connections without authentication, maybe the right option for users who only want to encrypt traffic is to provide an option to not authenticate the server (although personally I think that authenticating the server with a known and user-confirmed hostname mismatch is the better choice).
Klaus, The mozilla user-at-large who doesn't understand about security should never override this error, so if this is who it's for, then that's all the more reason not to add an error. The security warnings are meant to be taken seriously, not ignored. The mozilla users need to understand the servers they are connecting to are at fault, not the browser. Switching to a less secure client doesn't solve their security issue. The pop-ups are doing the users a service. Removing them is a disservice to the user in the context of security. I'd say that for the mozilla users at large who don't understand security, most of the security pop-up dialogs shouldn't have an override at all, neither one-time "OK" button nor permanent. The goal of security is not to make the mozilla browser the most popular browser on earth. It is not to accomodate servers that don't follow standards. It is to make the application secure. When it comes to implementing security standards, there isn't the same margin for interpretation as there is with, say, the HTML standard. The risks of being lenient are much higher with security. security standards exist for a reason, and they need to be respected, by both the client and server sides. Mozilla should stick to enforcing these standards. If users want to stop using mozilla because it's secure, it's their own loss. If server administrators break security rules which result in mozilla not working with them, they should bear the consequences of reducing their user base. They are the ones each and every one of you need to complain to, to get to fix their servers. You should not file "bugs" on mozilla requesting that the security standards be broken. It will not happen.
Julien, any comments on my observation that the SSL 3 specification does allow encryption without server authentication?
Klaus, Please be specific . I assume you are referring to section F.1.1 of RFC2246, Authentication and key exchange : " TLS supports three authentication modes: authentication of both parties, server authentication with an unauthenticated client, and total anonymity. Whenever the server is authenticated, the channel is secure against man-in-the-middle attacks, but completely anonymous sessions are inherently vulnerable to such attacks. Anonymous servers cannot authenticate clients. If the server is authenticated, its certificate message must provide a valid certificate chain leading to an acceptable certificate authority. Similarly, authenticated clients must supply an acceptable certificate to the server. Each party is responsible for verifying that the other's certificate is valid and has not expired or been revoked." Total anonymity is possible with TLS, but the decision is dependent on the protocol that runs a top. Sections 1 and D.3. support these statements : " - The peer's identity can be authenticated using asymmetric, or public key, cryptography (e.g., RSA [RSA], DSS [DSS], etc.). This authentication can be made optional, but is generally required for at least one of the peers." Notice how it says "generally required for at least one of the peers". In the cases we have discussed thus far, the client doesn't have a certificate, so the peer is the server, and thus authentication is "generally required", not optional . The "total anonymity" case is seldom specified. Also, later, section 1 says : "One advantage of TLS is that it is application protocol independent. Higher level protocols can layer on top of the TLS Protocol transparently. The TLS standard, however, does not specify how protocols add security with TLS; the decisions on how to initiate TLS handshaking and how to interpret the authentication certificates exchanged are left up to the judgment of the designers and implementors of protocols which run on top of TLS." None of the protocols that mozilla is concerned with, HTTPS, IMAPS, SMTPS, and POPS, specify that total anonymity is allowed . Further : "D.3. Certificates and authentication Implementations are responsible for verifying the integrity of certificates and should generally support certificate revocation messages. Certificates should always be verified to ensure proper signing by a trusted Certificate Authority (CA). The selection and addition of trusted CAs should be done very carefully. Users should be able to view information about the certificate and root CA."
Julien I was referring to the SSL 3 specification, not the TLS specification, although they are similar: http://wp.netscape.com/eng/ssl3/draft302.txt (my highlights IN UPPERCASE) 5.5 Handshake protocol overview The cryptographic parameters of the session state are produced by the SSL Handshake Protocol, which operates on top of the SSL Record Layer. When a SSL client and server first start communicating, they agree on a protocol version, select cryptographic algorithms, OPTIONALLY AUTHENTICATE EACH OTHER, and use public-key encryption techniques to generate shared secrets. ... Following the hello messages, THE SERVER WILL SEND ITS CERTIFICATE, IF IT IS TO BE AUTHENTICATED. Also in the section you quoted Implementations are responsible for verifying the integrity of certificates and should generally support certificate revocation messages. Certificates should always be verified to ensure proper signing by a trusted Certificate Authority (CA). The selection and addition of trusted CAs should be done very carefully. Users should be able to view information about the certificate and root CA." there is no reference that the hostname must match the name specified in the certificate, this is about trusted CAs (fortunately we have no disagreement about CA trust hierarchies :-))
Klaus, I referred to the TLS spec because it is more current. Re : SSL3 section 5.5 In all the cases that have been discussed here, the server does send a certificate. According to what you quoted, since the server sent a certificate, then it must be authenticated [by the client]. Re : hostname check The process of verifying a certificate requires that you have some identity attribute and a certificate that is supposed to match the identity . The definition of a certificate is that it is the binding between that attribute (and other attributes) and the public key in the cert. In the SMTPS/HTTPS/POPS/IMAPS protocols, the identity attribute is the hostname. This is specified as part of the application protocols layered above SSL3/TLS, not in SSL3/TLS itself . Eg. , see RFC 2818, HTTP over TLS : 3. Endpoint Identification 3.1. Server Identity In general, HTTP/TLS requests are generated by dereferencing a URI. As a consequence, the hostname for the server is known to the client. If the hostname is available, the client MUST check it against the server's identity as presented in the server's Certificate message, in order to prevent man-in-the-middle attacks.
> the client MUST check it against the server's identity as presented in the server's Certificate message Again no disagreement there, it MUST check that the names match and handle the case when they do not. The specification does not say what the appropriate behaviour is in that case, and the whole discussion here is about what is appropriate, ranging from * Never ever allow the user to connect * Allow the user to connect but only after seeing a warning and accepting the specific mismatch every time the client is started (current behaviour) * Allow the user to connect but only after seeing a warning and accepting the specific mismatch
But are we in agreement that it's more secure to allow the user to make the dialog go away for specific hosts than for them to click it each time? From both of your arguments, it seems to follow that both those options are too insecure, and users should never be allowed to connect to a site with an invalid certificate. Is that true? Anyway, that's another problem completely from the recurring dialog, and maybe even a problem for another bug report. I'd personally say blocking all invalid certificates is too strict, especially since a program may assume that it is itself correct, but that everything else might be incorrect (including its users and whether other programs/servers follow standards. Though it's true that disallowing connections to things that don't follow standards may still be the proper way to handle it).
Klaus, actually, RFC2818 does specify the behavior if the check fails. From RFC2818, section 1 again : If the hostname does not match the identity in the certificate, user oriented clients MUST either notify the user (clients MAY give the user the opportunity to continue with the connection in any case) or terminate the connection with a bad certificate error. Automated clients MUST log the error to an appropriate audit log (if available) and SHOULD terminate the connection (with a bad certificate error). Automated clients MAY provide a configuration setting that disables this check, but MUST provide a setting which enables it.
> Klaus, actually, RFC2818 does specify the behavior if the check fails. And all three options * Never ever allow the user to connect * Allow the user to connect but only after seeing a warning and accepting the specific mismatch every time the client is started (current behaviour) * Allow the user to connect but only after seeing a warning and accepting the specific mismatch for a defined period of time, including permantently meet the requirement "If the hostname does not match the identity in the certificate, user oriented clients MUST either notify the user (clients MAY give the user the opportunity to continue with the connection in any case) or terminate the connection with a bad certificate error." The specification does not say "notify every time a connection is established" or "notify every time the client software is restarted".
Would addressing this bug be any more palatable to the security purists if the problem was redefined as follows: On the "Server Settings" page of "Account Settings" add an optional "Server Certificate Name" field (probably on the Advanced dialog) where a user can explicitly specify the name that Thunderbird should match the returned certificate against. Not as ideal as simply checking off "remember this" on the certificate mismatch dialog, but it equivalently solves the problem, and requires that the underlying Mozilla security subsystem perform an exact match between the certificate and a user specified field. No guessing and no confusing dialogs presented to the user. This also can be something a consultant or IT person sets up for a non-technical user and can be specified in setup instructions supplied by an ISPs.
(In reply to comment #36) > The mozilla user-at-large who doesn't understand about security should never > override this error, so if this is who it's for, then that's all the more reason > not to add an error. The security warnings are meant to be taken seriously, not > ignored. The mozilla users need to understand the servers they are connecting to > are at fault, not the browser. Switching to a less secure client doesn't solve > their security issue. The pop-ups are doing the users a service. Removing them > is a disservice to the user in the context of security. This is pure fantasy. Users want to read their email. Draconically enforcing authentication protocols to guard against hypothetical security risks will accomplish nothing except alienating the vast majority of users. Moreover, even if you maintain that naive users should not even do the per-session override, that doesn't explain why non-naive users should be prevented from doing a permanent override. From my understanding of the spec quotes people have posted on this thread, including this option would not violate the spec. The override should specify exactly which host, IP, etc. are being "trusted", and if any of these parameters change, a new warning box can justifiably appear.
Julien writes: > Jacob, I disagree that an encrypted but unauthenticated connection is plainly > better than an unencrypted, unauthenticated connection. > > If somebody has the ability to snoop through your traffic (the threat you are > protecting against by encrypting), they have access to router data somewhere, > and almost certainly also have the ability to run an MITM attack on you just > by reconfiguring router settings. This is demonstrably not correct in unswitched Ethernet as well as open wireless networks as commonly configured in cafes and conferences. While it is certainly possible that someone could mount a MITM attack in an open wireless environment, this is significantly more work than just listening to packets for passwords using (eg) Ethereal, and, as a result, almost certainly much less common. Do you disagree? [...] > The mozilla user-at-large who doesn't understand about security should never > override this error, so if this is who it's for, then that's all the more > reason not to add an error. The security warnings are meant to be taken > seriously, not ignored. [...] The pop-ups are doing the users a service. > Removing them is a disservice to the user in the context of security. Please re-consider the above paragraph in light of Myk's comment #25. It seems to me that he makes a compelling argument that the pop-ups actually increase risk here, because they encourage the user to ignore them. Worth keeping in mind is that we're trying to deal with how users actually _will_ act in the real world, not how they _should_ act. Do you see some flaw in the reasoning in comment #25? I think Brendan and other posters also make a good point that there are really multiple options here: status quo, or make it possible for everyone to override this dialog permanently, or make it difficult but not impossible for clued users/ISPs to override (eg via a pref).
*** Bug 255025 has been marked as a duplicate of this bug. ***
As I wrote in comments above, disabling all cert name mismatch checking discards the major security benefit of SSL for the sake of a few rare sites that have bad certs. Such a change is guaranteed to create a CERT alert and would severly damage the reputation of mozilla. If any change is to be proposed, it should remember a user's override for the named sites that the user overrode, not disable the check for all sites. I have not yet read any comment that disagrees that that would suffice. I am changing the summary of this bug to reflect that.
Summary: Add option to disable Certificate Domain Name Mismatch dialog → Remember overrides of Certificate Domain Name Mismatch
I am not sure that there is exact equivalence between these two bug reports. But they are close. What I would like to see is the option to permenantly accept THAT PARTICULAR CERTIFICATE (not certificates from that site) when the warning is given.
In reply to comment 50, right. When you choose to override a cert name mismatch, You're not saying you want mozilla to accept any and all certs for that site. Neither are ou saying that you want that particular cert to work for ALL sites everywhere. You're saying you want that particular cert to continue to work with that particular site.
Some ISPs are setup with one certificate for all virtual domains. For whatever reason, mostly administrative overhead I expect, they do not include every hosted domain in the valid domains in the certificate. I see lots of valid comments from developers regarding non-adherence by these ISPs to various security standards but very little discussion regarding viable solutions to users suffering the consequences in TB. Given the ISP is unlikely to change their configuration, what can be done by the Mozilla developers to lessen the inconvenience for TB users? Given this has gone nowhere in over 18 months, if the answer is nothing, at least update the Component to Security and Status to INVALID or WONTFIX for this bug report and close it with the official position.
*** Bug 292815 has been marked as a duplicate of this bug. ***
Please let me disable this annoying error, nobody is trying to steal my email and Im so sick of Thunderbird nagging me about some certificate that I have no control over.
I just started using SSL for my IMAP account to test out another bug recently and I see this problem too. It is awfully annoying. I'd like to see us be able to remember the CERTOKDomainName list for a particular certificate across sessions. As Nelson points out, that list is persisted across the current session. One big problem with saving the cert domain list associated with the cert is that we don't save SSL certificates (nor should we I believe), so there's no cert in the cert database which we could store the CERTOKDomainName list for.
Scott, in the lifetime of a single TB process, are you seeing this warning more than once per server?
(In reply to comment #56) > Scott, in the lifetime of a single TB process, > are you seeing this warning more than once per server? Hey Nelson, no, that's working just fine, multiple connections to the same server produce just the single dialog. The 'annoyance' is that every time the user starts up Thunderbird, he has to dismiss the cert mismatch dialog when we first log onto the server every time. That's why I was talking about how I would like the ability to see the cert domain ok list stored in the cert db for a particular cert. Of course since we don't store SSL certs, there isn't even a cert to store it with. :( I was thinking a bit more on this and I suspect it's not realistic for us to expect/hope for a lot of these web hosting companies to list all of their domains in the certificate their mail server uses for SSL. Would someone really list a couple hundred thousand domain names (or more?) in a certificate. Wouldn't that end up generating a certificate that would have a huge size? I don't know if I'd even want to see the client NSS code strtok'ing all of the possible domains from my hosting company just to find my particular domain anyway. :) Hmmm.
How about if you created a new table somewhere that listed "equivalent domains"? i.e. what's really going on here is that you're saying that the hosted domain is equivalent to the host's domain for auth/cert purposes. e.g. in my case, my domain is interthingy.net hosted at dreamhost.com. For authentication purposes, interthingy.net is equivalent to dreamhost.com and it can permanently be treated as such if the user (me) says so. I guess the tricky part is doing this in a secure way (i.e. wouldn't want someone hacking the equivalent domains table to trick an eveel domain into being authenticated -- actually, I'm not really sure that's possible, but I think it is -- I'm too tired to think of an example right now...). I was able to add dreamhost's cert to the authorities table in cert mgr (not sure if that was the right thing to do though) -- is there any way to amend the cert in the authorities table to include the additional domain name? One more thought: IIRC, firefox has implemented this feature. Maybe you could look at what they did? ~ray
Scott, Creating a single cert with all the options is certainly *not* the only option available to hosting companies. The simplest option for hosting companies is to create individual certs for each domain, and just use a separate IP / port combination for each server. Or if they can't afford that many IP addresses, they can just use say, 1 IP and cert for every 10 virtual hosts. These companies have plenty of options to fix there issues. The standard documents are out there. If you are worried about them, point it out to them. Maybe you can add a link to the standard docs in the error dialog, so these companies can't hide and pretend they don't know they are breaking the standard. In any case, we certainly can't expect the ISPs to fix anything if we are going to ignore this error. This is one that should *not* be ignored, unless you want to remove security altogether as a feature in mozilla . Also, my understanding (which may not be correct, please contradict if you have other info) is that the main protocol that requires multiple IPs for certs currently is HTTP - and even that is getting fixed with the TLS server name indication extension (which also fixes it for all other protocols that may be broken). Many mail protocols use STARTTLS, which means there is an in-the-clear negotiation which precedes the server's sending of the cert . This negotiation may allow the server to know which virtual host the client intends to talk to, and thus would allow the server to pick the right cert, with a single virtual hostname in it. Any way you look at it, this is fundamentally a problem of incorrectly setup servers, not clients. This is a problem that *cannot* be fixed solely by changes on the client side. If anything, it needs to be an evangelism bug, not a browser bug !!! Ray, A cert cannot be "amended" because it is signed by a CA cert. The only way to change the properties in a cert, such as a hostname, is for a new cert to be issued to replace it. This is what the hosting companies need to do - obtain a new cert every time they add a new virtual host, which they aren't currently doing. Regardless of the evolution of internet protocols and TLS extensions, and whether the hosting companies choose to use one cert per host or to use a single cert with multiple hosts in it, these companies will *always* have to obtain a new cert for each virtual host. I believe they aren't doing that currently because they are either incompetent or greedy, in that order. If Firefox actually implemented the removal of the hostname check, then I'm very glad I'm still using Seamonkey.
(In reply to comment #57) > it's not realistic for us to > expect/hope for a lot of these web hosting companies to list all of their > domains in the certificate their mail server uses for SSL. Would someone > really list a couple hundred thousand domain names (or more?) in a > certificate. No. My ISP does it this way. They have one DNS name for their IMAP, POP, and outgoing SMTP server(s). They may serve email addresses in thousands of domains, but their server has just one name (as seen by their customers). Their customers/users login to the server with their full email address as the user name. Their SSL cert has just one DNS name, and it works for ALL their users in all those users' many domains, because the server is not trying to pretend that it has a DNS name in all those domains. The users just have to accept the fact that, although their email domain may be flintstone.com, they have to connect to a server named superduperemail.com and login with their full email address for IMAP or outgoing SMTP service.
Would you people please listen to what we are saying? Its gotten a bit ridiculous that someone keeps saying, "This is not a problem with the client, the problem is with the servers." Yes, the certificate problem is with the servers -- but this is not a discussion about how to resolve the certificate problem... this is a discussion about how to get rid of the warning about the certificate problem. We don't want the warning. Its making an existing problem WORSE.
In a lot of ways I completely understand Arin's frustration. This traq has been going for quite some time now. I mean we're coming up on two years of finger pointing! Amazing...truely amazing! Now for Arin, since you are getting so frustrated with this, might I suggest using the "hosts" hack to clear your dialog box for the time being. Agreed, I don't necessarily like doing it either, but it does remove the frustration from the equation. Julien, I completely understand and appreciate your need and desire to maintain focused on security, however this "It's the ISP's problem", "This is not a bug, the ISP's are doing it wrong" defense has got to stop! We've all read it numurous times and the rhetoric is making our brains bleed. Yes, technically, this may be considered an issue with how ISP's maintain certificates, but why stop there? Why not point the finger at the Cert Authoriies? You mentioned "greedy ISP's", but the last I checked, the profit margins for hosting providers are not what they were ten years ago. It's a cut throat business, and they're a dime a dozen with heavy competition, low margins and high overhead. All the while certain Cert. Authorities are charging upwards of five to seven hundred dollars for a 128bit "file!" Now if you want to go on a campaign and span the globe forcing all ISP's to register one cert. per FQDN then be my guest...however I would hazard to guess that you probably don't have time for that in your schedule. Now lets flip that coin and put yourself in the ISP's position. ISP xyz.com hosts, conservatively, 50,000 domains. Now at the current pricing structure utilizing a "generic" Cert. Provider you're required to pay on the order of $100 for a 128bit cert per FQDN. Now do a little math and I've got a yearly bill of about 5 million. Now considering your 50K customers @ $9.95/mo generate about 6 million. But wait, don't forget to pay your employess, say $250K, or your Rent/Lease $100K, and all those computers $300K, and some bandwith to serve up all those certificates I just paid for, $150K. Now let's give Uncle Sam his cut...I think the egg just ate the chicken! My point being, sure it's easy to point the fingers at the ISP's/Hosting providers but is it not the system that is broken? Why don't the Cert authorities develop a product more tailored for these business? Another discussion I know, but if you want a cause to rally for change, there's your focus. Sure ISP's could mitigate these problems solely on how their servers are configured. As was previously mentioned, If I have domain abc.org but check mail through my provider at mail.xyz.com and login w/ bobdobbs@abc.org then the ISP is within the bounds of the Cert and all is well. However many ISP's allow customers to utilize their own mail domain, in my case mail.abc.org which does indeed break the model, but is needed for advanced services and other products that they need to differentiate their services. I don't think anyone here is asking anyone to give up and throw the security out the window. All we are asking is that instead of mandating your security views on the populous, allow us to mandate security as we see fit. Allow us that choice. By keeping things how they are now with popping up a mismatch everytime I check mail, you are desensitizing me to it's validity. I become preprogrammed to hit "check mail," "click OK"..."check mail," "click OK" without so much as a glance. On the other hand, i can alter my "hosts" file, but then I loose any management I may want over the mismatch. If people don't like the thought of "Accept Once," "Accept for the Session," "Accept Always" options for Cert. Management mismtaches, then add the functionality and leave it off by default, but don't deny us the choice to have it. We all take calculated risks every day. Just allow those of us that are so inclined to add this one to our list.
For those new to this conversation, note comment 27 and comment 47, which explain why the requested behavior would actually increase security. Also note comment 44, which points out that the requested behavior conforms to RFC 2818.
Julien: I understand what you're saying regarding the ISP's role in this but please consider, as many others have said, that it's not that simple. We can't control what our ISPs do and there are valid economic reasons why they can't do what you say and why many of us can't provide our own solution. If you thumb your nose at the problem you're only hurting your own users; you're not going to change the ISP's behavior no matter how right you may be. As for "amending" certs: I understand that certs can't be modified; I was thinking more along the lines of using something like an attachment to the original cert. I don't know what your DB looks like though, nor if it can support this, or support it securely, or be changed easily to support it. If I had more time I'd look into it myself and submit a patch. Regarding Firefox: I tested it today and confirmed that it wasn't FF that did this. I suspect now that it may have been Evolution but I can't test it right now (my employer blocks outgoing POP and IMAP :( Whichever program it was though, it didn't remove the hostname check, it only provided an option to permanently remember a SPECIFIC combination of mismatching hostnames so it can suppress the warning in the future. I think that's all anyone is asking for here. ~ray
Just a small remark about authentication: If I manually check the self signed certificate of my ISP (by matching the fingerprints) and on success import the certificate into my mail client/browser, I get an authenticated and encrypted connection with no possibility (except broken TLS) for a MITM attack. That's exactly the situation I'm in. So at least in the certificate manager I should be able to override the hostname check for *specific* domains.
I also suffer from this bug and in my case it is even worse! I access my mail through an ssh tunnel using the pop3s protocol. *Every* time I press "Get Mail" I have to OK the "Domain Name mismatch" dialogue. Surely if I'm allowed as a user to still access my mail after saying it is OK to accept the domain name mismatch I should also be able to say it's always OK for this particular mismatch? I'm forced into this situation because: 1) My employers only use SSL connections i.e. pop3s, and pop3 is not supported 2) They block external access to the pop3s server on all ports other than ssh. Therefore I need to open an ssh connection to the server, and route the pop3s 995 port through to my localhost with an ssh tunnel. So I get a domain name mismatch between the server and localhost. 3) I cannot use the /etc/hosts work-around as that will mess with my ssh tunnel connection and god knows what else! Do I have any hope or will I be forced to stop using mozilla based mail clients? I think this is a case of security gone mad. I seem to be trapped between two differing security mentalities!
(In reply to comment #24) > In reply to comment 21, > Any SSL server that sends out a certificate that does not contain the > DNSname(s) by which that server is known is misconfigured, IMO. > > One of SSL's key values, one that sets it apart from many other crypto > protocols, is its ability to detect MITM attacks and protect the user from > them. This ability depends on the client being able to determine, > algorithmically, that the cert it receives from the server is the cert > for the server that the client's user intended to contact. Today, the > convention (in RFC 2818) is that the client must find the DNSname by which > it tried to reach the server in the certificate's list of DNSnames. > I work at dreamhost.com, though I am not really their representative in this issue, just expressing personal concerns, observations, and frustrations. We use self-signed certificates on our shared mail clusters, all of the servers inside of a cluster, possibly globally, have the same modulus, and the same CN= field of mail.dreamhost.com. Basically, it is just something to get the connection scrambled from the casual eavesdropper. I, personally, would love the option to "ignore warnings regarding this certificate unless something changes.", much like an SSH client works. If I were "evil.com" forging a certificate I would make darn sure that the CN= field in a fake self-signed certificate matched what was on the server. I'm not up on all of the specifics of how these PKI certs work, but obviously knowing the public key and its modulus does not put you at risk of forgery. Couldn't Mozilla check based upon the modulus changing to put up its warning? In our current situation the certificate file would be huge and ever changing if we were to put DNSAltName fields in it and reload it for every domain we host. Most people in our hosting environment want to connect to "mail.example.com", not mail-cluster-a.hostingcompany.com. The override could even be specific to self-signed certificates which are already untrusted unless imported. On another note, if I have two seperate email accounts, Mozilla will not allow me to connect if I have two domain names, such as mail.example.com and mail.example.net, that are served the same self-signed certificate. I don't know if thats an RFC issue or what, but it seems like overkill to block the connection versus allowing the user to override it.
Could we raise severity and priority of this bug? It doesn't seem to be an "Enhancement" any more.
One could argue that this is a security issue and susceptible to a pavlovian vulnerability: http://robert.accettura.com/archives/2005/10/15/pavlovian-vulnerability/ At least I'm a well trained dog, clicking on those unnecessary warnings without thinking anymore.
This bug has been open for 683 days, go open source! The requested behavior is simple - if the certificate name does not match the name of the server one is connecting to, allow the user to choose to "accept this certificate permanently". This behavior *already exists* in Firefox. Can anyone give me a good reason why firefox's behavior is acceptable, yet the same behavior would be unacceptable in Thunderbird? Several commentors stated that changing Thunderbird's behavior would severely decrease the security of the application. If that is true, then it would appear that Firefox has a serious security flaw, and I recommend someone notify CERT. No? Then the code in Firefox is good enough for Thunderbird.
(In reply to comment #70) > This bug has been open for 683 days, go open source! > > The requested behavior is simple - if the certificate name does not match the > name of the server one is connecting to, allow the user to choose to "accept > this certificate permanently". > > This behavior *already exists* in Firefox. The bug is in the certificate name mismatch dialog, not the "untrusted certificate authority" dialog. Firefox does not have a way to permanently make a name mismatch dialog go away. Try visiting https://amazon.com/ , accept the certificate with the name error, then restart FireFox. It will re-present you with the certificate mismatch error.
It's so sad that developers can not understand the simple pov of oridinary user. I'm developer myslef (focused on web) and user experience is the very important thing for me. In case Thunderbird - it is so lame that when i set the option to periodically check my mail for every 10 minutes and i have host with lame certificate - the message with warning will appear every time without even the possibility to _remember my choice to accept my choice for this particular Thunderbird session_. It is very annoying and should be changed by Thunderbird developers. Of course it can be cause for endless discussion but imvho this bug makes my life much harder. Plase change this.
(In reply to comment #45) A long way back on this discussion, I think comment #45 is THE solution. I didn't find any comment on this, but maybe I missed it in the middle of all the other stuff. Maybe this could be done as an extension, that way people could choose which way they want it - more security or less annoyance. Let me just mention (I'm not sure anyone's done it before) that I get this issue not when starting TB and checking for mail, but rather when SENDING mail. This is because my ISP only allows Authenticated SMTP (SMTPA) and I have a proxy computer between me and the ISP (which causes the name mismatch). So, I would defend the option of following the solution (brilliantly) proposed by Tom Metro on comment #45, but making sure it's available for the SMTP server as well. The solution could be implemented as regular UI, as an Extension, or even as a tweak (about:config or something).
I have not yet read this bug in total, it is very long. But this bug is not specific to Thunderbird, it applies to Firefox and Seamonkey, too. A cross-application solution should be found. I propose the product of this bug be changed to Core / Security PSM. Please also note bug 94904 and bug 99411. I contains related suggestions (which I have not yet reviewed either).
Could we avoid storing certificates for fixing this problem? Could we just store a hostname-in-cert to hostname-connecting-to string pair? We could say, whenever we see a valid certificate issued to hostname-in-cert and we are trying to the associated hostname-connecting-to, we could skip the warning. However, there is obviously a certain danger with implementing this feature. The user could make the "remember" decision too quickly, without having looked at the displayed test in detail. Therefore I propose, this "remember mismatch permanently" feature should be implemented together with bug 276533, see bug 276533 comment 5. Instead of displaying a secure lock icon (when talking about browser windows) we should extend the lock icon by a visual feedback visualizing "the site is authenticated, but partly because of your own decision to trust".
Without re-opening the whole debate about what's right and what's wrong from a security point of view... A volunteer could easily write an extension that would supress this error dialog. For those of us foolish enough to want to ignore this dialog, we could go out and install the extension. No modifications to the mozilla source would be required and you wouldn't have to wait for a more complicated discussion / implementation that happend in the mozilla source. An extension author can write a small extension which implements nsIBadCertListener like we did for software update: http://lxr.mozilla.org/seamonkey/source/toolkit/mozapps/update/src/nsUpdateService.js.in#1588 But this implementation would wrap the default implementation, forwarding all calls to the real listener except for confirmMismatchDomain which should return false.
"Foolish to want to ignore this dialog" seems to be a bit exagerrated, in context of comment #1, which started it all. Anyway: 1) Would such an extension be capable of killing the dialog on per domain basis? And only if some other conditions are met? For example when certificate is issued by someone else, however that "someone else" is strictly defined to be "someone" yet not "anyone" else? Generally we don't want this dialog to be destroyed everytime. 2) Extension has a small downside: it might be installed without user knowing it - or am I completely wrong with this?
Hi people, I am a nobody here. I am just a regular Firefox/TB user. However, this bug is just so annoying that I am forced to switch back to IE/Outlook. Hope some day this bug will be gone because I love FF/TB, but I really can't deal with seeing this annoying pop up every time.
I think dennison's comment above shows the real problem here. Under some circumstances, the mismatch dialog will pop up *every time* Thunderbird checks for new email. This happened to me when I first started using Thunderbird and prompted me to start following this thread. Since then, Thunderbird hasn't exhibited the same behavior (even on different machines accessing the same mail server with the mismatched cert.) I think most people would be content if the mismatch dialog occured once and only once for each instance of Thunderbird, instead of for each time Thunderbird checks for mail. Unfortuantely, I can no longer duplicate the problem of Thunderbird notifying me of the mismatch every time it checks for mail, even though I'm using the same mail server I was when I experienced that problem, so I am unable to provide any details that would help identify the situations under which this problem occurs.
(In reply to comment #78) > Hi people, > > I am a nobody here. I am just a regular Firefox/TB user. However, this bug is > just so annoying that I am forced to switch back to IE/Outlook. Hope some day > this bug will be gone because I love FF/TB, but I really can't deal with seeing > this annoying pop up every time. >
(In reply to comment #78) > Hi people, > > I am a nobody here. I am just a regular Firefox/TB user. However, this bug is > just so annoying that I am forced to switch back to IE/Outlook. Hope some day > this bug will be gone because I love FF/TB, but I really can't deal with seeing > this annoying pop up every time. > ===================================================================== (oops)-sorry for the blank. New user. ==================================================== TEMPORARY FIX Desperate for a quick fix? Just a quick note which may be of use to anyone with a comment such as the one above. Someone has created an extension which re-installs the checkbox to remember this preference. The post can be found here: http://forums.mozillazine.org/viewtopic.php?t=370852&highlight= Thanks all for creating the state-of-the-art in browsing and email.
*** Bug 324923 has been marked as a duplicate of this bug. ***
(In reply to comment #81) > http://forums.mozillazine.org/viewtopic.php?t=370852&highlight= What about a temporary fix for seamonkey?
Can we have a vote for cloture to resolve this bug? And similarly for the related circumstance, an expired certificate, which also does happen in the real world with dismaying regularity.
(In reply to comment #84) > Can we have a vote for cloture to resolve this bug? While the extension works great for me, I grow tired of managing all these extensions and I believe some functionality that is currently provided by extensions should built-in. This is definitely a perfect example of that. I would therefore vote to leave the bug open to encourage this functionality to built-in.
I agree. IMHO security issues should not be handled by extensions as long as it is possible to built the feature into the main app.
(In reply to comment #86) > I agree. IMHO security issues should not be handled by extensions as long as > it is possible to built the feature into the main app. Right. When a user regularly accesses a mail server with a domain mismatch problem, repeatedly showing the dialog reduces the security of Thunderbird, while suppressing the dialog increases security. Making users in this situation install an extension to get more security seems too high a hurdle. Not to mention that the extension doesn't actually implement nsIBadCertListener, as comment 76 indicates would be the correct solution to the bug. Instead, it merely "clicks" the OK button in the dialog. It's a workaround, not a solution.
> Can we have a vote for cloture to resolve this bug? There is absolutely no reason to close it IMHO. Extensions are for extra functionality, not bug workarounds.
(In reply to comment #87) > (In reply to comment #86) > > I agree. IMHO security issues should not be handled by extensions as long as > > it is possible to built the feature into the main app. > > Right. When a user regularly accesses a mail server with a domain mismatch > problem, repeatedly showing the dialog reduces the security of Thunderbird, > while suppressing the dialog increases security. Making users in this > situation install an extension to get more security seems too high a hurdle. > > Not to mention that the extension doesn't actually implement > nsIBadCertListener, as comment 76 indicates would be the correct solution to > the bug. Instead, it merely "clicks" the OK button in the dialog. It's a > workaround, not a solution. I'd be interested in a patch that implements comment 76. I exchanged some e-mails with a couple extension writers who were going to collaborate on a solution using this technique, but I haven't heard back from them in a while.
Comment 76 appears to propose to ignore all cert name mismatch dialogs. Is that really what you're proposing? Do you understand the implication of such a proposal on, say, auto update security? See bug 340198.
(In reply to comment #90) > Comment 76 appears to propose to ignore all cert name mismatch dialogs. > Is that really what you're proposing? > > Do you understand the implication of such a proposal on, say, auto update > security? See bug 340198. > I was envisioning the extension checking against the list of domains the user wants to ignore the mismatch dialog for in confirmMismatchDomain, forwarding the rest of the errors on to Thunderbird's implementation.
Are there really any domains for which the user wants to ignore ALL name mismatch errors? These would be domains for which the user doesn't care if he gets MITM attacked or not. I think what these users want is the ability to remember *a specific cert* as being acceptable for *a specific host name* not listed in it. That's not vulnerable to MITM attacks using other, previously unseen, certs.
> I think what these users want is the ability to remember *a specific cert* > as being acceptable for *a specific host name* not listed in it. > That's not vulnerable to MITM attacks using other, previously unseen, certs. Right. I think what we want here is to offer users the ability to turn off cert name mismatch dialogs only for connections to configured email servers and only for specific host/cert combinations. For other kinds of connections (automatic updates, remote content like images in HTML mail, etc.) we should continue to do what we're currently doing when we get a mismatch (i.e. cancel the load or prompt the user).
Re: comment #88, this isn't a bug - witness the severity : "enhancement" . Re: commment #75, you may not need to store the entire certificate to implement this RFE. You could just store 2 hashes (done with 2 different algorithms; or more if you are really paranoid) of the certificate, along with the hostname for which you want the cert to always be good for.
(In reply to comment #1) > this is especially annoying when you have thunderbird set up to check mail > every minute -- it presents the dialog each time. Can anyone confirm that? If true, that is a separate problem. That would be a bug, pure and simple, in the way the email client is using SSL. This bug is about host name mismatch overrides not being remembered after restarting the client process (browser or email). If the email client doesn't even remember the mismatch override within the same process lifetime, then the email client is not giving libSSL the info needed to cache the session, or to find it in the cache. A separate bug should be filed for that, if confirmed.
(In reply to comment #95) > (In reply to comment #1) > > this is especially annoying when you have thunderbird set up to check mail > > every minute -- it presents the dialog each time. > > Can anyone confirm that? > If the email client doesn't even remember the mismatch override within the > same process lifetime, then the email client is not giving libSSL the info > needed to cache the session, or to find it in the cache. > A separate bug should be filed for that, if confirmed. > The logic behind it is that the IMAP/POP/SMTP connection is often completely new. New connection, new SSL transaction, etc. I know our system has a load balancer in the way, and after so long of idle time the connection is simply flushed, so the SSL state information is long gone. For active live connections that persist the dialog is not presented again. If there are no security implications I don't see what the issue is. I've been over that in previous comments though.
> ... after so long of idle time the connection is simply > flushed, so the SSL state information is long gone. > > For active live connections that persist the dialog is not presented again. Just a thought: given this, might it be possible for folks who get the dialog on every mail check to avoid it by increasing the frequency of their mail checks? (i.e. to avoid the cache timeout?)
Kelly Kane, The duration of an SSL session is not tied to the duration of any TCP connection nor any group of TCP connections. An SSL session between a client and a server typically lasts until 24 hours have elapsed, or until the client process ends, whichever occurs sooner. An SSL session may be used by multiple TCP connections between the same client and server, whether those connections overlap (e.g. are simultaneous) or are purely sequential (one after another) with no overlap. The re-use of SSL sessions avoids the costly RSA, RSA< or ECC computations, AND it avoids all the cert validation logic, by reusing the previously validated and negotiated session secrets. It never hurts to try to use an old session. If the other end no longer honors that session, it just starts a new one anyway. There are no extra connections, nor round trips, nor other bad side effects of attempting to restart an old connection, and there is significant benefit to doing so when an old session is succesfully reused. At this point, I wonder how much of the perceived problem is due to the cert mismatch info not being preserved over multiple sequential process lifetimes, and how much of it is due to failure to re-use SSL sessions that already live in the local process's session cache. The former requires significant new development. The latter would simply be a misuse of th existing NSS API, and proably trivial to fix. The "issue" with failing to re-use the SSL sessions is huge user inconvenience and bad user experience. Indeed, this is the same issue with failing to preserve cert name mismatch issue across process lifetimes, but presumably the frequency of one problem is much greater (and hence perceived more severe) than the other. Is there another bug about the lack of SSL session reuse in a single process lifetime? I really don't want to further lengthen this bug about that topic.
(In reply to comment #95) > > this is especially annoying when you have thunderbird set up to check mail > > every minute -- it presents the dialog each time. > > Can anyone confirm that? Well, unless I have misconfigured Tb 1.5.0.5, yes I have this problem with 2 mail servers. Every 20 minutes or so (the time between two successive checks for new emails), I have to click "OK" twice (once per server). Did someone say "annoying"? ;)
Fred (?) Buclin, Do these server certs have valid DNS names in them? Can you access those servers by the names in the certs? If so, What happens if you reconfigure your mail accounts to fetch the mail from the servers with the names in the certs? I'll get the mismatches simply disappear. Others have reported success with this method. Better to light a candle than curse the darkness.
(In reply to comment #100) > Better to light a candle than curse the darkness. Hum, yeah, this works. Shame on me for not trying this earlier. :-/ Thanks Nelson.
As mentioned before by Nelson Bolyard, any issue having to do with a domain mismatch dialog being shown multiple times during a single Thunderbird session is NOT the issue described in this enhancement request. This issue deals with a common situation under shared hosts where Hostname A must be specified on the client side, but a certificate for Hostname B is always presented on the server side.
I'm the author of the Remember Mismatched Domains extension. I'd really like to update RMD to implement Scott's <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=228684#c76">'Comment 76'</a> suggestion but am not sure it's possible. I'm able to successfully provide a custom notificationCallbacks for the MessageBrowser ("messagepane") however it seems other components also trigger the Mismatch dialog... If anyone has suggestions on how I can get this going for those as well I'd be very happy to implement a more 'proper' solution. As it stands I'm running out of ideas (as resorting to soliciting assistance in bugzilla might indicate).
*** Bug 362737 has been marked as a duplicate of this bug. ***
Assignee: mscott → kengert
Component: Preferences → Security: PSM
Product: Thunderbird → Core
QA Contact: psm
How can disable this message without the workaround with an extension? Can I delete the certificate or where is this informations stored in TB?
I have been frustrated by the constantly popping-up dialog boxes as well. The extension does elegantly solve the problem: https://addons.mozilla.org/en-US/thunderbird/addon/2131 I would love to see this standardized in the client as well, perhaps under the Edit/Preferences/Advanced/Encryption tab. I understand the security arguments against making this extension a standard feature, but consider this: 1) User frustration over constantly popping-up dialog boxes shifts user preference away from Thunderbird and toward other email clients like Outlook, with the resulting security problems. 2) User frustration over constantly popping-up dialog boxes causes users to quickly click the "OK" button, ignoring the text. What if it had been a real security breach, featuring a MITM redirection attack to a new domain or IP address that the user hadn't seen before? The design of the extension, remembering pairs of domains/IP addresses and only those pairs that have been pre-authorized by the user, is exactly the correct approach. If a real MITM attack should occur, the user will be presented with the correct dialog box again. 3) Many users are powerless to change the SSL certificates of the email sites they use. The SBC Yahoo example above is a good example. Even a huge web corporation like Yahoo can't get it right when switching from SBC to AT&T. Without the extension, all users of SBC Yahoo email will be presented with endless dialog boxes. That's a lot of frustrated users! 4) Many low-cost web hosting providers only use a single certificate to cover all of their domains. Due to the high cost of getting an official certificate that is signed by the recognized authorities, many small providers only do this once, and then let all of their customers share a common certificate. Of course, the domains won't match. The users need this extension, to get around the annoying dialog boxes. This approach is still about as secure as it's going to get, since if an attacker breaks into the web server containing many virtual hosts, they can grab all of the data anyway, and it wouldn't make a difference whether the virtual domains each use an individual SSL certificate or share a common certificate between them. 5) Expired certificates are just as annoying as mismatched certificates. The design of this extension, remembering pairs, works elegantly well to solve this problem as well. Instead of containing two domain/IP address pairs, the pair here consists of the certificate domain and the expiration time. The user is given the choice to remember this pair, and not have to answer any more dialog boxes until the expiration time changes again. The user is still protected against a substitution attack, because a real dialog box will be displayed if an attacker unexpectedly substitutes an old, expired, possibly-cracked certificate that the user hasn't accepted before. So, these 5 reasons are my votes for getting this extension's features built directly into the Thunderbird client. It's not something that should be marked as INVALID due to a perceived security problem, on the contrary, it helps security by easing the constant nagging that tricks users into blowing past dialog boxes and not reading them. It saves the nagging for a real security breach, when it is much more important to nag the user!
Thank you Josh for composing that. It is always frustrating to me when programmers will not listen to their users. Not having this feature does indeed make it less secure rather than more secure. The typical user will click the accept button without reading it when they are confronted with endless warnings.
Will this be fixed as part of bug 327181, or will Thunderbird need its own changes?
Whiteboard: [sg:want P3]
(In reply to comment #112) > It is always frustrating to me when programmers will not listen to their users. Um, in case you haven't noticed, there are only two full-time developers working on mail&news.
(In reply to comment #114) > Um, in case you haven't noticed, there are only two full-time developers > working on mail&news. Of course he didn't notice. How could he? How would he, or anyone, know which developers are working on what? I certainly have no idea, and I don't know where that information is. Perhaps you could enlighten us?
Please, let's not get into that kind of discussion. Bugzilla is not meant as a forum, it's meant for bugs and on how to fix them. If you really think this should be fixed, I guess you could set the blocking1.9? flag.
Flags: blocking1.9?
(In reply to comment #113) > Will this be fixed as part of bug 327181, or will Thunderbird need its own > changes? Thunderbird will not need its own changes, the code in bug 327181 and bug 387480 is planned to work with any application and protocol. A backend enhancement to cert fetching in bug 327181 will be required, because xmlhttprequest by default blocks connections to mail protocols. The new interface/service would have to get accepted for shared ff3/tb3 branch. Hopefully I can get it done soon enough. That new service would have to do a ssl connection to the server, obtain the cert even though the certificate is bad, close the connection without bringing up any error messasges, and make the cert status available for the UI in bug 387480. If you want to get this done asap, feel free to contribute programmer resources to get this done. I'm willing to provide guidance if someone steps up.
I don't think this qualifies as a blocking bug anymore, due to there being a valid workaround (extension). The argument about security for the common user isn't very strong for making it a blocking bug, because I'm sure this wouldn't be the default option. I don't think the common user is going to realize that they can go into some advanced security option to disable this, they will probably just keep hitting OK. Thus, the users who understand this issue and want to fix it already have an option of fixing it by downloading the extension. That is not significantly harder than enabling an advanced option. Don't get me wrong, I'd love to see this feature/bug added. However, I also realize now that there is a good workaround for it, and that if there was an advanced option, it wouldn't really be much different from the extension that already exists. I'd rather have programmers working on bugs that have no easy workaround.
Flags: blocking1.9?
I agree to Stevens last paragraph, but I see no reason not to include the extension as default. This way every user will get the close at hand option to add the specific pair as trusted. I would like to comapre this to the fature with allowing popups for a certain site. Of the functionality of the NoScript extension. Making the extension a natural part of the software would just follow the natural behaviour of FX.
(In reply to comment #118) > I don't think this qualifies as a blocking bug anymore, due to there being a > valid workaround (extension). As stated previously, extensions are for adding features, not for fixing bugs.
(In reply to comment #120) > As stated previously, extensions are for adding features, not for fixing bugs. Whether or not the lack of some particular feature qualifies as a bug is not always clear-cut; in addition, since the present report is of "enhancement" severity, it is not about fixing what people usually call a bug, but rather about adding a feature. However, this is not the right place to discuss it: you might find more sympathetic listeners in some of the newsgroups on the news.mozilla.org server.
Can this bug be closed now? Should it be morphed into a Thunderbird-specific bug about adding the UI to fetch certs as part of account creation (or do we have that one already?)?
I agree this bug should be fixed as part of bug 387480, or better, I'd like to mark it as a duplicate of bug 387480. The workaround for mail server is: - connect first - then go to servers tab and add exception (see bug 399043) The security engine will not offer an immediate click-through that we had in the past. We have implemented a multi-step-assistance for adding exceptions, which comes with warnings and requires consideration, as part of bug 398718 and bug 401575. What's left for mail, what could be done to improve the user experience for mail servers with bad certs? Because mail accounts are configured, that configuration UI seems to be the right place to add a hint/link/button to the add exception mechanism. If you want to do that, I propose to file a separate bug against the mail UI.
Status: NEW → RESOLVED
Closed: 17 years ago
Resolution: --- → DUPLICATE
You need to log in before you can comment on or make changes to this bug.