I agree, common origin mapping for OAuth would be a horrible road to go down.   
 Pattern matching redirect URI has been a thorn in Facebook’s side that has 
never worked.  

At best it would be security theatre, and cripple many legitimate use cases.

John B.

> On Jan 27, 2016, at 11:02 PM, Justin Richer <jric...@mit.edu> wrote:
> 
> Definitely the latter. I don’t think the requirement actually helps secure 
> things in practice and artificially limits things otherwise.
> 
>  — Justin
> 
>> On Jan 27, 2016, at 7:19 PM, Nat Sakimura <sakim...@gmail.com 
>> <mailto:sakim...@gmail.com>> wrote:
>> 
>> You mean the string comparison on authority section would allow execution of 
>> some code? Or are you suggesting that not checking the path portion would 
>> allow the attacker to plant something on the other paths on the host? 
>> 
>> Yes, the later is possible especially when there are user generated content 
>> on the same host, and if we are worried on it, we would have to do the 
>> discovery. 
>> 
>> Nat 
>> 
>> 2016年1月28日(木) 5:45 Justin Richer <jric...@mit.edu <mailto:jric...@mit.edu>>:
>> Unless I’m missing something, requiring the authority section to match 
>> discounts attackers being able to deploy executable code on a path. This 
>> kind of hole was exploited in a number of Facebook hacks. Yes I’m aware that 
>> those were dealing with redirect URIs but we’re talking about the same kind 
>> of sub-component URI matching here, and I can only see it getting us into 
>> trouble.
>> 
>>  — Justin
>> 
>> 
>>> On Jan 27, 2016, at 1:15 PM, Nat Sakimura <sakim...@gmail.com 
>>> <mailto:sakim...@gmail.com>> wrote:
>>> 
>>> yeah. 
>>> 
>>> But for Google, Microsoft, etc., every RP can whitelist, cannot they? ;-)
>>> 
>>> Otherwise, for a code phishing attack, you need to implement discovery of 
>>> some sort. My thinking before reading your email was: 
>>> 
>>> if( authority(authz_ep)==authority(token_ep) ) {
>>>    get_token(token_ep, code, client_credential);
>>> } else {
>>>     get_token(token_ep_from_discovery(), code, client_credential);
>>> } 
>>> 
>>> where token_ep_from_discovery() either returns the value of the 
>>> toke_endpoint member from .well-known/openid-configuration OR the value of 
>>> turi parameter in the query. 
>>> 
>>> 2016年1月28日(木) 2:03 Brian Campbell <bcampb...@pingidentity.com 
>>> <mailto:bcampb...@pingidentity.com>>:
>>> There's at least one smallish deployment that has a different authority for 
>>> the Authorization Endpoint and the Token Endpoint.
>>> 
>>> from https://accounts.google.com/.well-known/openid-configuration 
>>> <https://accounts.google.com/.well-known/openid-configuration> :
>>> 
>>> {
>>>  "issuer": "https://accounts.google.com <https://accounts.google.com/>",
>>>  "authorization_endpoint": "https://accounts.google.com/o/oauth2/v2/auth 
>>> <https://accounts.google.com/o/oauth2/v2/auth>",
>>>  "token_endpoint": "https://www.googleapis.com/oauth2/v4/token 
>>> <https://www.googleapis.com/oauth2/v4/token>",
>>>  "userinfo_endpoint": "https://www.googleapis.com/oauth2/v3/userinfo 
>>> <https://www.googleapis.com/oauth2/v3/userinfo>",
>>>  "revocation_endpoint": "https://accounts.google.com/o/oauth2/revoke 
>>> <https://accounts.google.com/o/oauth2/revoke>",
>>>  "jwks_uri": "https://www.googleapis.com/oauth2/v3/certs 
>>> <https://www.googleapis.com/oauth2/v3/certs>",
>>>  ...
>>> }
>>> 
>>> 
>>> On Wed, Jan 27, 2016 at 6:30 AM, John Bradley <ve7...@ve7jtb.com 
>>> <mailto:ve7...@ve7jtb.com>> wrote:
>>> It think requiring a common authority segment for the authorization 
>>> endpoint and the token endpoint might work in common cases, but there are 
>>> legitimate cases where the URI of the Authorization endpoint might be a 
>>> alias in the case of multi tenants, all using a common token endpoint.
>>> 
>>> The larger problem would be the RS, it is not uncommon to have the AS and 
>>> RS in different domains,  so with bearer tokens unless you make the same 
>>> authority restriction for RS then you are not really stoping the attacker.  
>>>  They can get the AT by impersonating the RS.
>>> 
>>> I think trying to enforce a common origin policy over OAuth would be a bad 
>>> direction to go.
>>> 
>>> I understand that it seems like a easy fix on the surface, and it works for 
>>> most of the things people are using OAuth for today, but would be quite 
>>> limiting over the long term.
>>> 
>>> John B.
>>> > On Jan 27, 2016, at 7:31 AM, sakim...@gmail.com 
>>> > <mailto:sakim...@gmail.com> wrote:
>>> >
>>> > Hi Hans,
>>> >
>>> > Sorry, I mixed up the IdP mix-up attack and the code phishing attack.
>>> >
>>> > Mandating the Authorization and Token Endpoint being in the same
>>> > authority would solve the later without changing the wire protocol.
>>> >
>>> > For AS mix-up attack, mandating the client to change the redirection 
>>> > endpoint
>>> > per AS would solve the problem without change the wire protocol.
>>> >
>>> > If these are not possible, then we would have to look at changing the
>>> > wire protocol. The solution that solves the both cases must
>>> > provide the token endpoint URI authoritatively, which means
>>> > you have to mandate some variation of discovery mandatory.
>>> >
>>> > Nat
>>> >
>>> >
>>> > At 2016-01-27 17:01  Hans Zandbelt wrote:
>>> >> I don't see how that can deal with the specific form of the attack
>>> >> where the Client would have sent the authorization request to the
>>> >> legitimate authorization endpoint of a compromised AS and believes it
>>> >> gets the response from that, where in fact it was redirected away to
>>> >> the good AS.
>>> >> IOW, I don't think this is so much about mixing up endpoints where to
>>> >> send stuff to, but mixing up the entity/endpoint from which the Client
>>> >> believes the response was received. That may just be terminology
>>> >> though.
>>> >> Bottom line as far as I see is that a wire protocol element in the
>>> >> response is needed to tell the Client who issued it, regardless of how
>>> >> the Client deals with configuration of the AS information.
>>> >> Hans.
>>> >> On 1/27/16 1:31 AM, Nat Sakimura wrote:
>>> >>> So, is there a lot of cases that the authority section of the Good AS's
>>> >>> Authorization Endpoint and the Token Endpoints are different?
>>> >>> If not, then requiring that they are the same seems to virtually remove
>>> >>> the attack surface for the mix-up related attacks. It does not introduce
>>> >>> new parameter nor discovery. If it can be done, it probably is not worth
>>> >>> adding a new wire protocol element to mitigate the mix-up variants.
>>> >
>>> >
>>> > _______________________________________________
>>> > OAuth mailing list
>>> > OAuth@ietf.org <mailto:OAuth@ietf.org>
>>> > https://www.ietf.org/mailman/listinfo/oauth 
>>> > <https://www.ietf.org/mailman/listinfo/oauth>
>>> 
>>> 
>>> _______________________________________________
>>> OAuth mailing list
>>> OAuth@ietf.org <mailto:OAuth@ietf.org>
>>> https://www.ietf.org/mailman/listinfo/oauth 
>>> <https://www.ietf.org/mailman/listinfo/oauth>
>>> 
>>> 
>>> _______________________________________________
>>> OAuth mailing list
>>> OAuth@ietf.org <mailto:OAuth@ietf.org>
>>> https://www.ietf.org/mailman/listinfo/oauth 
>>> <https://www.ietf.org/mailman/listinfo/oauth>
>> 
> 

Attachment: smime.p7s
Description: S/MIME cryptographic signature

_______________________________________________
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth

Reply via email to