A more secure verifier? #1501
Comments
Yes, absolutely. Not probably. Absolutely :) |
like |
we aren't doing this already? I'll study the code to see where the pubkey lookup is happening and what we do when it succeeds. One deep question: how "sticky" should it be? Specifically, how long should the verifier remember that it saw an IdP pubkey? If an IdP publishes their key, then gives up and removes it, at what point should the verifier start accepting certs from the fallback? (similarly, how long until the browser's implementation stops trying to talk to the primary and switches to the fallback?) I've suggested before that the keys published in We should probably also study the handoff behavior. If at T=0 the browser checks the IdP, sees no |
@warner we're not doing this yet because we haven't figured out the upgrade behavior completely... but it's worth a careful consideration if you have time! |
@warner is this important enough for beta1? And can it be done quickly enough? If not, we should tag it beta2 |
I don't think it can be done quickly enough: I suspect that getting the handoff right will involve revisiting a lot of code (in particular to have the browser implementation respond to expired pubkeys by re-fetching a new key, and maybe copy some of the verification checks into the browser so it can predict what the verifier will do and fix any problems before delivering the assertion). Also, I think it can wait for beta2, if we don't expect a flood of IdPs to start deploying right away. I'll move it to beta2-req. |
The exclusion policy has to be even stricter than that. Treating the case of "can't fetch declaration of support doc" as "doesnt' support browserid" opens up a side-channel attack: If an attacker has access to the network between verifier and IdP, it can just block the connection attempt, and thus coerce the verifier into allowing the fallback IdP to vouch for the IdP even though there is native support for BrowserID. This is a similar problem to the one DNSSEC faced that eventually forced them to introduce the very complicated NSEC/NSEC3 "Authenticated Denial of Existence" system. This could be mitigated by |
@jonasschneider it's not the DNSSEC situation, as best as I can tell. With DNSSEC, an attacker can block network connectivity of a user's machine, and that would be enough to attack them causing fallback to a less-secure protocol. Here, the attacker would have to block connectivity of the web site it wants to attack and also attack the fallback IdP, which is both harder and doesn't results in far less security. Once we have a better understanding of how this distributed protocol will work/fail, we can make the verifier behave more strictly. But doing so upfront and risking honest users seeing failures doesn't really make sense, in my opinion. |
We're out of dev time for Beta 2. Bumping to Beta 3 |
What's the latest status of this issue? Is it really still open, or did somebody just forget to reference the ticket in the latest pull request? |
Hi! To help us better focus, I'm "closing" all issues that have been open for more than six months. These have been tagged "cleanup-2014" so that we can go back and review them in the future. For more information, check out this thread: http://thread.gmane.org/gmane.comp.mozilla.identity.devel/7394 If you believe this bug is still a major issue for you, please comment, submit a pull request, or discuss it on our mailing list: https://lists.mozilla.org/listinfo/dev-identity Sorry for GitHub notification spam! |
Closing this feels unacceptable for me. I brought it up on the mailing list. Do we have a concrete policy on when not to consult/accept the fallback provider yet? |
Verifiers (ours included) should probably not accept an assertion signed by a fallback if the domain in question is a native Identity Provider.
This mitigates the security risk of browserid.org being compromised, as fraudulent assertions from browserid.org for users with a native Identity Provider would get rejected.
This question has come up two or three times on the mailing list.
The text was updated successfully, but these errors were encountered: