I think that is probably reasonable advice.  

Presenting a dialog to the user also has the beneficial side effect of removing 
the original referrer from being seen by the party hosting the redirect_uri.  
It is allowing dynamic parameters to be passed in the referrer that is the 
largest security issue in my opinion.   That is how the AS might be used as a 
redirector to attack itself.

John B.

On Sep 4, 2014, at 1:26 AM, Antonio Sanso <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> 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> wrote:
>> 
>>> On 9/3/14, 7:14 PM, Antonio Sanso wrote:
>>>> 
>>>> On Sep 3, 2014, at 7:10 PM, Hans Zandbelt <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>> 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>> 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>> 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://victim.com/><http://victim.com <http://victim.com/>>
>>>>>>>>>>> <http://victim.com <http://victim.com/>>
>>>>>>>>>>> provider.
>>>>>>>>>>> I register redirect uriattacker.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/>>.
>>>>>>>>>>> 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
>>>>>>>>>>> https://www.ietf.org/mailman/listinfo/oauth
>>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> --
>>>>>>>>>> Bill Burke
>>>>>>>>>> JBoss, a division of Red Hat
>>>>>>>>>> http://bill.burkecentral.com
>>>>>>>>>> 
>>>>>>>>>> _______________________________________________
>>>>>>>>>> OAuth mailing list
>>>>>>>>>> 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
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> _______________________________________________
>>>>>>>> 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 <mailto:hzandb...@pingidentity.com>| Ping
>>>>>>> Identity
>>>>>> 
>>>>> 
>>>>> --
>>>>> Hans Zandbelt              | Sr. Technical Architect
>>>>> hzandb...@pingidentity.com | Ping Identity
>>>> 
>>> 
>>> -- 
>>> Hans Zandbelt              | Sr. Technical Architect
>>> hzandb...@pingidentity.com | Ping Identity
>> 
> 

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