Re: [OAUTH-WG] open redirect in rfc6749
Hans Zandbelt <hzandbelt@pingidentity.com> Wed, 03 September 2014 17:11 UTC
Return-Path: <hzandbelt@pingidentity.com>
X-Original-To: oauth@ietfa.amsl.com
Delivered-To: oauth@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 4530F1A0359 for <oauth@ietfa.amsl.com>; Wed, 3 Sep 2014 10:11:03 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.201
X-Spam-Level:
X-Spam-Status: No, score=-4.201 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, SPF_PASS=-0.001] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id bT9NUfVZOpy4 for <oauth@ietfa.amsl.com>; Wed, 3 Sep 2014 10:10:56 -0700 (PDT)
Received: from na3sys009aog118.obsmtp.com (na3sys009aog118.obsmtp.com [74.125.149.244]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id DA17A1A0391 for <oauth@ietf.org>; Wed, 3 Sep 2014 10:10:22 -0700 (PDT)
Received: from mail-wg0-f41.google.com ([74.125.82.41]) (using TLSv1) by na3sys009aob118.postini.com ([74.125.148.12]) with SMTP ID DSNKVAdLfmeBBHkpev+Pzsp7NBMJDmKw7Bih@postini.com; Wed, 03 Sep 2014 10:10:23 PDT
Received: by mail-wg0-f41.google.com with SMTP id l18so8761504wgh.0 for <oauth@ietf.org>; Wed, 03 Sep 2014 10:10:21 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to :cc:subject:references:in-reply-to:content-type :content-transfer-encoding; bh=3Fwm73udAtn9i/h2uZTHVpl5xX1YYdQDDGRio/UxA7Q=; b=IePIIV/qRM1pwypElpIz8lJjMMcF7v4okZ73L1VmN/0Yb31ct/Gkp9Y40YyAlyu0KS cY8bW1dSc0aR+vW1HxzdTHd9Lk0x6BlRImCooZL4cUUaQZTJaKq6DBFzqtSmsvQDvPMP Gn4/Uq3jqIewha9z8TMk02j2C0hOy7fDMquBnLU7O9SDi9Iopdv6Cp6gXvfC8y25vDIE bjpotOtxyb14wiafQNPBlnDLjwr3yGgB4C8xxgv4UuQjVDNQkDg35QNEhTAMH98oKpEG PjwMMiAvfOAAHw8jMjy2ISEJ8CXj8rG7uqcqAlzyRgWtM5d8F4T/zJS9pF7LJ3y4uHaK 3r8A==
X-Gm-Message-State: ALoCoQnaapWinK6BrBXNxXlIsU5mdE3rvYPn6kui0DgQRIS51WJn7Wh+OaDp7l4ooWw6f7ll381RD4ypPzBezqhA0UyuLajWUCUNuTeTT3BcCrezK9Fjv65x947IH65IJ8lm6RCRbyXO
X-Received: by 10.181.13.116 with SMTP id ex20mr37651178wid.31.1409764221172; Wed, 03 Sep 2014 10:10:21 -0700 (PDT)
X-Received: by 10.181.13.116 with SMTP id ex20mr37651146wid.31.1409764220984; Wed, 03 Sep 2014 10:10:20 -0700 (PDT)
Received: from [192.168.10.222] (5ED52E8A.cm-7-6a.dynamic.ziggo.nl. [94.213.46.138]) by mx.google.com with ESMTPSA id ew1sm16626795wjb.31.2014.09.03.10.10.19 for <multiple recipients> (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Wed, 03 Sep 2014 10:10:20 -0700 (PDT)
Message-ID: <54074B7A.7080907@pingidentity.com>
Date: Wed, 03 Sep 2014 19:10:18 +0200
From: Hans Zandbelt <hzandbelt@pingidentity.com>
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
To: Antonio Sanso <asanso@adobe.com>
References: <756EEB25-89E8-4445-9DA0-5522787D51AB@adobe.com> <54073D6F.6070203@redhat.com> <7A3A12C9-2A3B-48B1-BD5D-FD467EA03EE8@ve7jtb.com> <58148F80-C2DD-45C5-8D6F-CED74A90AA75@adobe.com> <5407470B.2010904@pingidentity.com> <25055629-26A9-478D-AE7A-3C295E3166EE@adobe.com>
In-Reply-To: <25055629-26A9-478D-AE7A-3C295E3166EE@adobe.com>
Content-Type: text/plain; charset="windows-1252"; format="flowed"
Content-Transfer-Encoding: 8bit
Archived-At: http://mailarchive.ietf.org/arch/msg/oauth/OD0QPc_8yVyGe7OgfsX7mcs8ROY
Cc: "oauth@ietf.org" <oauth@ietf.org>
Subject: Re: [OAUTH-WG] open redirect in rfc6749
X-BeenThere: oauth@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: OAUTH WG <oauth.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/oauth>, <mailto:oauth-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/oauth/>
List-Post: <mailto:oauth@ietf.org>
List-Help: <mailto:oauth-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/oauth>, <mailto:oauth-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 03 Sep 2014 17:11:06 -0000
Is your concern clients that were registered using dynamic client registration? 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 and the negative case is returning an error to that same URL. I fail to see the open redirect. Hans. On 9/3/14, 6:56 PM, Antonio Sanso wrote: > > On Sep 3, 2014, at 6:51 PM, Hans Zandbelt <hzandbelt@pingidentity.com > <mailto:hzandbelt@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 <ve7jtb@ve7jtb.com >>> <mailto:ve7jtb@ve7jtb.com> >>> <mailto:ve7jtb@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 <bburke@redhat.com >>>> <mailto:bburke@redhat.com> >>>> <mailto:bburke@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 >> hzandbelt@pingidentity.com <mailto:hzandbelt@pingidentity.com>| Ping >> Identity > -- Hans Zandbelt | Sr. Technical Architect hzandbelt@pingidentity.com | Ping Identity
- [OAUTH-WG] open redirect in rfc6749 Antonio Sanso
- Re: [OAUTH-WG] open redirect in rfc6749 Bill Burke
- Re: [OAUTH-WG] open redirect in rfc6749 John Bradley
- Re: [OAUTH-WG] open redirect in rfc6749 Antonio Sanso
- Re: [OAUTH-WG] open redirect in rfc6749 Antonio Sanso
- Re: [OAUTH-WG] open redirect in rfc6749 Hans Zandbelt
- Re: [OAUTH-WG] open redirect in rfc6749 Antonio Sanso
- Re: [OAUTH-WG] open redirect in rfc6749 Hans Zandbelt
- Re: [OAUTH-WG] open redirect in rfc6749 Antonio Sanso
- Re: [OAUTH-WG] open redirect in rfc6749 Hans Zandbelt
- Re: [OAUTH-WG] open redirect in rfc6749 John Bradley
- Re: [OAUTH-WG] open redirect in rfc6749 Antonio Sanso
- Re: [OAUTH-WG] open redirect in rfc6749 Hans Zandbelt
- Re: [OAUTH-WG] open redirect in rfc6749 Phil Hunt
- Re: [OAUTH-WG] open redirect in rfc6749 Takahiko Kawasaki
- Re: [OAUTH-WG] open redirect in rfc6749 Antonio Sanso
- Re: [OAUTH-WG] open redirect in rfc6749 Phil Hunt
- Re: [OAUTH-WG] open redirect in rfc6749 Phil Hunt
- Re: [OAUTH-WG] open redirect in rfc6749 Phil Hunt
- Re: [OAUTH-WG] open redirect in rfc6749 Antonio Sanso
- Re: [OAUTH-WG] open redirect in rfc6749 Antonio Sanso
- Re: [OAUTH-WG] open redirect in rfc6749 Antonio Sanso
- Re: [OAUTH-WG] open redirect in rfc6749 John Bradley
- Re: [OAUTH-WG] open redirect in rfc6749 Richer, Justin P.
- Re: [OAUTH-WG] open redirect in rfc6749 Hans Zandbelt
- Re: [OAUTH-WG] open redirect in rfc6749 Antonio Sanso
- Re: [OAUTH-WG] open redirect in rfc6749 Hans Zandbelt
- Re: [OAUTH-WG] open redirect in rfc6749 Antonio Sanso
- Re: [OAUTH-WG] open redirect in rfc6749 Hans Zandbelt
- Re: [OAUTH-WG] open redirect in rfc6749 Hans Zandbelt
- Re: [OAUTH-WG] open redirect in rfc6749 Antonio Sanso
- Re: [OAUTH-WG] open redirect in rfc6749 John Bradley
- Re: [OAUTH-WG] open redirect in rfc6749 Antonio Sanso
- Re: [OAUTH-WG] open redirect in rfc6749 Hans Zandbelt
- Re: [OAUTH-WG] open redirect in rfc6749 John Bradley
- Re: [OAUTH-WG] open redirect in rfc6749 Bill Burke
- Re: [OAUTH-WG] open redirect in rfc6749 Antonio Sanso
- Re: [OAUTH-WG] open redirect in rfc6749 Hans Zandbelt
- Re: [OAUTH-WG] open redirect in rfc6749 Antonio Sanso
- Re: [OAUTH-WG] open redirect in rfc6749 Richer, Justin P.
- Re: [OAUTH-WG] open redirect in rfc6749 Antonio Sanso
- Re: [OAUTH-WG] open redirect in rfc6749 Phil Hunt
- Re: [OAUTH-WG] open redirect in rfc6749 Antonio Sanso
- Re: [OAUTH-WG] open redirect in rfc6749 John Bradley
- Re: [OAUTH-WG] open redirect in rfc6749 Phil Hunt
- Re: [OAUTH-WG] open redirect in rfc6749 John Bradley
- Re: [OAUTH-WG] open redirect in rfc6749 Antonio Sanso
- Re: [OAUTH-WG] open redirect in rfc6749 Phil Hunt
- Re: [OAUTH-WG] open redirect in rfc6749 Antonio Sanso
- Re: [OAUTH-WG] open redirect in rfc6749 Richer, Justin P.
- Re: [OAUTH-WG] open redirect in rfc6749 Phil Hunt
- Re: [OAUTH-WG] open redirect in rfc6749 John Bradley
- Re: [OAUTH-WG] open redirect in rfc6749 Torsten Lodderstedt
- Re: [OAUTH-WG] open redirect in rfc6749 Hans Zandbelt
- Re: [OAUTH-WG] open redirect in rfc6749 Sergey Beryozkin
- Re: [OAUTH-WG] open redirect in rfc6749 Antonio Sanso
- Re: [OAUTH-WG] open redirect in rfc6749 Antonio Sanso
- Re: [OAUTH-WG] open redirect in rfc6749 Antonio Sanso
- Re: [OAUTH-WG] open redirect in rfc6749 Sergey Beryozkin
- Re: [OAUTH-WG] open redirect in rfc6749 Bill Burke
- Re: [OAUTH-WG] open redirect in rfc6749 Antonio Sanso
- Re: [OAUTH-WG] open redirect in rfc6749 Antonio Sanso