Re: Security bounties on Web bugs

Michael Catanzaro <[email protected]> Sun, 22 Feb 2015 07:04:27 -0600
Newsgroups gmane.comp.gnome.apps.epiphany
Message-ID <[email protected]>
On Sun, Feb 22, 2015 at 4:39 AM, Ekaterina Gerasimova 
<[email protected]> wrote:
> There are two issues with this: firstly epiphany would depend on
> seahorse

Epiphany isn't meant to be used outside of GNOME, and Seahorse is an 
uninstallable core GNOME app, so I don't think this is any issue at 
all. This is actually part of our manifesto:

Epiphany's main goal is to be integrated with the GNOME desktop.
We dont aim to make epiphany usable outside GNOME. If someone will like
to use it anyway, it's just a plus. Ex: Making people happy that
don't have control center installed is not a good reason
to have mime configuration in epiphany itself.

Epiphany is just not the right place for system-level configuration 
like certificate management.

> and the second is that seahorse needs a lot more love than
> it's been getting for a while.

Yes, that is true. The whole app could definitely stand to be 
rewritten. That would be a good use of GNOME funds, since it's the sort 
of thing that's not likely to happen on its own, and it would not be a 
small task. You should really consider spending on Seahorse, if not 
with privacy campaign funds then as the subject of the next fundraiser.

> I'm not sure how possible it is, but if seahorse is used, it would
> still be best if the certificates could be added without leaving
> epiphany.

OK, so we are talking about broken web sites. I was content to leave 
these be, since we've gotten to the point where these sites are very 
likely to be broken in other browsers as well and I don't care if we 
discourage users from visiting them, but we could handle them a bit 
better, yes. Anyway, there are three theories on this. The first is 
"when visiting an untrusted site, do not allow the user to trust the 
certificate because he will screw up his trust store and be vulnerable 
forever." That's the approach taken by basically all browsers, 
including Epiphany, with the notable exception of Firefox. These 
browsers let the user proceed anyway, then the next time he visits the 
site he's up against the same certificate warning again. I guess that's 
what you don't like, right? Anyway, Firefox follows the second theory: 
"when visiting an untrusted site, do not allow the user to proceed 
without modifying his trust store because he will just click through 
the warnings unless there are permanent security consequences to his 
decision." In practice, the Firefox approach significantly reduces the 
clickthrough rate, which is the primary reason this strategy is worth 
considering, but it's obviously bad for the people who proceed anyway 
(unless they are doing key pinning instead, which might be the case but 
isn't clear from their UI). The third approach would be to treat the 
untrusted certificate as a transport error and provide no way to 
proceed. Unfortunately it's not really politically possible for us to 
do this unless Firefox does so first, since we would lose users to 
Firefox, but it's far and away the right thing to do.

Anyway, I guess you want us to switch from the first approach to the 
second approach, so back to that. Remember that Firefox has its own 
private trust store. That is explicitly out of scope for Epiphany; we 
use the system trust store in /etc/ssl. To be able to modify your 
system trust store, you're going to need to write a polkit helper and 
prompt the user for an admin password if he's not in the admin group. 
So then unprivileged users will be completely stuck. On the other hand, 
p11-kit and glib-networking could be upgraded to check the home 
directory for certificates in addition to /etc, but I'm not sure if it 
would be advisable. There's also the huge disadvantage that this would 
allow a rogue site to backdoor all of the user's connections on other 
sites, so I'm pretty firmly convinced we should not adopt this 
approach. So we should really avoid modifying the system trust at all, 
but we COULD add an application-specific pin instead. i.e. implement a 
key pinning backend in WebKit (that can also be used by HPKP or TACK!), 
then Epiphany could pin a certificate for the given site without 
changing the system trust in any way. We would need then need UI to 
expose and modify which certificates are pinned to each site.

If we use privacy campaign funds for this, I would probably use all of 
the funds on this and lump it in with HPKP since it's so 
closely-related: set aside most of the funds for an implementation of 
HPKP in the soup backend of WebKit and API to expose this in 
WebKitGTK+, since HPKP has much more complex requirements for how 
pinning should work and it would suck to do this in a way that can't be 
reused by HPKP, and wouldn't it be nice to tie a project Michael is 
ambivalent about to a major security feature he'd like to see. Then a 
smaller amount of the funds would be a bonus for UI in Epiphany to view 
and modify the list of pins, and of course a similar amount for UI to 
allow users to use a pin to skip the untrusted certificate 
interstitial. The UI should strongly discourage users from adding such 
a pin, like Firefox does. And we would need to think about how much of 
HSTS we should expose in the list of pins: I'm pretty sure we need to 
be able to display pins so that the user can delete them when sites 
accidentally DoS themselves with a pin, but HPKP has various types of 
pins and how and how much to expose would be an interesting question 
for our designers.

This way we're not just throwing money at making Epiphany work with 
broken sites, we'd also be the first major browser with HPKP, which 
will be a huge security improvement for [the few] sites that use it.

/brainstorming

Michael

_______________________________________________
epiphany-list mailing list
[email protected]
https://mail.gnome.org/mailman/listinfo/epiphany-list