Re: [OAUTH-WG] Security of user agent clients (WAS: End user auth response code-and-token's scope parameter)

Andrew Arnott <andrewarnott@gmail.com> Sat, 03 July 2010 19:15 UTC

Return-Path: <andrewarnott@gmail.com>
X-Original-To: oauth@core3.amsl.com
Delivered-To: oauth@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id BFD613A684A for <oauth@core3.amsl.com>; Sat, 3 Jul 2010 12:15:28 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.828
X-Spam-Level:
X-Spam-Status: No, score=-1.828 tagged_above=-999 required=5 tests=[AWL=0.770, BAYES_00=-2.599, HTML_MESSAGE=0.001]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 1MihQ3b+-aZl for <oauth@core3.amsl.com>; Sat, 3 Jul 2010 12:15:24 -0700 (PDT)
Received: from mail-gx0-f172.google.com (mail-gx0-f172.google.com [209.85.161.172]) by core3.amsl.com (Postfix) with ESMTP id C9CB33A6834 for <oauth@ietf.org>; Sat, 3 Jul 2010 12:15:23 -0700 (PDT)
Received: by gxk3 with SMTP id 3so319965gxk.31 for <oauth@ietf.org>; Sat, 03 Jul 2010 12:15:33 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:cc:content-type; bh=Nc2/2iYj0wGRlhOFtTuKVKnNeH6ikFaWAk78ICISdH8=; b=dVNJtr15/3xBZkakkm0w7NFXepXKFxPk4J1LJ0bm61K/Pz17Uy4JGWCJ4sLTkIs8z1 G7ZWLWYAMWMxLgNO6zv78I4lryY9LA0zmXoTWDSz8ivi/dptRz9L5C7keq41lm8XqCJL 12ZCL76RKWGJOmwK4IIR/PkEmyBoDZ/BVD4NQ=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; b=IV0bdimXeG/+PlHy0EjvmPTXBIF1USDBiZIxGa1Iun94mK0ARntRsPs4LNvMSHiCQU v101wEGsaqOZQ652l9pbHm3xMcfu343lDfRfuRau4DNUgJSWmGAxI3a+mF0eC0dpmRbA iMb7YerSxNQ1DaSlRl2fX5T3QcdvW1nONBw5U=
MIME-Version: 1.0
Received: by 10.100.136.19 with SMTP id j19mr770470and.44.1278184533736; Sat, 03 Jul 2010 12:15:33 -0700 (PDT)
Received: by 10.150.92.8 with HTTP; Sat, 3 Jul 2010 12:15:33 -0700 (PDT)
In-Reply-To: <AANLkTiky4opuiqF65cCZPyCdl46ReSt8wT9rDuufSPxB@mail.gmail.com>
References: <AANLkTik55pORyRWj9rBrV1e4cbPGHM7Zbb1_ySUwB-bH@mail.gmail.com> <AANLkTinhZ8cUlNzAtfJM2MVFkGod8zGb4GXQ8cLZ7qTS@mail.gmail.com> <AANLkTikWHWYKoXS_shws1mheYVtwSSPM4b2J6mMIE_H7@mail.gmail.com> <90C41DD21FB7C64BB94121FBBC2E72343B3ED4C7C2@P3PW5EX1MB01.EX1.SECURESERVER.NET> <AANLkTin5-GbdgXlvrws5UC60Plfh_tcpsODyHIoWw1mi@mail.gmail.com> <90C41DD21FB7C64BB94121FBBC2E72343B3ED4C818@P3PW5EX1MB01.EX1.SECURESERVER.NET> <AANLkTiky4opuiqF65cCZPyCdl46ReSt8wT9rDuufSPxB@mail.gmail.com>
Date: Sat, 03 Jul 2010 12:15:33 -0700
Message-ID: <AANLkTimlvQWeWzou4Q2flwjuK7i0InqFu099SrPFV60R@mail.gmail.com>
From: Andrew Arnott <andrewarnott@gmail.com>
To: Eran Hammer-Lahav <eran@hueniverse.com>
Content-Type: multipart/alternative; boundary="0016e6509bc4174085048a808725"
Cc: "OAuth WG (oauth@ietf.org)" <oauth@ietf.org>
Subject: Re: [OAUTH-WG] Security of user agent clients (WAS: End user auth response code-and-token's scope parameter)
X-BeenThere: oauth@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: OAUTH WG <oauth.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/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: Sat, 03 Jul 2010 19:15:28 -0000

(this sounds sarcastic, but I'm no being sarcastic... it's a serious
question/challenge)...

Why not just remove the client_id parameter from the user-agent flow?  It's
absolutely meaningless to security.  It's only perceivable benefit is that
the auth server can possible display to the user the client being authorized
or the list of previously authorized clients.  But again, that's totally
meaningless if not verified.

--
Andrew Arnott
"I [may] not agree with what you have to say, but I'll defend to the death
your right to say it." - S. G. Tallentyre


On Sat, Jul 3, 2010 at 12:12 PM, Andrew Arnott <andrewarnott@gmail.com>wrote:

> On Fri, Jul 2, 2010 at 9:12 PM, Eran Hammer-Lahav <eran@hueniverse.com>wrote:
>
>> You are putting too much weight on the value of redirection URI
>> registration. Since the same problem exists between the user-agent script
>> and the server-side component used in the user-agent profile, anyone can
>> imitate that flow. In most cases, the redirection URI will simply include a
>> script that will pass the parameter to the **parent** window which can be
>> anything. If the server-based page is an active page, it still needs to
>> communicate with the user-agent, which again, can pretend to be that.
>>
> Good point.  I wasn't imagining that far through it.  Not to deny that most
> redirection URLs may just return a straight script that passes it to the
> parent window, but that seems pretty irresponsible to the host that's doing
> it -- because of the enormous security hole it opens up.  Some client is
> trusted enough to authorize (by the user and auth server), receives an
> access token it wasn't expecting, and then blindly forwards it onto whoever
> wants it.  Yikes.  I sure hope these access tokens have *very* limited
> scope (like, I'd prefer none myself).
>
> I was about to describe how an active server could alleviate that by
> signing the original request using the state parameter, but I realized I'm
> solving a problem that the web server flow (or nowadays that the
> authorization code mode as I guess it's called) already solves.  So I guess
> I just need to bite the bullet and accept that the user agent flow is *totally
> *insecure for web clients, and thus very special care must be taken to
> enable native clients without opening up the web client hole.
>
> Sorry to sound so negative about it.  Enabling this scenario seems really
> important to me as well -- I just am against doing it when it can't be
> secured in some way.  Seriously... as is, once you authorize any client,
> you've authorized them all, including clients not even running on your
> computer.  I guess this answers how I was visiting a site a few days ago and
> was amazed that it knew who I was (via Facebook) and was displaying my name
> and photo when I never logged into the site.  I was shocked it knew who I
> was.  Enter living in Incognito mode from now on.
>