I agree that the error case where there is no UI is the problem, as it can be 
used inside a Iframe. 

However error responses are generally useful.   

OAuth core is silent on how redirect_uri are registered and if they are 
verified. 

Dynamic registration should warn about OAuth errors to redirect_uri from 
untrusted clients.  

For other registration methods we should update the RFC. 

John B. 




Sent from my iPhone

> On Sep 3, 2014, at 7:14 PM, Antonio Sanso <asa...@adobe.com> 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
> 
>> 
>> 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…
> 
> 
>> 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?
> 
>> 
>> 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
> 

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