7 Sep 14:11
Firefox 2.0.x: tracking unsuspecting users using TLS client certificates
From: Alexander Klink <a.klink <at> cynops.de>
Subject: Firefox 2.0.x: tracking unsuspecting users using TLS client certificates
Newsgroups: gmane.comp.security.full-disclosure, gmane.comp.mozilla.crypto, gmane.comp.mozilla.security
Date: 2007-09-07 12:13:06 GMT
Subject: Firefox 2.0.x: tracking unsuspecting users using TLS client certificates
Newsgroups: gmane.comp.security.full-disclosure, gmane.comp.mozilla.crypto, gmane.comp.mozilla.security
Date: 2007-09-07 12:13:06 GMT
While building the new OpenXPKI Live CD ... <shameless_plug>if you are looking for an (open source) enterprise-grade PKI system, consider OpenXPKI. You can now test development snapshots using our new Morphix-based live CD.</shameless_plug> ... I realised that you can do something with Firefox 2.0.x that you could not do with Firefox 1.5.x: track an unsuspecting user using TLS client certificates. Here is how it works: - The user visits a websites and leaves behind some personal data (for example on a registration form). - The website uses SPKAC using the <keygen> tag to create a private key for the user. This will pop up a dialog that says: "Key generation in progress ... This may take a few minutes ... Please wait ..." With a 1024 bit key on a modern machines, this only takes a few seconds, so it is barely noticable to the user. - Using the SPKAC data, the website creates a TLS client certificate for the user (which may contain just a unique identifier for the user and/or the personal data entered) and sends it to the user using the "application/x-x509-user-cert" MIME-type. Firefox will automatically install the certificate and pop up a dialog that says: "Your personal certificate has been installed. You should keep a backup copy of this certificate." This dialog may need some social engineering from the website to keep the user unsuspecting. But who has actually heard of a "personal certificate" except for the more technical users? One could even explain to the user what it really is without the user(Continue reading)
> I've actually tested that again and it also works in Firefox 1.5 - and
> even "better" there, because the certificate installation does not show
> any dialog at all.
Right! In 1.5 no "Installation Message" appears, which in 2.0 has been
corrected. I suggest to file a bug with the request to change the
default settings for handling certificate authentication. Please send
the bug number, so we can vote for it...
Arshad Noor
StrongAuth, Inc.
----- Original Message -----
From: "Robert Relyea" <rrelyea <at> redhat.com>
To: "Arshad Noor" <arshad.noor <at> strongauth.com>
Cc: dev-security <at> lists.mozilla.org, dev-tech-crypto <at> lists.mozilla.org
Sent: Friday, September 7, 2007 4:24:15 PM (GMT-0800) America/Los_Angeles
Subject: Re: Firefox 2.0.x: tracking unsuspecting users using TLS client certificates
Arshad Noor wrote:
> See below, Alex.
>
> Arshad Noor
> StrongAuth, Inc.
>
> ----- Original Message -----
> From: "Alexander Klink" <a.klink <at> cynops.de>
>
> The typical user does not have a client authentication certificate,
> so after installing one for him, the browser will send that out
> to anyone who is asking.
>
> My understanding of the TLS protocol is that the browser only sends
> the certificates signed by CAs that the server trusts; are you saying
> that the protocol allows for asking ANY certificate from the browser
> cert-store, regardless of who signed it?
>
That's true of Firefox, not true of other browsers. Older versions only
sent out certificates if those certificates match a cert on the server's
CA list. Newer versions can include other certs (IIRC), but only if you
have ask always on, in which case you will get a certificate prompt.
Of course this doesn't change what Alexander describes. Servers
participating in this data collection scheme are cooperating servers.
They would know the CA that issued the particular client certificate and
include it in it's Request/Not require client auth message.
>
>> And what happens to the users
>> who do not have have client-certs issued by this CA when they
>> attempt to connect to the site?
>>
>
> Nothing, you can keep it configured as optional on the webserver.
>
> If so, how does the website track the client? Wouldn't client-auth
> need to be on for the tracking to work?
>
The server send 'request/not require' certs. Most modern client auth
servers use this anyway. It allows you to tell the user why he didn't
really get connected instead of just having a dropped connection. The
SSL connection completes, and the server sees that no client cert was
used, so it can restrict access to what it shows (in the normal case).
It's also essential for web sites that use smart card tokens. You can
tell the user 'please insert your token'. With FF 1.5 and later you can
use smart card insertion/removal events to cause the page to refresh and
have automatic login/logout based on your token using this feature.
>
> _______________________________________________
> dev-tech-crypto mailing list
> dev-tech-crypto <at> lists.mozilla.org
>
RSS Feed