hi Hans

On Sep 4, 2014, at 10:58 AM, Hans Zandbelt <hzandb...@pingidentity.com> wrote:

> Agreed, I see you point about the big providers using exactly the 
> unrestricted flow for which the trust model (by definition) is out of scope 
> of the spec. This may be the reason for the implemented behavior indeed and a 
> security consideration is a good idea for other deployments; there's not much 
> more that can be done.
> 
> But Google also provides explicit registration for API clients (which is 
> where my mind was):
> https://developers.google.com/accounts/docs/OAuth2 (step 1)
> and they would not need to deviate from the spec for that, nor would the spec 
> need to change

I do really struggle to understand your point here :) (at least the "nor would 
the spec need to change part" :)).

Probably I need to explain myself better.
Since Google is “safe” (due the “deviation” from the spec) I would take Google 
as example here (I could point out open redirector in the wild to proof my 
point but I will not do…)

Let’s start from scratch…

If Google would have something like http://www.google.com?goto=attacker.com 
this is without any doubt an open redirector… see  also OWASP 10 [0].

Now if Google would have implemented the spec rfc6749 verbatim something like 

https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=788732372078.apps.googleusercontent.com&scope=WRONG_SCOPE&redirect_uri=http://attacker.com

would have redirect to http://attacker.com.

So why this is not an open redirect ? :)

Now maybe we are saying the same thing but I felt like better explain my point 
:)

regards

antonio

[0] 
https://www.owasp.org/index.php/Top_10_2010-A10-Unvalidated_Redirects_and_Forwards


