Re: [OAUTH-WG] Standard URL parameter for mitigating RFC6819's threat 4.6.4?

John Bradley <ve7jtb@ve7jtb.com> Mon, 16 March 2015 18:39 UTC

Return-Path: <ve7jtb@ve7jtb.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 C0E301A8A64 for <oauth@ietfa.amsl.com>; Mon, 16 Mar 2015 11:39:37 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.6
X-Spam-Level:
X-Spam-Status: No, score=-2.6 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, 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 ATBSkmxkdk-f for <oauth@ietfa.amsl.com>; Mon, 16 Mar 2015 11:39:34 -0700 (PDT)
Received: from mail-qc0-f174.google.com (mail-qc0-f174.google.com [209.85.216.174]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 74F191A8A3D for <oauth@ietf.org>; Mon, 16 Mar 2015 11:39:34 -0700 (PDT)
Received: by qcaz10 with SMTP id z10so52392819qca.1 for <oauth@ietf.org>; Mon, 16 Mar 2015 11:39:33 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:content-type:mime-version:subject:from :in-reply-to:date:cc:message-id:references:to; bh=DWPW40F183roORGCYWRyo46ylIV06ND0d89SNdTP314=; b=l+idS0Cs3Ip8o084t0voo6M09/uffmAf0NqTSJGGiDxlWA0nABVNyjcAnPKt3yfYNk Xs+KCEkSEmf68y6LDS9//mnrYUfgEIvWjRS6pq3aoa8LEkjaEAb1ryb03iS8vVoa0Smp FZfqlfRy6zx/BF+cxZD8t70c6cVHKcRxYda1lf9Hix7OVV7NnkMOVLqKepV/aJ/qLSoX 8XbDj4jWQFGbZf/Y1BRYLsfswBMQyaK+iClmsXDwC+9BmqjkoCFvtWgD46BnkuyPc2gw 4jtmnViyHnenYwLMbYv0DKbWpEvB+sLQ5OLC9zfaTx+kRdxCFzaYOxNWI1UbkjI+MIom amUQ==
X-Gm-Message-State: ALoCoQkaxEnKlHXx6bjkLGkpdj2e8UKqkpyGwFUU8QPhO8oNU74BWjKgj0qaGKK7H1qfICkyFa+f
X-Received: by 10.140.107.75 with SMTP id g69mr74962337qgf.103.1426531173448; Mon, 16 Mar 2015 11:39:33 -0700 (PDT)
Received: from [192.168.8.100] ([181.202.31.7]) by mx.google.com with ESMTPSA id c4sm990291qgf.17.2015.03.16.11.39.30 (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Mon, 16 Mar 2015 11:39:32 -0700 (PDT)
Content-Type: multipart/signed; boundary="Apple-Mail=_55448752-16BE-49BC-98C3-13D96CB7CC8A"; protocol="application/pkcs7-signature"; micalg=sha1
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2070.6\))
From: John Bradley <ve7jtb@ve7jtb.com>
In-Reply-To: <1BEB7197-0DCC-4062-8F43-5AC9F8E8967C@lodderstedt.net>
Date: Mon, 16 Mar 2015 15:39:25 -0300
Message-Id: <C66B4CD6-0126-4373-8931-F054121DBD05@ve7jtb.com>
References: <CANSMLKH0s==3bGt6DgFF8XycvFWcxnK6XeYo3tHb1scecZDnKw@mail.gmail.com> <5505BED5.50307@lodderstedt.net> <7E8DE4BB-A51C-4B8C-A83C-6ED40433A92F@ve7jtb.com> <CA+k3eCS6KufHUs3JxpPtPN+qMSKV6DfVWpz+G=TRO3jdkcgqnA@mail.gmail.com> <6D0DCA57-579A-47E8-85CE-2C8D32B9DA56@martin-blanck.com> <1BEB7197-0DCC-4062-8F43-5AC9F8E8967C@lodderstedt.net>
To: Torsten Lodderstedt <torsten@lodderstedt.net>
X-Mailer: Apple Mail (2.2070.6)
Archived-At: <http://mailarchive.ietf.org/arch/msg/oauth/31hyp3pJqkBh9nBvJ6p_JHSsRsY>
Cc: "oauth@ietf.org WG" <oauth@ietf.org>, Matt Randall <matthew.a.randall@gmail.com>, Dixie Baker <Dixie.Baker@martin-blanck.com>
Subject: Re: [OAUTH-WG] Standard URL parameter for mitigating RFC6819's threat 4.6.4?
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: Mon, 16 Mar 2015 18:39:37 -0000

Brian and I were talking about "aud" used as a parameter to the token endpoint when using a code or refresh token to indicate what RS the resulting AT will be used at.

Sending a audience in the AT wouldn't help prevent the attack being discussed,  though it may stop other sorts of attacks if the RS can tell if a AT was issued for it or another RS.

In PoP having the AS check that you are sending the AT to the correct RS is less important as the AT if stolen can't be used to replay against the real AS.

Though depending on the app the bogus RS feeding the app the wrong info may well be a problem as well.

John B.

