No, it doesn’t mention this attack. The issue is that if the redirect_uri is 
not strongly bound to a legitimate client then a malicious app on the user’s 
device can initiate an OAuth flow and impersonate the legitimate client and 
then intercept the response by claiming to handle the redirect_uri. 

We thought this was solved by using claimed https redirect_uris (Universal 
Links on iOS, AppLinks on Android), as these require the webserver to publish a 
document explicitly granting permission for a particular app to claim part of 
its https address space. But it turns out that Android has a hole in this 
because it allows any app to claim to be a web browser and so handle all URIs. 

(I thought this attack was discussed in the security topics bcp, but I can’t 
see it). 

The 2.1 draft currently requires (MUST) ASes to support private-use URL 
schemes, which makes this problem much worse. IMO private-use URL schemes are 
un-securable and shouldn’t be encouraged let alone mandated. 

— Neil

> On 17 Mar 2021, at 05:17, Om <omkarkh...@gmail.com> wrote:
> 
> If I read this correctly, 
> https://tools.ietf.org/html/draft-ietf-oauth-v2-1-01#section-10 the 2.1 draft 
> already addresses this under best practices.
> 
>>> On Mon, Mar 15, 2021 at 3:31 PM Neil Madden <neil.mad...@forgerock.com> 
>>> wrote:
>> I want to come back to this topic as a new thread.
>> 
>> As I understand things, the difference on Android is that any app can claim 
>> to be a generic web browser and so claim to handle all URIs. Whereas on iOS 
>> only specifically vetted apps can claim to be web browsers. Is that correct?
>> 
>> If so, this does seem like a quite large hole in security of OAuth on 
>> Android. Should we be considering a new draft recommending alternative 
>> measures (such as attestation) on Android? Presumably the same issue is also 
>> true on most desktop OS?
>> 
>> — Neil
>> 
>>> On 23 Feb 2021, at 15:20, George Fletcher <gffle...@aol.com> wrote:
>>> 
>>> Unfortunately, in the mobile app world this isn't sufficient. On iOS using 
>>> Universal Links will bind the https redirect_url to your app in a secure 
>>> way but it doesn't work the same way on Android with App Links. There is 
>>> still a problem with "mobile app impersonation". If you have an app that 
>>> you want to ensure is "your" app then the most secure way is to look at 
>>> "app attestation". This is however, way off topic for this thread :)
>>> 
>>>>> On 2/14/21 9:28 AM, Neil Madden wrote:
>>>> Public clients are implicitly authenticated by their ownership of the 
>>>> registered redirect_uri. This why it’s important to use a redirect_uri for 
>>>> which ownership can be reasonably established, such as HTTPS endpoints 
>>>> with exact URI matching. 
>>>> 
>>>> There are more things that can go wrong with that (see the security BCP), 
>>>> but it can be made reasonably secure. 
>>>> 
>>>> — Neil

-- 
ForgeRock values your Privacy <https://www.forgerock.com/your-privacy>
_______________________________________________
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth

Reply via email to