Closed Bug 276827 Opened 20 years ago Closed 19 years ago

Remove Ability to Install Root Certificates

Categories

(Core Graveyard :: Security: UI, enhancement)

1.0 Branch
enhancement
Not set
normal

Tracking

(Not tracked)

VERIFIED WONTFIX

People

(Reporter: bill+mozilla-bugzilla, Assigned: KaiE)

Details

The typical user does not need to and should not be able to install a new CA
Root Certificate as this opens them to man-in-the-middle attacks.  It's easy to
imagine a phishing expidition that would have a user click and accept the new
root before setting up the MIM.  Currenty (in Firefox) adding a new Root is a 1
or 2 click operation.

There is some corporate need to do this, so perhaps a preference could be added
to reenable this feature for the very small subset of users who need it while
still protecting the majority of users out of the box.
Assignee: dveditz → kaie
Component: Security: General → Client Library
Product: Core → PSM
Version: Trunk → 2.1
(In reply to comment #0)
> The typical user does not need to and should not be able to install a new CA
> Root Certificate as this opens them to man-in-the-middle attacks.  It's easy to
> imagine a phishing expidition that would have a user click and accept the new
> root before setting up the MIM.  Currenty (in Firefox) adding a new Root is a 1
> or 2 click operation.

As I stated on bug 215243 I can't see how this will stop either of the above
conditions, very few users would accept a root certificate from a 3rd party
because it throws up too many error messages and by default all 3 tick boxes are
unticked so the certificates go into the user database disabled by default.

MITM attacks are quite difficult to do, especially on an ongoing basis due to
the sheer size and scale and interconnecting that occurs across the entire
internet. Unless you're stuck in some place that cracks down on civil rights in
which case I wouldn't be using PKI in any case.

Basically any security will go a long way compared to no security.
 
> There is some corporate need to do this, so perhaps a preference could be added
> to reenable this feature for the very small subset of users who need it while
> still protecting the majority of users out of the box.

I know for a fact there is a lot of companies that use this internally, and the
majority of them won't switch from IE because it's currently much easier to do a
site wide certificate install using active directory and MS IE.
The basic way this would work is:

  An e-mail looking 'official', instructs the user that their
paypal/ebay/citibank account is going to be deactivated for reason X unless they
upgrade their browser security.  It says to click 'here'.  'Here' runs a
javascript that sniffs for Firefox and gives instructions, with a screenshot
even, explaining how to 'upgrade' security.  That's the three checkboxes.  "OK,
that was easy enough," the user thinks, and they present a nice login screen for
the user to check his account which hooks to a proxy maybe.  The user now has a
proper padlock and can check that the certificate really belongs to who it says
it is.  Or so he thinks.  Once the phisher is in, he can repeat this attack with
any website at all because there's no check that Citibank's SSL cert is signed
by the CA they use, there's only a check that Citibank's SSL cert is signed by
any CA.

  Most users don't know what a certificate is, much less a root certificate. 
Granted, that's quite unfortunate, but we still let them install a root
certifiate with a few clicks.

  Duane, I understand you want people to be able to easily install the CAcert
root certificate, but that same convenience can be a risk.  Maybe TPTB will
WONTFIX this, but the issue should at least be considered.
(In reply to comment #2)

>   An e-mail looking 'official', instructs the user that their
> paypal/ebay/citibank account is going to be deactivated for reason X unless they

phishing scams don't bother now and they manage to get a ton of details about
users because they just don't bother checking. I highly doubt they're going to
go to all that trouble when they don't need to.
I strongly recommend against this enhancement, first because it is not necessary
and second because it would created an unacceptable burden on users.  

Mozilla Suite (and I suspect the other Mozilla products, too) asks for the user
to confirm before installing a new root or intermediate certificate.  Even if
the certificate is installed, the default is untrusted for all uses.  The user
must therefore take two actions to install a certificate that can be used to
authenticate a secure Web site or verified signed messages: 
1.  The user must okay the installation.
2.  The user must set trust indicators.  

Newly approved root certificates are automatically included only with newer
versions of Mozilla products.  Disabling the installation of a root certificate
would prevent a user with an older version of a product from picking up newly
approved, legitimate certificates listed at
<http://www.hecker.org/mozilla/ca-certificate-list/> (as I have done).  That
would create a disability for such users.  Making those users upgrade would
create too large a burden when they have no other reason to upgrade.  
Importing new root CA certs really is too dangerous for most users.
Most users will follow instructions blindly.  If the web page says 
"when it asks you if it's OK, click Yes" and the users will do it. 
Mozilla now makes it much easier than before for legit CAs to get 
their certs into the product.  Users of old products are vulnerable
and need to upgrade.  So, I endorse this RFE.  

But all these opinions, pro and con, are meaningless.  PSM is an orphan.
Speaking as an advanced user, but *not* a geek; this is insane.  A far better
approach would be to offer to look-up the "new" root certificate from a
"know-and-generally-considered-reliable" database kept right here at
mozilla.org.  It could list all generally recognized (like CAcert) and included
(like verisign) certificates.

Of course CAcert *should* be included, but that argument is going on elsewhere.

Lance Haverkamp
I personally disagree with the request to remove the ability.
I agree we must support companies that want to "roll their own internal CA".

We should not try to increase security by breaking functionality.

If you'd like to increase security for the user, I suggest to make it more
difficult for the user to import such a CA.

Inside the import CA confirmation dialog, we could:
- have a short sentence, which explains the user the consequences of trusting a
new CA, and that it must be confirmed the other party is really trustworthy
- display the CA cert fingerprint, and ask the user to verify it is the one
provided by the authority
- ask the user to enter some letters contained in the fingerprint

Just a few thoughts to make it more difficult and increase awareness.

I personally see this "remove CA cert import ability" request as a WONTFIX, but
why not change this bug into a "make it more difficult to import root CA certs
and increase user awareness" request.
See also bug 267515. It contains the same suggestion to increase user awareness
when importing certs.
I really think this is a bad idea. "security though non-implementation" is just
as bad as security to obscurity. Yes, a *very naive* user may be tricked into
installing a bad CA's cert, but that has to be countered by something better
than this RFE. Ignoring for the moment my vested interest in adding CACert and
other organisations' certs, what about companies and Universities who have their
own local root CAs and who wanted their users to install these certs?

If (heaven forbid) this RFE is accepted, I personally would love to contribute
in maintaining a fork of Firefox/Mozilla that disables it. Given the lazy person
I am, this issues is that important to warrant such an offer from me :)

Just like a lot of people have been drilled into not opening attachements from
strangers, it should be drilled into them to type in URLs into their browsers
and not click on the URL sent via email messages.

Strange, when email attachments started propagating viruses, I did not see any
call to disable attachment sending capability!
(In reply to comment #7)
> I personally disagree with the request to remove the ability.
> I agree we must support companies that want to "roll their own internal CA".
We do it a our University, and several others also do. In my opinion, my team
(systems management) is more trutsworthy assuring a server is located at our
network than any CA located outside our bourders that probably has no clue about
where or who we are. So our users need to install our CA certificate.
> 
> We should not try to increase security by breaking functionality.
Completelly agreed.
> 
> If you'd like to increase security for the user, I suggest to make it more
> difficult for the user to import such a CA.
That would be a useful approach.
> 
> Inside the import CA confirmation dialog, we could:
8<------8<
Excellent proposal.

> I personally see this "remove CA cert import ability" request as a WONTFIX, but
> why not change this bug into a "make it more difficult to import root CA certs
> and increase user awareness" request.
> 
Fully agreed.
At most, the user should be given a very stern warning indicating that choosing
to accept a root CA means that they have TOTAL trust in the issuer, AND that the
site/email that's offering it is itself not spoofed (the srouce itslef is not
already CA endorsed). Example: main corp website chooses to offer their own CA
on behalf of subsidiary intranet sites, and has a true CA issued cert and hosts
the cert only over an https link.

Also of concern when importing a CA -- or even plain signed certs -- is the
alt-subject fields, which a malice or just nieve 3rd party CA may sign for, thus
being use-able to spoof valid sites. So the certificate-trust dialog should
ALWAYS display ALL of the Alt-Subject names + the CN, asking the user of they
trust the certifcate supplier to assert the validity of EACH of those domains;
'www.mybank.com' or '*.mybank.com'.

Obviously one's own employer shouldnt sign certs (their own or 2nd party
requests) that contain unaffiliated 3rd party subject alt names (ala
*.yahoo.com), so in this case any newly encountered cert (signed by a
user-accepted 3rd party / homebrew CA) should probably also raise a one-time (by
cert fingerprint?) dialog asking the user for subject-alt list validation.