> On Mar 16, 2015, at 2:40 PM, Torsten Lodderstedt <torsten@lodderstedt.net> wrote:
> 
> I don't think putting an aud into an AT will help to prevent counterfeit RSs (as long as the aud is nit directly derived from the original URL used by the client to invoke the counterfeit RS. as long as the aud is a symbolic name of any kind, the counterfeit RS will accept ATs for the legitimate RS and just (ab)use it.
> 
> POP on the contrary helps since the counterfeit RS, in order to send a message to the legitimate RS, needs to produce a new digitally signed message using the correct secret, which it doesn't know.
> 
> kind regards,
> Torsten.
> 
> 
> 
> Am 16.03.2015 um 17:40 schrieb Dixie Baker <Dixie.Baker@martin-blanck.com <mailto:Dixie.Baker@martin-blanck.com>>:
> 
>> Using the "aud" parameter makes sense to me.  Good suggestion.
>> 
>> Authenticating the client to the RS would not address the counterfeit RS threat. 
>> 
>> -Dixie
>> 
>>  
>> Dixie B. Baker, Ph.D.
>> Senior Partner
>> Martin, Blanck and Associates
>> Office (Redondo Beach, CA):  310-791-9671
>> Mobile:  310-279-2579
>> 
>> On Mar 16, 2015, at 6:43 AM, Brian Campbell <bcampbell@pingidentity.com <mailto:bcampbell@pingidentity.com>> wrote:
>> 
>>> We've used "aud" (optionally) with OAuth 2 and bearer tokens to help identify the RS to whom the AT should be issued. It is useful but it's mostly about getting format/content/etc of the AT correct for the RS rather than it is about preventing possible AT leaks.
>>> 
>>> I do think an "aud(iance)" parameter at both token and authorization endpoints would have utility beyond the POP work. So defining it independently might make sense. 
>>> 
>>> On Sun, Mar 15, 2015 at 11:34 AM, John Bradley <ve7jtb@ve7jtb.com <mailto:ve7jtb@ve7jtb.com>> wrote:
>>> In POP key distribution we do introduce a "audiance" parameter to the token_endpoint. https://tools.ietf.org/html/draft-ietf-oauth-pop-key-distribution-01#section-3.1 <https://tools.ietf.org/html/draft-ietf-oauth-pop-key-distribution-01#section-3.1>
>>> 
>>> It would be possible to have a small spec to define using "aud" with bearer tokens, however that would be undefined behaviour at this point.
>>> 
>>> I don't know of any clients that would try to access a RS server and then besed on the error response try and get a access token from the AS specified in the error.
>>> 
>>> In POP we are trying to both protect agains that attack and more common ones like doing a MiM to intercept the AT or the RS being hacked and leaking the token.
>>> 
>>> Using "aud" with bearer tokens would be useful, but probably won't stop the majority of possible AT leaks.
>>> 
>>> John B.
>>> 
>>> 
>>>> On Mar 15, 2015, at 2:18 PM, Torsten Lodderstedt <torsten@lodderstedt.net <mailto:torsten@lodderstedt.net>> wrote:
>>>> 
>>>> Hi Josh,
>>>> 
>>>> I'm not aware of a common practice to use such a parameter. The WG is instead heading towards authenticated requests to the resource server (see https://tools.ietf.org/html/rfc6819#section-5.4.2 <https://tools.ietf.org/html/rfc6819#section-5.4.2>). 
>>>> 
>>>> Please take a look onto http://tools.ietf.org/html/draft-ietf-oauth-pop-architecture <http://tools.ietf.org/html/draft-ietf-oauth-pop-architecture> and further drafts on this topic.
>>>> 
>>>> kind regards,
>>>> Torsten.
>>>> 
>>>> Am 03.03.2015 um 18:27 schrieb Josh Mandel:
>>>>> Hi All,
>>>>> 
>>>>> In section 4.6.4 ("Threat: Access Token Phishing by Counterfeit Resource Server"), RFC6819 describes a threat where a counterfeit resource server tricks a client into obtaining and sharing an access token from a legitimate authorization server. One of the proposed mitigations involves: "telling the authorization server about the resource server endpoint URL in the authorization process."
>>>>> 
>>>>> In other words, this mitigation would ask the client to pass an additional parameter when redirecting to the Authorization server's "authorize" URL, effectively something like:
>>>>> 
>>>>> https://auth-server/authorize <https://auth-server/authorize>?
>>>>> response_type=code&
>>>>> client_id=123&
>>>>> state=456&
>>>>> scope=read-all&
>>>>> redirect_uri=https://app-server/after-auth& <https://app-server/after-auth&>
>>>>> resource_server_that_told_me_to_authorize_here=https://attacker.com <https://attacker.com/>
>>>>> 
>>>>> (And if the authorization server saw a value it didn't like in the final parameter, it would reject the request.)
>>>>> 
>>>>> This is obviously not appropriate in every authorization scenario, but it is useful anytime there's a discovery process by which apps learn about authorization servers from resource servers. Since it's something of a common need, I wanted to see if there was any common practice in how to name this parameter, or whether it's worth registering a standard extension at http://www.iana.org/assignments/oauth-parameters/oauth-parameters.xhtml <http://www.iana.org/assignments/oauth-parameters/oauth-parameters.xhtml> . (I don't see one there now -- possibly I'm just missing it.)
>>>>> 
>>>>> If so, what should it be called? The name I used in the example above is a bit verbose :-)
>>>>> 
>>>>> Best,
>>>>> 
>>>>>   Josh
>>>>> 
>>>>> 
>>>>> _______________________________________________
>>>>> OAuth mailing list
>>>>> OAuth@ietf.org <mailto:OAuth@ietf.org>
>>>>> https://www.ietf.org/mailman/listinfo/oauth <https://www.ietf.org/mailman/listinfo/oauth>
>>>> 
>>>> _______________________________________________
>>>> OAuth mailing list
>>>> OAuth@ietf.org <mailto:OAuth@ietf.org>
>>>> https://www.ietf.org/mailman/listinfo/oauth <https://www.ietf.org/mailman/listinfo/oauth>
>>> 
>>> 
>>> _______________________________________________
>>> OAuth mailing list
>>> OAuth@ietf.org <mailto:OAuth@ietf.org>
>>> https://www.ietf.org/mailman/listinfo/oauth <https://www.ietf.org/mailman/listinfo/oauth>
>>> 
>>> 
>>