> 
> Hans.
> 
> On 9/4/14, 9:50 AM, Antonio Sanso wrote:
>> Hi Hans,
>> 
>> I really fail to see how this can be addressed at registration time for 
>> cases where registration is unrestricted (namely all the big Providers)
>> 
>> regards
>> 
>> antonio
>> 
>> On Sep 4, 2014, at 9:47 AM, Hans Zandbelt <hzandb...@pingidentity.com> wrote:
>> 
>>> Classifying like this must also mean that consent should not be stored 
>>> until the client is considered (admin) trusted, and admin policy would 
>>> interfere with user policy.
>>> 
>>> IMHO the security consideration would apply only to dynamically registered 
>>> clients where registration is unrestricted; any other form would involve 
>>> some form of admin/user approval at registration time, overcoming the 
>>> concern at authorization time: there's no auto-redirect flow possible for 
>>> unknown clients.
>>> 
>>> Hans.
>>> 
>>> On 9/4/14, 9:04 AM, Richer, Justin P. wrote:
>>>> I think this advice isn't a bad idea, though it's of course up to the AS
>>>> what an "untrusted" client really is. In practice, this is something
>>>> that was registered by a non-sysadmin type person, either a dynamically
>>>> registered client or something available through self-service
>>>> registration of some type. It's also reasonable that a client, even
>>>> dynamically registered, would be considered "trusted" if enough time has
>>>> passed and enough users have used it without things blowing up.
>>>> 
>>>>  -- Justin
>>>> 
>>>> On Sep 4, 2014, at 1:26 AM, Antonio Sanso <asa...@adobe.com
>>>> <mailto:asa...@adobe.com>> wrote:
>>>> 
>>>>> hi again *,
>>>>> 
>>>>> after thinking a bit further IMHO an alternative for the untrusted
>>>>> clients can also be to always present the consent screen (at least
>>>>> once) before any redirect.
>>>>> Namely all providers I have seen show the consent screen if all the
>>>>> request parameters are correct and if the user accepts the redirect
>>>>> happens.
>>>>> If one of the parameter  (with the exclusion of the client id and
>>>>> redirect uri that are handled differently as for spec) is wrong though
>>>>> the redirect happens without the consent screen being shown..
>>>>> 
>>>>> WDYT?
>>>>> 
>>>>> regards
>>>>> 
>>>>> antonio
>>>>> 
>>>>> On Sep 3, 2014, at 7:54 PM, Antonio Sanso <asa...@adobe.com
>>>>> <mailto:asa...@adobe.com>> wrote:
>>>>> 
>>>>>> Well,
>>>>>> I do not know if this is only dynamic registration...
>>>>>> let’s talk about real use cases, namely e.g. Google , Facebook ,
>>>>>> etc.. is that dynamic client registration? I do not know… :)
>>>>>> 
>>>>>> Said that what the other guys think?  :)
>>>>>> Would this deserve some “spec adjustment” ? I mean there is a reason
>>>>>> if Google is by choice “violating” the spec right? (I assume to avoid
>>>>>> open redirect…)
>>>>>> But other implementers do follow the spec hence they have this open
>>>>>> redirector… and this is not nice IMHO...
>>>>>> 
>>>>>> 
>>>>>> On Sep 3, 2014, at 7:40 PM, Hans Zandbelt <hzandb...@pingidentity.com
>>>>>> <mailto:hzandb...@pingidentity.com>> wrote:
>>>>>> 
>>>>>>> On 9/3/14, 7:14 PM, Antonio Sanso wrote:
>>>>>>>> 
>>>>>>>> On Sep 3, 2014, at 7:10 PM, Hans Zandbelt
>>>>>>>> <hzandb...@pingidentity.com <mailto:hzandb...@pingidentity.com>> wrote:
>>>>>>>> 
>>>>>>>>> Is your concern clients that were registered using dynamic client
>>>>>>>>> registration?
>>>>>>>> 
>>>>>>>> yes
>>>>>>> 
>>>>>>> I think your issue is then with the trust model of dynamic client
>>>>>>> registration; that is left out of scope of the dynreg spec (and the
>>>>>>> concept is not even part of the core spec), but unless you want
>>>>>>> everything to be open (which typically would not be the case), then
>>>>>>> it would involve approval somewhere in the process before the client
>>>>>>> is registered. Without dynamic client registration that approval is
>>>>>>> admin based or resource owner based, depending on use case.
>>>>>>> 
>>>>>>>>> Otherwise the positive case is returning a response to a valid URL
>>>>>>>>> that belongs to a client that was registered explicitly by the
>>>>>>>>> resource owner
>>>>>>>> 
>>>>>>>> well AFAIK the resource owner doesn’t register clients…
>>>>>>> 
>>>>>>> roles can collapse in use cases especially when using dynamic client
>>>>>>> registration
>>>>>>> 
>>>>>>>>> and the negative case is returning an error to that same URL.
>>>>>>>> 
>>>>>>>> the difference is the consent screen… in the positive case you need
>>>>>>>> to approve an app.. for the error case no approval is needed,,,
>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> I fail to see the open redirect.
>>>>>>>> 
>>>>>>>> why?
>>>>>>> 
>>>>>>> because the client and thus the fixed URL are explicitly approved at
>>>>>>> some point
>>>>>>> 
>>>>>>> Hans.
>>>>>>> 
>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> Hans.
>>>>>>>>> 
>>>>>>>>> On 9/3/14, 6:56 PM, Antonio Sanso wrote:
>>>>>>>>>> 
>>>>>>>>>> On Sep 3, 2014, at 6:51 PM, Hans Zandbelt
>>>>>>>>>> <hzandb...@pingidentity.com <mailto:hzandb...@pingidentity.com>
>>>>>>>>>> <mailto:hzandb...@pingidentity.com>> wrote:
>>>>>>>>>> 
>>>>>>>>>>> Let me try and approach this from a different angle: why would you
>>>>>>>>>>> call it an open redirect when an invalid scope is provided and
>>>>>>>>>>> call it
>>>>>>>>>>> correct protocol behavior (hopefully) when a valid scope is
>>>>>>>>>>> provided?
>>>>>>>>>> 
>>>>>>>>>> as specified below in the positive case (namely when the correct
>>>>>>>>>> scope
>>>>>>>>>> is provided) the resource owner MUST approve the app via the consent
>>>>>>>>>> screen (at least once).
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> Hans.
>>>>>>>>>>> 
>>>>>>>>>>> On 9/3/14, 6:46 PM, Antonio Sanso wrote:
>>>>>>>>>>>> hi John,
>>>>>>>>>>>> On Sep 3, 2014, at 6:14 PM, John Bradley <ve7...@ve7jtb.com
>>>>>>>>>>>> <mailto:ve7...@ve7jtb.com>
>>>>>>>>>>>> <mailto:ve7...@ve7jtb.com>
>>>>>>>>>>>> <mailto:ve7...@ve7jtb.com>> wrote:
>>>>>>>>>>>> 
>>>>>>>>>>>>> In the example the redirect_uri is vlid for the attacker.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> The issue is that the AS may be allowing client registrations with
>>>>>>>>>>>>> arbitrary redirect_uri.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> In the spec it is unspecified how a AS validates that a client
>>>>>>>>>>>>> controls the redirect_uri it is registering.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> I think that if anything it may be the registration step that
>>>>>>>>>>>>> needs
>>>>>>>>>>>>> the security consideration.
>>>>>>>>>>>> 
>>>>>>>>>>>> (this is the first time :p) but I do disagree with you. It would be
>>>>>>>>>>>> pretty unpractical to block this at registration time….
>>>>>>>>>>>> IMHO the best approach is the one taken from Google, namely
>>>>>>>>>>>> returning
>>>>>>>>>>>> 400 with the cause of the error..
>>>>>>>>>>>> 
>>>>>>>>>>>> *400.* That’s an error.
>>>>>>>>>>>> 
>>>>>>>>>>>> *Error: invalid_scope*
>>>>>>>>>>>> 
>>>>>>>>>>>> Some requested scopes were invalid. {invalid=[l]}
>>>>>>>>>>>> 
>>>>>>>>>>>> said that I hope you all agree this is an issue in the spec so
>>>>>>>>>>>> far….
>>>>>>>>>>>> 
>>>>>>>>>>>> regards
>>>>>>>>>>>> 
>>>>>>>>>>>> antonio
>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> John B.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> On Sep 3, 2014, at 12:10 PM, Bill Burke <bbu...@redhat.com
>>>>>>>>>>>>> <mailto:bbu...@redhat.com>
>>>>>>>>>>>>> <mailto:bbu...@redhat.com>
>>>>>>>>>>>>> <mailto:bbu...@redhat.com>> wrote:
>>>>>>>>>>>>> 
>>>>>>>>>>>>>> I don't understand.  The redirect uri has to be valid in
>>>>>>>>>>>>>> order for a
>>>>>>>>>>>>>> redirect to happen.  The spec explicitly states this.
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> On 9/3/2014 11:43 AM, Antonio Sanso wrote:
>>>>>>>>>>>>>>> hi *,
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> IMHO providers that strictly follow rfc6749 are vulnerable
>>>>>>>>>>>>>>> to open
>>>>>>>>>>>>>>> redirect.
>>>>>>>>>>>>>>> Let me explain, reading [0]
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> If the request fails due to a missing, invalid, or mismatching
>>>>>>>>>>>>>>> redirection URI, or if the client identifier is missing or
>>>>>>>>>>>>>>> invalid,
>>>>>>>>>>>>>>> the authorization server SHOULD inform the resource owner of the
>>>>>>>>>>>>>>> error and MUST NOT automatically redirect the user-agent to the
>>>>>>>>>>>>>>> invalid redirection URI.
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> If the resource owner denies the access request or if the
>>>>>>>>>>>>>>> request
>>>>>>>>>>>>>>> fails for reasons other than a missing or invalid
>>>>>>>>>>>>>>> redirection URI,
>>>>>>>>>>>>>>> the authorization server informs the client by adding the
>>>>>>>>>>>>>>> following
>>>>>>>>>>>>>>> parameters to the query component of the redirection URI
>>>>>>>>>>>>>>> using the
>>>>>>>>>>>>>>> "application/x-www-form-urlencoded" format, perAppendix B
>>>>>>>>>>>>>>> <https://tools.ietf.org/html/rfc6749#appendix-B>:
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Now let’s assume this.
>>>>>>>>>>>>>>> I am registering a new client to thevictim.com
>>>>>>>>>>>>>>> <http://thevictim.com/>
>>>>>>>>>>>>>>> <http://victim.com/><http://victim.com <http://victim.com/>
>>>>>>>>>>>>>>> <http://victim.com/>>
>>>>>>>>>>>>>>> <http://victim.com <http://victim.com/> <http://victim.com/>>
>>>>>>>>>>>>>>> provider.
>>>>>>>>>>>>>>> I register redirect uriattacker.com <http://uriattacker.com/>
>>>>>>>>>>>>>>> <http://attacker.com/><http://attacker.com
>>>>>>>>>>>>>>> <http://attacker.com/> <http://attacker.com/>>
>>>>>>>>>>>>>>> <http://attacker.com <http://attacker.com/>
>>>>>>>>>>>>>>> <http://attacker.com/>>.
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> According to [0] if I pass e.g. the wrong scope I am redirected
>>>>>>>>>>>>>>> back to
>>>>>>>>>>>>>>> attacker.com <http://attacker.com/>
>>>>>>>>>>>>>>> <http://attacker.com/><http://attacker.com
>>>>>>>>>>>>>>> <http://attacker.com/>
>>>>>>>>>>>>>>> <http://attacker.com/>> <http://attacker.com
>>>>>>>>>>>>>>> <http://attacker.com/> <http://attacker.com/>>.
>>>>>>>>>>>>>>> Namely I prepare a url that is in this form:
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> http://victim.com/authorize?response_type=code&client_id=bc88FitX1298KPj2WS259BBMa9_KCfL3&scope=WRONG_SCOPE&redirect_uri=http://attacker.com
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> and this is works as an open redirector.
>>>>>>>>>>>>>>> Of course in the positive case if all the parameters are
>>>>>>>>>>>>>>> fine this
>>>>>>>>>>>>>>> doesn’t apply since the resource owner MUST approve the app
>>>>>>>>>>>>>>> via the
>>>>>>>>>>>>>>> consent screen (at least once).
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> A solution would be to return error 400 rather than redirect
>>>>>>>>>>>>>>> to the
>>>>>>>>>>>>>>> redirect URI (as some provider e.g. Google do)
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> WDYT?
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> regards
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> antonio
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> [0] https://tools.ietf.org/html/rfc6749#section-4.1.2.1
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>>>> OAuth mailing list
>>>>>>>>>>>>>>> OAuth@ietf.org <mailto:OAuth@ietf.org>
>>>>>>>>>>>>>>> https://www.ietf.org/mailman/listinfo/oauth
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> --
>>>>>>>>>>>>>> Bill Burke
>>>>>>>>>>>>>> JBoss, a division of Red Hat
>>>>>>>>>>>>>> http://bill.burkecentral.com <http://bill.burkecentral.com/>
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>>> OAuth mailing list
>>>>>>>>>>>>>> OAuth@ietf.org <mailto:OAuth@ietf.org> <mailto:OAuth@ietf.org>
>>>>>>>>>>>>>> https://www.ietf.org/mailman/listinfo/oauth
>>>>>>>>>>>>> 
>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>> OAuth mailing list
>>>>>>>>>>>>> OAuth@ietf.org <mailto:OAuth@ietf.org>
>>>>>>>>>>>>> <mailto:OAuth@ietf.org><mailto:OAuth@ietf.org>
>>>>>>>>>>>>> https://www.ietf.org/mailman/listinfo/oauth
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>> OAuth mailing list
>>>>>>>>>>>> OAuth@ietf.org <mailto:OAuth@ietf.org> <mailto:OAuth@ietf.org>
>>>>>>>>>>>> https://www.ietf.org/mailman/listinfo/oauth
>>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> --
>>>>>>>>>>> Hans Zandbelt              | Sr. Technical Architect
>>>>>>>>>>> hzandb...@pingidentity.com <mailto:hzandb...@pingidentity.com>
>>>>>>>>>>> <mailto:hzandb...@pingidentity.com>| Ping
>>>>>>>>>>> Identity
>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> --
>>>>>>>>> Hans Zandbelt              | Sr. Technical Architect
>>>>>>>>> hzandb...@pingidentity.com <mailto:hzandb...@pingidentity.com> |
>>>>>>>>> Ping Identity
>>>>>>>> 
>>>>>>> 
>>>>>>> --
>>>>>>> Hans Zandbelt              | Sr. Technical Architect
>>>>>>> hzandb...@pingidentity.com <mailto:hzandb...@pingidentity.com>| Ping
>>>>>>> Identity
>>>>>> 
>>>>> 
>>>>> _______________________________________________
>>>>> OAuth mailing list
>>>>> OAuth@ietf.org <mailto:OAuth@ietf.org>
>>>>> https://www.ietf.org/mailman/listinfo/oauth
>>>> 
>>> 
>>> --
>>> Hans Zandbelt              | Sr. Technical Architect
>>> hzandb...@pingidentity.com | Ping Identity
>> 
> 
> -- 
> Hans Zandbelt              | Sr. Technical Architect
> hzandb...@pingidentity.com | Ping Identity

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

Reply via email to