But I disagree with the idea of disallowing CA imports - too many businesses
REQUIRE this to certify huge internal lists of their own machines. Fact is, even
a web newbie should know to hit 'no' to a _well worded_ certificate trust
warning. And to disable CA trust would be moot in light of a user potentialy
accepting self signed certs that have spoofed subject alt names. 

"The certificate you have just opened is claiming to be an electronic identity
validation tool [ala CA], but Mozilla does not have any prior knowledge nor
trust of the individual or website who has supplied this file. This could be an
attempt to trick you.

[CA cert paragraph:] If you choose to accept this certificate for the purposes
below [email, www, software checkboxes], you will give its issuer the power to
1) endorse the safety of software that you will run on your computer; 2) to
validate digitally-signed email communications, 3) to validate website
communcations with financial and other privacy based insitutions. 

[Non ca cert message, or CA with subject alts:] The certificate claims to be
able to positivly identify the follwing websites/emails/software-signing, etc
(subject alt fields)

Click OK only if: 

-you are CERTAIN that you trust creator of this file to check the identity and
trustworthiness of all of the above identities.
-you have VERIFIED that the certificate's fingerprint[s, md5 or sha1] match the
ones of its issuer, by dialing "[O goes here]'s" publicly listed telephone
number and speaking with someone in the "[OU goes here]" department, or:
-you should have recevied this file by hand-delivery from a person you trust.

