Re: [OAUTH-WG] Draft 20 last call comment (Resource Owner Impersonation)

"William J. Mills" <wmills@yahoo-inc.com> Thu, 18 August 2011 23:46 UTC

Return-Path: <wmills@yahoo-inc.com>
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 1851411E809F for <oauth@ietfa.amsl.com>; Thu, 18 Aug 2011 16:46:07 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -17.348
X-Spam-Level:
X-Spam-Status: No, score=-17.348 tagged_above=-999 required=5 tests=[AWL=0.250, BAYES_00=-2.599, HTML_MESSAGE=0.001, USER_IN_DEF_WHITELIST=-15]
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 QL6A1JhpdCQU for <oauth@ietfa.amsl.com>; Thu, 18 Aug 2011 16:46:05 -0700 (PDT)
Received: from nm38-vm4.bullet.mail.bf1.yahoo.com (nm38-vm4.bullet.mail.bf1.yahoo.com [72.30.239.20]) by ietfa.amsl.com (Postfix) with SMTP id 6EF5211E8073 for <oauth@ietf.org>; Thu, 18 Aug 2011 16:46:05 -0700 (PDT)
Received: from [98.139.215.141] by nm38.bullet.mail.bf1.yahoo.com with NNFMP; 18 Aug 2011 23:46:57 -0000
Received: from [98.139.212.239] by tm12.bullet.mail.bf1.yahoo.com with NNFMP; 18 Aug 2011 23:46:57 -0000
Received: from [127.0.0.1] by omp1048.mail.bf1.yahoo.com with NNFMP; 18 Aug 2011 23:46:57 -0000
X-Yahoo-Newman-Property: ymail-3
X-Yahoo-Newman-Id: 689997.60461.bm@omp1048.mail.bf1.yahoo.com
Received: (qmail 75213 invoked by uid 60001); 18 Aug 2011 23:46:56 -0000
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo-inc.com; s=ginc1024; t=1313711216; bh=adlk9o70H1lYxIF+U5nE7QhyWW+0Qh11XjYQywQdBRo=; h=X-YMail-OSG:Received:X-RocketYMMF:X-Mailer:References:Message-ID:Date:From:Reply-To:Subject:To:Cc:In-Reply-To:MIME-Version:Content-Type; b=nNfSY8nqr0LTruw3D10x4ErlUSEA1rkv2Kj3sJWtDe1AF2eOnVRbRQpCVBhEtvolCUhB7tWReUogGhELG53lMEwpWRzkaWVlb3C/epQbVLY8p497pVAFvQUi1Mj10mUQfRe2u6/K5gkjov3F4ZVYDoGVd9ZuiG8iB2hb+Ka9HyM=
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=ginc1024; d=yahoo-inc.com; h=X-YMail-OSG:Received:X-RocketYMMF:X-Mailer:References:Message-ID:Date:From:Reply-To:Subject:To:Cc:In-Reply-To:MIME-Version:Content-Type; b=gH6U7ygJkCpjdsfVhATNrHmP1qFkPe1iPYPycYlvIme12t7LDg+4iI8k94tL94j6gKFAZEYJTFRSeKiLSd4hW5ywLRb9TYvg8omXIZ7Gne4eKj3Ktu4y2807qep8aOroCLwiS9fYZUtLSuGwnLQT+yZiucPWSb4nkj8x8FUw6TY=;
X-YMail-OSG: NxX88NIVM1l4uSUjJGVU7Udp08.GrGdUoD6QLgCuGJoXJON piiPAh.zW2N3sWYDMb4bC8OM2bnbjZOThgasZxFRTXzizglNRQwRdjR9Qv.q koMMCT3h8lUtOpoxhegCax1EBCXtbfR5TYUne5EEu4tHdzrS0iuCGU8a0wTJ pH3qMLC_wtqlY2cX8DAmexwINfXwjPLn36.E8IXz16WpsNcqbGR3skmJFhgF xi__fTAGXjTxOuZRKl3ZFIM9LWzz78fwVpD8MXVldd3r46WP84_oz.WzS0bD hJ4HmI9jRoj5QcyjDa4uQRzYgXvtv_DrwlE8e1qCPexJAhfUteR7D.ncZ_LZ 22pdpc_fnDahvH5IsopM0Fv.zZ1XSkEE412frzrf1TRRiaNLzmaMOspa4yHT H_4DHd1gZNu_OgjiQkNGs360aOIQ8ssQIRoWJA50_gB4-
Received: from [209.131.62.115] by web31808.mail.mud.yahoo.com via HTTP; Thu, 18 Aug 2011 16:46:55 PDT
X-RocketYMMF: william_john_mills
X-Mailer: YahooMailWebService/0.8.114.317681
References: <b7df18688b7612cb85418ed587b80044@lodderstedt-online.de> <90C41DD21FB7C64BB94121FBBC2E72345029DFA960@P3PW5EX1MB01.EX1.SECURESERVER.NET> <CACEVmuoYO5NJrGNAHJsHennt_si+DTdA0QuLps8UBvMb=aLVoA@mail.gmail.com> <90C41DD21FB7C64BB94121FBBC2E72345029DFAA22@P3PW5EX1MB01.EX1.SECURESERVER.NET> <CACEVmuoJR2yFBBzjqT4nbGt28PDu4yFEYTnV9c893FAAuqvT+g@mail.gmail.com> <90C41DD21FB7C64BB94121FBBC2E72345029DFAA5B@P3PW5EX1MB01.EX1.SECURESERVER.NET> <CACEVmuqCx2Nv_OEAx30HZEqbx58zxhWweOMctaxp2E3S3rDWig@mail.gmail.com> <90C41DD21FB7C64BB94121FBBC2E72345029DFAA81@P3PW5EX1MB01.EX1.SECURESERVER.NET> <CACEVmuoQuQGemjv0r2PzDBSD1D9XJjQo9cjZCs5-jxFbNc4JNA@mail.gmail.com> <90C41DD21FB7C64BB94121FBBC2E72345029DFAAD7@P3PW5EX1MB01.EX1.SECURESERVER.NET> <CACEVmuo7yxuBKb4xU=cW3ESGvQ=PKpjSa2T9+=fUx-n5KYTLrQ@mail.gmail.com> <90C41DD21FB7C64BB94121FBBC2E72345029DFAB5B@P3PW5EX1MB01.EX1.SECURESERVER.NET> <CACEVmuq57WMStne1pH-7akD9Jh8=wyj-WZ2U70jd=ej3TYvnkw@mail.gmail.com>
Message-ID: <1313711215.67102.YahooMailNeo@web31808.mail.mud.yahoo.com>
Date: Thu, 18 Aug 2011 16:46:55 -0700
From: "William J. Mills" <wmills@yahoo-inc.com>
To: Niv Steingarten <nivstein@gmail.com>, Eran Hammer-Lahav <eran@hueniverse.com>
In-Reply-To: <CACEVmuq57WMStne1pH-7akD9Jh8=wyj-WZ2U70jd=ej3TYvnkw@mail.gmail.com>
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="0-58944271-1313711215=:67102"
Cc: "oauth@ietf.org" <oauth@ietf.org>
Subject: Re: [OAUTH-WG] Draft 20 last call comment (Resource Owner Impersonation)
X-BeenThere: oauth@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
Reply-To: "William J. Mills" <wmills@yahoo-inc.com>
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: Thu, 18 Aug 2011 23:46:07 -0000

