Are Apple, Google, Microsoft And Mozilla Helping Governments Carry Out Man-In-The-Middle Attacks?

from the and-what-can-they-do-about-it? dept

Back in September, we reported on the Chinese authorities using man-in-the-middle attacks to spy on citizens who carry out Google searches over encrypted connections. That’s done by using a fake security certificate to redirect traffic to a server where the traffic is decrypted, analyzed, and blocked if necessary. A new post on the Web site points out that this approach can only work if the user’s computer trusts the certificate’s issuing authority, in this case the China Internet Network Information Center, and that it’s curious that browsers from the West do so quite so readily:

Microsoft, Apple and Mozilla among others, trust CNNIC (China Internet Network Information Center) to protect your communications on their platforms by default, regardless of whether or not you are in China. CNNIC has implemented (and tried to mask) internet censorship, produced malware and has very bad security practices. Tech-savvy users in China have been protesting the inclusion of CNNIC as a trusted certificate authority for years. In January 2013, after Github was attacked in China, we publicly called for the the revocation of the trust certificate for CNNIC. In light of the recent spate of man-in-the-middle (MITM) attacks in China, and in an effort to protect user privacy not just in China but everywhere, we again call for revocation of CNNIC Certificate Authority.

Although the logic of revoking CNNIC as a trusted certificate authority might seem inarguable, the consequences of doing so are likely to be serious. For example, the Chinese government might decide to ban the use of any browser that did not include CNNIC. That’s hard to police, but the threat alone would be enough to dissuade any software company from removing CNNIC’s certificate from its browser.

Perhaps the best solution is simply making users aware of the issue, and explaining how they can remove any certificate authority they have doubts about. And not just for China: these problems can arise in any country where a local trusted certificate authority is under the direct — or indirect — control of the government.

Follow me @glynmoody on Twitter or, and +glynmoody on Google+

Filed Under: , , , ,
Companies: apple, cnnic, google, microsoft, mozilla

Rate this comment as insightful
Rate this comment as funny
You have rated this comment as insightful
You have rated this comment as funny
Flag this comment as abusive/trolling/spam
You have flagged this comment
The first word has already been claimed
The last word has already been claimed
Insightful Lightbulb icon Funny Laughing icon Abusive/trolling/spam Flag icon Insightful badge Lightbulb icon Funny badge Laughing icon Comments icon

Comments on “Are Apple, Google, Microsoft And Mozilla Helping Governments Carry Out Man-In-The-Middle Attacks?”

Subscribe: RSS Leave a comment
David says:

Re: Re:

No, this is a real problem. The whole point of SSL is the idea of Trust. Without that, you might as well just use self-signed certificates. I’ve always wondered if the government is doing MiTM attacks by leveraging fake certificates provided by some friendly CA. Well, looks like China got caught with it first.

Since “Trust” isn’t absolute, all browsers now need to check the certificate against the last known certificate they used. If the certificate changes unexpectedly, alert the user, and we can spread the word.

Worst case, is the CA authorities need to be ‘opt in’, meaning when you are presented with a certificate signed by “Big Name CA”, you have to acknowledge you trust that CA now before accepting certs by them as “trusted”.

Anonymous Coward says:

Re: Re:

I think a more general concern maybe that a website may have their certificate forged by a certificate authority the browser trusts despite the fact that this certificate authority is not the correct one that should be authenticating the content on the website being visited.

I’m not exactly sure how the browser verifies certificates but, presumably (if it were smart) it should give priority to certain (more trusted) authorities before giving priority to less trusted ones and it should check the credentials of a website with the ‘more trustworthy’ authorities first to see if those authorities have any records of the website. If the more trustworthy authorities have records of the website then the certificates on those websites should be verified with the more trusted CA’s without the need to verify them with the less trustworthy ones. Or, alternatively, the browser can check with multiple different CA’s and report any CA conflicts. This would ensure that whoever is playing man in the middle would need to work with multiple CA’s if the website is to be verified by multiple ones. Hopefully banks have the sense to use more than one CA so that browsers can do this.

“That’s done by using a fake security certificate to redirect traffic to a server where the traffic is decrypted, analyzed, and blocked if necessary.”

So if a trusted certificate authority presents a fake certificate it can then instruct the browser to redirect its inquiry to another site? Doesn’t make much sense (at least not if you have a properly functioning browser). This type of attack seems somewhat difficult because it would require both a MITM attack (the ability for someone to get in between the user and the desired website to trick the browser into thinking it’s receiving information from a site it’s not) and it would require that someone to be working with the certificate authority. I suppose it’s possible (and the OP is talking about a potential MITM attack) but it’s important to be aware of what would be required and the difficulty.

Another potential general solution to the general problem above, at least in firefox, is to click on the little lock next to the URL, click more information, and see who the certificate is being verified by and whether or not it makes sense that this authority is the correct authority for the website being visited.

Another potential problem could be when downloading files. When running them as admin usually you’ll get a yes or no popup asking you if you want to continue and there maybe a line on the popup saying ‘verified publisher’ and who the verified publisher is. If there is a ‘verified publisher’ it would be nice if the operating system also told the user who’s the CA that verified the publisher (though you can usually right click on the program, click properties, and view that info from there).

Anonymous Coward says:

Re: Re: Re:

(well, after thinking about it, it’s more complicated than that. If someone is in the middle they can strip the website of any references to other certificate authorities and include signatures from certificate authorities of their choice. Perhaps a solution is for the browser to be able to directly ask popular/trustworthy certificate authorities, through encrypted connections of course, whether or not it certifies a specific website and notify the user if the answer is yes and the site doesn’t have reference to that authority. Another possible solution, as stated above, is to click on the little lock button and see that the certificate authority is the correct one and not some Chinese certificate authority when visiting an American Bank of America website).