CLICK CANCEL if you do not fully understand the above warning or if you have any
doubt whatsoever about the origins of this file"

Long winded, could be trimmed, not locale friendly :-), but NECESSARY to limit
two forms of spoofing (malice CAs and self signers with wildcards/subject alts)
In light of the effect this could have on CAcert we set out to build our own nss
libs with the CAcert root built-in rather then an add-on, on a per user basis to
prove 2 things.

The first was the feasability if this bug is acted upon and adversly effects
CAcert, we wanted an easy option that people could do something to continue
including our root certificate in their browser.

Secondly the motivation was to prove how much a bad idea this is, in short if a
bad guy wanted to get his root certificate into the browser he could simply talk
the person into accepting a file download and telling them where to download it
to, the net effect is there would be absolutely no error messages, so by making
things so hard to include a root certificate there is always an easier back door
that can be exploited that makes things worst for security then better.
I am opposed to removing the ability to Import Root Certificates into Firefox. 
This would deny me the ability to establish my desired WoT.  The Libertarian in
me rebels at being "forced" to accept "trust" based upon the whims of faceless
individuals & organizations.

How does this feature even qualify as a "bug?"  No one is forced to Import any
Root Cert. they do not wish to utilize!

JOHN
I'm against disabling installation of a new CA Root Certificate.
If it had not been possible in the past to install CA Root Certs, I would have
had a hard time in Denmark!
We have a government sponsored CA and the certs from that CA is required for
internet communication with the official authorities in Denmark.
That CA's Root Certificate was not in nss. (TDC OCES that is.)
I had to install the Root Certificate on my own.
The consequences of not being able to install root certificates would have been
a disaster!
I think you would find similar examples in the future!
I think we heard enough examples why it's good to have this feature.
It helps users.

I'm changing this to a WONTFIX.

