Re: [OAUTH-WG] OAuth Bearer authentication - for proxies?
Amos Jeffries <squid3@treenet.co.nz> Wed, 04 January 2012 01:30 UTC
Return-Path: <squid3@treenet.co.nz>
X-Original-To: oauth@ietfa.amsl.com
Delivered-To: oauth@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id B32E821F84B3 for <oauth@ietfa.amsl.com>; Tue, 3 Jan 2012 17:30:41 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.51
X-Spam-Level:
X-Spam-Status: No, score=-0.51 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, FH_HOST_EQ_D_D_D_D=0.765, HOST_EQ_STATIC=1.172, SARE_SUB_ENC_UTF8=0.152]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id YPI5R0pEhj-2 for <oauth@ietfa.amsl.com>; Tue, 3 Jan 2012 17:30:41 -0800 (PST)
Received: from treenet.co.nz (ip-58-28-153-233.static-xdsl.xnet.co.nz [58.28.153.233]) by ietfa.amsl.com (Postfix) with ESMTP id CFAD421F8442 for <oauth@ietf.org>; Tue, 3 Jan 2012 17:30:40 -0800 (PST)
Received: by treenet.co.nz (Postfix, from userid 33) id 06551E70EA; Wed, 4 Jan 2012 14:30:02 +1300 (NZDT)
To: igor.faynberg@alcatel-lucent.com
X-PHP-Originating-Script: 0:func.inc
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"; format="flowed"
Content-Transfer-Encoding: 7bit
Date: Wed, 04 Jan 2012 14:30:01 +1300
From: Amos Jeffries <squid3@treenet.co.nz>
In-Reply-To: <4F039069.6090504@alcatel-lucent.com>
References: "<301AF9A4-395C-4B5A-8610-CD86BEE1401A@mnot.net>" <abe2950b95b27818e9e6ebddc99a7b7e@treenet.co.nz> <4EFE7E22.9010200@treenet.co.nz> <4F014DF3.9030105@alcatel-lucent.com> <4F016837.3040904@treenet.co.nz> <4F018048.1020900@lodderstedt.net> <4F019E09.3070007@treenet.co.nz> <4F022CFA.80907@alcatel-lucent.com> <4F024DA0.7080707@treenet.co.nz> <4F039069.6090504@alcatel-lucent.com>
Message-ID: <5cdce7b5590ab91952afb70b2cb81694@treenet.co.nz>
X-Sender: squid3@treenet.co.nz
User-Agent: Roundcube Webmail/0.5.1
Cc: ietf-http-wg@w3.org, oauth@ietf.org
Subject: Re: [OAUTH-WG] OAuth Bearer authentication - for proxies?
X-BeenThere: oauth@ietf.org
X-Mailman-Version: 2.1.12
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, 04 Jan 2012 01:30:41 -0000
On Tue, 03 Jan 2012 18:34:01 -0500, Igor Faynberg wrote: > Well, this exchange made me read all I could find on reverse proxies. > Now I understand--and agree with--the last statement of AYJ: '"the > server" is a proxy. ' > > But my understanding is that the proxy (which DNS pointed me to when > I tried to get to my bank) belongs in the domain "mybank," and this > proxy had been issued a valid certificate--which I had ascertained in > the process of authentication. So, the end result is that the proxy > is > part of the bank. If we expect it to be harmful to the bank--so we > could the "server" itself as well as any bank's employee. It would > be > the bank replaying things to itself, right? I'm not sure we quite match ideas on this. The problem is between the client and proxy. Not between the proxy and the server. Here is a transaction sequence for that bank: client 1 to proxy: GET /?oauth_token=FOO HTTP/1.1 Host: bank.example.com proxy to server: GET /?oauth_token=FOO HTTP/1.1 Host: bank.example.com (server verifies the token "FOO" is valid for client 1 through the proxy) bank server to proxy: HTTP/1.1 200 OK stuff proxy to client 1: HTTP/1.1 200 OK stuff .. some time passes. The token "FOO" expires, gets replaced by token "FOO-2". client 1 to proxy: GET /?oauth_token=FOO-2 HTTP/1.1 Host: bank.example.com proxy to server: GET /?oauth_token=FOO-2 HTTP/1.1 Host: bank.example.com (server verifies the token "FOO-2" is valid for client 1 through the proxy) bank server to proxy: HTTP/1.1 200 OK other-stuff proxy to client 1: HTTP/1.1 200 OK other-stuff Attacker processes some URL records they somehow swiped from the client transactions... attacker to proxy: GET /?oauth_token=FOO HTTP/1.1 Host: bank.example.com proxy to attacker: HTTP/1.1 200 OK stuff ... Oops. attacker to proxy: GET /?oauth_token=FOO-2 HTTP/1.1 Host: bank.example.com proxy to attacker: HTTP/1.1 200 OK other-stuff ... Oops. I assume for clarity that the server and client 1 have both correctly implemented Bearer and are performing proper validation and expiry on the query-string tokens. The mitigation is for the server which implements Bearer to be sending Cache-Control with one of the values: no-store, private, proxy-revalidate and/or must-revalidate. AYJ > > Then it is the bank's problem, not OAuth's as far as I am > concerned... > > Igor > > On 1/2/2012 7:36 PM, Amos Jeffries wrote: >> On 1/2/2012 7:07 AM, Amos Jeffries wrote: >>>> On 2/01/2012 11:00 p.m., Torsten Lodderstedt wrote: >>>> ... >>>>> >>>>> general note: I do not understand why caching proxies should >>>>> impose a problem in case TLS is used (end2end). Could you please >>>>> explain? >>>> >>>> Because TLS is hop-by-hop (in HTTP hops, end-to-end only in TCP >>>> hops). Proxies which decrypt TLS and provide responses out of cache >>>> are already deployed in many places. Mostly in the form of >>>> reverse-proxies, but corporate decryption proxies are also on the >>>> increase. >>>> >>>> AYJ >> >> On 3/01/2012 11:17 a.m., Igor Faynberg wrote: >>> I am at a loss here; granted, it is a gray area... Does it mean >>> that RFC 2817 has not been implemented properly? >>> >> >> From RFC 2817: >> " >> >> 5. Upgrade across Proxies >> >> As a hop-by-hop header, Upgrade is negotiated between each pair >> of >> HTTP counterparties. If a User Agent sends a request with an >> Upgrade >> header to a proxy, it is requesting a change to the protocol >> between >> itself and the proxy, not an end-to-end change. >> " >> >> The more common case is CONNECT method from RFC 2068, from a user >> agent to a reverse-proxy. Same behaviour. >> >>> To make it simple: At the client, I establish a session key with >>> the server, and then use it for confidentiality. How is this key >>> known to any proxy? >> >> "the server" is a proxy. >> >> AYJ
- Re: [OAUTH-WG] OAuth Bearer authentication - for … Amos Jeffries
- Re: [OAUTH-WG] OAuth Bearer authentication - for … Igor Faynberg
- Re: [OAUTH-WG] OAuth Bearer authentication - for … Amos Jeffries
- Re: [OAUTH-WG] OAuth Bearer authentication - for … Torsten Lodderstedt
- Re: [OAUTH-WG] OAuth Bearer authentication - for … Amos Jeffries
- Re: [OAUTH-WG] OAuth Bearer authentication - for … Igor Faynberg
- Re: [OAUTH-WG] OAuth Bearer authentication - for … Amos Jeffries
- Re: [OAUTH-WG] OAuth Bearer authentication - for … Igor Faynberg
- Re: [OAUTH-WG] OAuth Bearer authentication - for … Amos Jeffries
- Re: [OAUTH-WG] OAuth Bearer authentication - for … Igor Faynberg
- Re: [OAUTH-WG] OAuth Bearer authentication - for … Amos Jeffries