Cerberus (profile) says:

Re: Re: Re: Re:

Yes, but it would make the most sense if all certificate authorities published lists of which domains were allowed to use which certificates. (Presumably, few domains would need to use more than one certificate.) So, if the domain suddenly required not its usual certificate from Verisign, but a certificate from Chinesegovernment, the browser should say, nah-uh, that authority is not in my list for this domain. Similarly, the browser would not accept a certificate normally used for a website of the American government to authenticate a website of the Chinese government.

Anonymous Coward says:

Re: Re: Re:2 Re:

“it would make the most sense if all certificate authorities published lists of which domains were allowed to use which certificates.”

This is exactly what I was trying to explain but you explained it better.

But here is the thing. Even if all certificate authorities published a list of which domains were covered if Chinesegovernment is in your browser all the Chinesegovernment CA has to do is lie and tell your browser that this domain is covered by it. This is why cross referencing across different CA’s is needed as a somewhat better, though still not perfect (at least not for all situations), solution. That way the browser can check with another CA if that website is (also) covered by that CA and, if it is, the browser can then ensure the website includes the certificate from that other authority as well (or else alert the user).

Anonymous Coward says:

Re: Re: Re:3 Re:

So long as you have the public key of the intended recipient and you acquired that key from a secure channel (that’s the hard part), from that point on MITM attacks are easy to thwart.

The browser has its own (perhaps temporary) public key. The browser makes a request to an alternative CA asking it if it also covers the given website. The request is signed by the browser. The browser already knows, ahead of time, the public key of the CA.

Now the CA responds with

A: the request being made (is www. … .com included in your list).

B: the date and time of the request
C: The response to the request (yes or no)
D: The public key of the requester (this is key to prevent a man in the middle attack)
E: A signature of all of the above information (that is a signed hashsum including all the above information).

When the browser receives its response it knows

A: The sender is the requested CA
B: The public key being responded to is the public key the browser used (and not some spoofed public key of someone in the middle) because the response itself includes the public key making the request (and the response is signed).

David says:

Re: Re:

Google Chrome:

Settings – scroll down to “Show Advanced Settings”
Click on “Manage Certificates” in HTTP/SSL section
Click on “Authorities” tab
Scroll down to CNNIC, click on “CNNIC Root”, then click on “Edit”
Uncheck the “Trust this certificate for identifying websites.” box
Click on “Ok”
Restart Chrome

Anonymous Coward says:

Arab spring

Those 2 words should inspire Americans to do something similar to their out of control governments instead of just rolling over and accepting it.

The Arabs were inspired by the American concept of rights and freedoms that the current generations no longer seem to care about. Maybe you guys could get inspired about the rights and freedoms your ancestors fought died over as well

Anonymous Coward says:

Was there any MITM attempt using CNNIC?

As far as I know, the answer is “no”. The MITM certificate in question was self-signed.

The reason it was never used for MITM is that, as soon as it’s used for MITM, it will lose its trusted CA status. CNNIC is not one of the “too big to fail” CAs.

As to the discussion leading to its inclusion by Mozilla, has links to the discussion for all trusted CAs. For CNNIC, the discussion was at and

tqk (profile) says:

Re: Re: Re:

If the NSA doesn’t cut their crap soon they are going to bring down our electronic infrastructure and cause the collapse of our economy.

And they would care why again?

Who said anything about caring? Never ascribe to malice what can be explained by incompetence or stupidity.

They’re well on the way (if they haven’t already) to destroying any confidence foreigners had in US based “cloud” infrastructure. They backdoored RSA. They tee’d ISPs, then Congress pardoned the latter retroactively. DHS/ICE hijacks domains without even bothering to verify that they should.

What else can’t we trust about USA based infrastructure?

leichter (profile) says:


On MacOS, certificates are managed through the Keychain Access application, rather than in the browser itself. Open Keychain – it’s in Applications > Utilities. On the left of the window, you’ll see either one pane labeled “Category”, or two panes, “Keychains” and “Category”. If you only see one pane, select View > Show Keychains. Then in the “Keychains” pane select “System Roots”. A list of all root certificates will appear on the right. You can click on a column header like “Name” to sort on that column.

Find the certificate you want to remove – CNNIC ROOT is right there – and double-click on it. Details about the certificate will appear. Click the arrow next to “Trust” to open the trust details. Change “When using this certificate” from “Use System Defaults” to “Never Trust”.

It’s not possible to delete one of the built-in certificates, at least not using the Keychain Access application. (There is a command line utility that can do it, but even then the removal isn’t permanent, and the cert may reappear – though it will be marked “Never Trust”.)

— Jerry

Anonymous Coward says:

This seems like a major internet security hole. And no real discussions on it, in the techworld, i mean enough discussion so that MOST people are aware of this possible, vulnrability

Seems to me its in a desperate need of an overhaul, or enough discussions, for now, on which ones can be relatively trusted……i.e. a handfull, instead of ALL that come preinstalled

By the way, for android
Trusted credentials
Its there!

Add Your Comment

Your email address will not be published.

Have a Techdirt Account? Sign in now. Want one? Register here

Comment Options:

Make this the or (get credits or sign in to see balance) what's this?

What's this?

Techdirt community members with Techdirt Credits can spotlight a comment as either the "First Word" or "Last Word" on a particular comment thread. Credits can be purchased at the Techdirt Insider Shop »

Follow Techdirt

Techdirt Daily Newsletter

Techdirt Deals
Techdirt Insider Discord
The latest chatter on the Techdirt Insider Discord channel...