While the point is valid that user awareness should be increased, let's track
that in bug 267515.
Status: NEW → RESOLVED
Closed: 19 years ago
Resolution: --- → WONTFIX
Product: PSM → Core
I think that this is a very poor decision to not let the end user install 
their own root certificates - at our University we have self-signed 
certificates that we use constantly for internal purposes other than financial 
transactions because we can not afford to pay several hundred dollars for a 
Verisign, etc. certificate for email, etc.  I think that leaving this the way 
it is, where users can't install their own root certificates will cause people 
to shy away from Mozilla (I know that I would stay away from it!)  As a 
developer, I already stay away from Mozilla because of the features that are 
mplemented in IE but aren't supported in Mozilla, and feel that the failure to 
implement (or the decision to remove) features such as this will cause other 
people to leave the platform as well.  I personally use CACert for my own web 
development at home, because I also can not afford to pay a few hundred 
dollars for a certificate.  I highly encourage you to reconsider your position 
on the issue.
Thank you very much,
Chris Myers, CCNA, A+, Thawte WOT Notary
(In reply to comment #2)
>   Duane, I understand you want people to be able to easily install the CAcert
> root certificate, but that same convenience can be a risk.  Maybe TPTB will
> WONTFIX this, but the issue should at least be considered.
And how would a computer tech add a certification if this gets "fixed" 
honestly if you dumb down the program you only find a dumber user.  I have to
walk my clientell through installing darn near any thing.  the last thing I want
is to not be able to update domain certificates, or my website's certificates so
they cannot get to their troubleshooting information/programs.  If this were
such a great idea microsoft would have already adopted it. they dont for the
reason there is alot of software out there that need to be able to have the
certificates installable. 
If you can find a way to make it so that a "real" certificate from 
organizations you deem "real" such as Verisign, etc. not cost a buttload of 
money so that we can actually afford to have 20 of them or however many that 
are needed, that would be fine.  Until that time, don't hamper our ability to 
use our computers.  Right now we're dealing with this issue on Apple 
computers, because you can't at all visit a secure webpage without a root 
certificate installed, so since many of our servers use self-generated secure 
certificates created by the server's CA, users have to go through unencrypted 
connections to access email, etc.  Please don't make us do the same thing on 
the PC world.  By hampering the install of root certificates "for security 
reasons" you're relegating people to use unencrypted connections, which will 
cause a much larger security problem.




(In reply to comment #17)
> (In reply to comment #2)
> >   Duane, I understand you want people to be able to easily install the 
CAcert
> > root certificate, but that same convenience can be a risk.  Maybe TPTB will
> > WONTFIX this, but the issue should at least be considered.
> And how would a computer tech add a certification if this gets "fixed" 
> honestly if you dumb down the program you only find a dumber user.  I have to
> walk my clientell through installing darn near any thing.  the last thing I 
want
> is to not be able to update domain certificates, or my website's 
certificates so
> they cannot get to their troubleshooting information/programs.  If this were
> such a great idea microsoft would have already adopted it. they dont for the
> reason there is alot of software out there that need to be able to have the
> certificates installable. 

(In reply to comment #0)
> The typical user does not need to and should not be able to install a new CA
> Root Certificate as this opens them to man-in-the-middle attacks.  It's easy > to
> imagine a phishing expidition that would have a user click and accept the new
> root before setting up the MIM.

no, its surely not.

>  Currenty (in Firefox) adding a new Root is a 1
> or 2 click operation.

thats a sw-ergonomics and expert-systems problem (just lead the user with the ui
and teach him about trust requirements, so this would not happen to him)

> 
> There is some corporate need to do this, so perhaps a preference could be added
> to reenable this feature for the very small subset of users who need it while
> still protecting the majority of users out of the box.

this would ignore the learning curves of users getting more advanced with
security certificates. again, this is not about security but ergonomics and
expertssystem user support.

y
tom
(In reply to comment #0)
> The typical user does not need to and should not be able to install a new CA
> Root Certificate as this opens them to man-in-the-middle attacks.  It's easy 

I agree with the majority of commenters that this is NOT a good idea for the
reasons so abundantly stated below. If it somehow must be implemented, make it a
toggle under "privacy & security" and unchecked by default.
I filed this bug 4 months ago now, as a devil's-advocate bug around what security decisions we can 
reasonably ask the user to assume, stemming out of CACert discussions.

The response has been resoundingly in favor of trusting the user to manage his own security decisions, 
which I think is the right approach.  The comments not in opposition to this request are around the UI 
for adding a cert which is being tracked in bug 267515.  There was 1 vote in support of this bug.

Kai WONTFIX'ed this in February and there hasn't been opposition to the WONTFIX.

Marking VERIFIED.
Status: RESOLVED → VERIFIED
I hope you're all aware that presently no one is actively working on PSM.
All the PSM bugs are effectively WONTFIX until that situation changes.
When it changes, PSM will have a new "module owner".  

The decisions about which bugs get fixed and which do not are made by the 
module owner.  It's not a democracy. Bug comments are not votes for or 
against a bug fix.   That new owner will be free to revisit any bugs that 
the previous owner marked WONTFIX.  

But this is all moot until PSM gets a new owner.
Although I see the author's point, simply removing the user's ability to add a root certificate is not the way 
to go.  Perhaps making it more difficult to do so that a user cannot accidentally setup a MIM situation 
would be advisable.  Most folks will click OK just to make the dialog go away.  Having to type a random 
challenge word and press OK might be a better solution.

CAcert.org is a good example of a case where an end user may choose to make an educated decision to 
add a root certificate.  Another case maybe a small company or individual wishing to create their own CA 
to create a secure web network for his/her friends.  It should not be necessary to pay some large company 
a few hundred dollars simply to obtain a certificate signed by one of the "few" established roots.
(In reply to comment #23)
> to go.  Perhaps making it more difficult to do so that a user cannot
> accidentally setup a MIM situation would be advisable.  Most folks will
> click OK just to make the dialog go away.  Having to type a random 
> challenge word and press OK might be a better solution.

Just clicking OK won't automatically trust a root certificate they must also
tick boxes, I'm not sure how much more obvious this could be made without
upsetting major companies and universities that rely on the fact they run their
own CA or use one that isn't in the root store by default. A lot of universities
are promoting firefox etc as an alternative but how long will it take to change
if they suddenly have a 10 fold increase support work, or being forced into
purchasing certificates at $30+ each, my guess is they wouldn't be promoting
people use firefox any more...
Guys, the UI stuff is being tracked over in bug 267515.
this will stop cacert.org Certificates working. this doesnt get my vote
Version: psm2.1 → 1.0 Branch
Product: Core → Core Graveyard
You need to log in before you can comment on or make changes to this bug.