I proposed text that I think is more complete in a previous message...



________________________________
From: Niv Steingarten <nivstein@gmail.com>
To: Eran Hammer-Lahav <eran@hueniverse.com>
Cc: "oauth@ietf.org" <oauth@ietf.org>
Sent: Thursday, August 18, 2011 4:33 PM
Subject: Re: [OAUTH-WG] Draft 20 last call comment (Resource Owner Impersonation)

How about add something like this as the second paragraph in 10.12:

   The authorization server SHOULD employ measures to prevent CSRF
   attacks on the authorization endpoint. A non-guessable token SHOULD
   be included in requests and form submissions within the authorization
   server's internal authorization flow. This token MUST NOT be
   accessible by the client. In addition, the authorization server may
   make use of HTTP referrer headers in order to verify the origin of
   requests made during the authorization flow.

In addition, I think that:

   The "state" request parameter SHOULD be used to mitigate against CSRF
   attacks, ...

should be changed to:

   The "state" request parameter SHOULD be used to mitigate against CSRF
   attacks against the client's redirection URI, ...

so that the fact that the 'state' parameter protects against CSRF
attacks on the *client*, as opposed to CSRF on the *authorization
server*, is made explicit.

-- Niv


On Fri, Aug 19, 2011 at 00:13, Eran Hammer-Lahav <eran@hueniverse.com> wrote:
>
>
>> -----Original Message-----
>> From: Niv Steingarten [mailto:nivstein@gmail.com]
>> Sent: Thursday, August 18, 2011 1:04 PM
>> To: Eran Hammer-Lahav
>> Cc: Torsten Lodderstedt; oauth@ietf.org
>> Subject: Re: [OAUTH-WG] Draft 20 last call comment (Resource Owner
>> Impersonation)
>>
>> On Thu, Aug 18, 2011 at 22:19, Eran Hammer-Lahav <eran@hueniverse.com>
>> wrote:
>> >
>> >
>> >> -----Original Message-----
>> >> From: Niv Steingarten [mailto:nivstein@gmail.com]
>> >> Sent: Thursday, August 18, 2011 12:12 PM
>> >> To: Eran Hammer-Lahav
>> >> Cc: Torsten Lodderstedt; oauth@ietf.org
>> >> Subject: Re: [OAUTH-WG] Draft 20 last call comment (Resource Owner
>> >> Impersonation)
>> >>
>> >> On Thu, Aug 18, 2011 at 21:17, Eran Hammer-Lahav
>> >> <eran@hueniverse.com>
>> >> wrote:
>> >> >
>> >> >
>> >> >> -----Original Message-----
>> >> >> From: Niv Steingarten [mailto:nivstein@gmail.com]
>> >> >> Sent: Thursday, August 18, 2011 11:08 AM
>> >> >> To: Eran Hammer-Lahav
>> >> >> Cc: Torsten Lodderstedt; oauth@ietf.org
>> >> >> Subject: Re: [OAUTH-WG] Draft 20 last call comment (Resource Owner
>> >> >> Impersonation)
>> >> >>
>> >> >> On Thu, Aug 18, 2011 at 20:31, Eran Hammer-Lahav
>> >> >> <eran@hueniverse.com>
>> >> >> wrote:
>> >> >> >
>> >> >> >
>> >> >> >> -----Original Message-----
>> >> >> >> From: Niv Steingarten [mailto:nivstein@gmail.com]
>> >> >> >> Sent: Thursday, August 18, 2011 10:16 AM
>> >> >> >> To: Eran Hammer-Lahav
>> >> >> >> Cc: Torsten Lodderstedt; oauth@ietf.org
>> >> >> >> Subject: Re: [OAUTH-WG] Draft 20 last call comment (Resource
>> >> >> >> Owner
>> >> >> >> Impersonation)
>> >> >> >>
>> >> >> > Can you provide another example with the same level of detail as
>> >> >> > you
>> >> >> provided below?
>> >> >>
>> >> >> The malicious client sends a request to the authorization endpoint
>> >> >> with the appropriate parameters, and in return receives the markup
>> >> >> of the web-page which should be displayed to the user in order to
>> >> >> get consent. In addition, since the request is launched not via a
>> >> >> sandboxed user-agent, the client also has access to any 'Set-Cookie'
>> >> >> HTTP headers.
>> >> >>
>> >> >> Instead of displaying the page to the user, the client extracts
>> >> >> the web-form data (including the hidden nonce/token) which would
>> >> >> be submitted when 'Allow' is clicked. It then forges the
>> >> >> appropriate POST request with the cookies, form data and referrer,
>> >> >> and dispatches it,
>> >> >
>> >> > SCENE MISSING [1]
>> >> >
>> >> >> to finally receive an access token/authorization code in the redirection.
>> >> >
>> >> > You skipped the best part!
>> >> >
>> >> > What do you mean by "dispatches it"? How is the resource owner
>> >> > tricked
>> >> or abused to grant authorization unknowingly? I understand how your
>> >> proposal "fixes" the first half, but not what kind of attack is
>> >> happening in the second half.
>> >> >
>> >>
>> >> I might have accidentally skipped the part where the user is already
>> >> logged in at the authorization endpoint, so no log-in is required but
>> >> rather just allowing/denying access (correction: the first request is
>> >> sent using an HTTP framework/WebKit, so no access to cookies). Once
>> >> it extracts the data from the web-form, the client has all the
>> >> information it needs in order to create an HTTP request
>> >
>> > No - the attacker does not have access to the session cookie. It still needs
>> to find a way to make a CSS call.
>> >
>>
>> That's what I said -- "no access to cookies".
>
> You only said that about the first request.
>
>> But since both requests (the one
>> requesting the auth endpoint and the one simulating the
>> "allow") are sent from the same user-agent, the cookies are handled by the
>> user-agent itself. The client just POSTs the request with the appropriate
>> parameters to the action endpoint of the form.
>
> That's not exactly right.
>
> This entire attack is based on:
>
> 1. The presence of some session cookie or other user-agent state to bypass active authentication, and
> 2. The ability of the malicious client to make CSS calls using #1.
>
> Everything else is a red herring because the ability to automate this attack and make it more powerful is completely beside the point. If you deploy an effective CSRF protection, everything else is a non-issue.
>
> This is why the client type does not matter when it comes to not using CORS. The authorization server MUST NOT allow CSS calls on the authorization endpoint because that's the actual attack you described - using local state (session cookie) to make a CSS call. If the client makes direct calls to the authorization endpoint, it cannot impersonate the resource owner.
>
>> >> and launch it using the same HTTP framework/WebKit, simulating the
>> >> "Allow" button.
>> >
>> > This is still just a CSRF attack.
>> >
>>
>> I think you may be right. I still believe this particular style of attack on the
>> authorization server is worth mentioning, be it in its own separate section or
>> under the existing CSRF section (as you suggested).
>
> This is not a style of attack but techniques to enhance other exploits, in this case, CSRF. If you lack CSRF protection, then yes, lack of resource owner forced interaction will make it easier to execute. But that's just a tiny speed bump considering the actual exploit.
>
> I don't see any reason to include this new text based on this threat analysis.
>
> However, this doesn't mean this discussion wasn't useful. We did identify the need to explicitly discuss CSRF attacks on the authorization endpoint. We need to explicitly separate the two target of CSRF attacks (client, server) because while the solution is the same, the implementation is very different (due to the use of redirections in one).
>
> EHL
>
>
>
>
>
>
_______________________________________________
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth