" using a DOM variable (protected by JavaScript or other DOM-binding language's 
enforcement of SOP)"

This is not clear without a reference or more details description.

EHL

> -----Original Message-----
> From: Mark Mcgloin [mailto:mark.mcgl...@ie.ibm.com]
> Sent: Wednesday, July 06, 2011 8:56 AM
> To: Eran Hammer-Lahav
> Cc: oauth@ietf.org; Torsten Lodderstedt
> Subject: Re: [OAUTH-WG] Draft 16 Security Considerations additions
> 
> Reworded to modify the text around secret and some additional info on
> redirect-uri (with some input from Shane Weaden) and adding state in
> dynamic redirect-uri (with input from Torsten)
> 
> CSRF
> Cross-Site Request Forgery (CSRF) is a web-based attack whereby HTTP
> requests are transmitted from a user that the website trusts or has
> authenticated. CSRF attacks on OAuth approvals can allow an attacker to
> obtain authorization to OAuth Protected Resources without the consent of
> the User.
> The state parameter should be used to mitigate against CSRF attacks,
> particularly for login CSRF attacks. CSRF attacks against a client's redirect 
> URI
> allow an attacker to inject their own authorization code (or access token for
> implicit grant flow). This may result in the client using an access token
> associated with the attackers account rather than the victims. Depending on
> the nature of the client and the protected resources, this can have
> undesirable and damaging effects.
> It is strongly RECOMMENDED that the client sends the state parameter with
> authorization requests to the authorization server. The state parameter
> MUST be non-guessable and the client MUST be capable of keeping it in a
> location accessible only by the client or the user agent (i.e., protected by
> same-origin policy). e.g.: DOM variable (protected by _javascript_ or other
> DOM-binding language's enforcement of SOP), HTTP cookie, HTML5 client-
> side storage, etc. The authorization server will send it in the response when
> redirecting the user to back to the client which MUST then validate the state
> parameter matches on the response. Use of the state parameter by a client
> protects against this style of attack as the attacker cannot know the state
> parameter associated with the victims browser session at the client.
> While sending the state parameter is the preferred mechanism for linking
> the client to the authorization requests and callbacks, a state parameter
> (s) embedded into the redirect uri could be used for the same purpose. A
> prerequisite is that the authorization server's uri validation policy must 
> allow
> for dynamic uri query parts.
> 
> 
> Clickjacking
> Clickjacking is the process of tricking users into revealing confidential
> information or taking control of their computer while clicking on seemingly
> innocuous web pages. In more detail, a malicious site loads the target site 
> in a
> transparent iframe overlaid on top of a set of dummy buttons which are
> carefully constructed to be placed directly under important buttons on the
> target site. When a user clicks a visible button, they are actually clicking a
> button (such as an "Authorize" button) on the hidden page.
> To prevent clickjacking (and phishing attacks), native applications SHOULD
> use external browsers instead of embedding browsers in an iFrame when
> requesting end-user authorization. For newer browsers, avoidance of
> iFrames can be enforced server side by using the X-FRAME-OPTION header.
> This header can have two values, deny and sameorigin, which will block any
> framing or framing by sites with a different origin, respectively. For older
> browsers, javascript framebusting techniques can be used but may not be
> effective in all browsers.
> 
> Regards
> 
> Eran Hammer-Lahav <e...@hueniverse.com> wrote on 04/07/2011 20:02:02:
> 
> > From:
> >
> > Eran Hammer-Lahav <e...@hueniverse.com>
> >
> > To:
> >
> > Mark Mcgloin/Ireland/IBM@IBMIE, Torsten Lodderstedt
> <tors...@lodderstedt.net>
> >
> > Cc:
> >
> > "oauth@ietf.org" <oauth@ietf.org>
> >
> > Date:
> >
> > 04/07/2011 20:01
> >
> > Subject:
> >
> > Re: [OAUTH-WG] Draft 16 Security Considerations additions
> >
> > This needs to be reworked to reflect reality. The state value must be
> > shared with the resource owner's browser and authorization server, so
> > it is not really a secret known only to the client…
> >
> > EHL
> >
> > From: Mark Mcgloin <mark.mcgl...@ie.ibm.com>
> > Date: Wed, 1 Jun 2011 11:28:33 -0700
> > To: Torsten Lodderstedt <tors...@lodderstedt.net>
> > Cc: "oauth@ietf.org" <oauth@ietf.org>
> > Subject: Re: [OAUTH-WG] Draft 16 Security Considerations additions
> >
> > Hi Torsten
> >
> > It was implicit that the state parameter would be secret and not
> guessable
> > but that it probably worth spelling out, as you and Breno state. Here
> > is
> a
> > modified version
> >
> > CSRF
> > Cross-Site Request Forgery (CSRF) is a web-based attack whereby HTTP
> > requests are transmitted from a user that the website trusts or has
> > authenticated. CSRF attacks on OAuth approvals can allow an attacker
> > to obtain authorization to OAuth Protected Resources without the
> > consent of the User.
> > The state parameter should be used to mitigate against CSRF attacks,
> > particularly for login CSRF attacks. It is strongly RECOMMENDED that
> > the client sends the state parameter with authorization requests to
> > the authorization server. The state parameter MUST be non-guessable
> > and MUST
> be
> > a secret only accessible to the client. The authorization server will
> send
> > it in the response when redirecting the user to back to the client
> > which MUST then validate the state parameter matches on the response.
> >
> > Regards
> > Mark
> >
> > Torsten Lodderstedt <tors...@lodderstedt.net> wrote on 01/06/2011
> 09:11:31:
> >
> > From:
> >
> > Torsten Lodderstedt <tors...@lodderstedt.net>
> >
> > To:
> >
> > Mark Mcgloin/Ireland/IBM@IBMIE
> >
> > Cc:
> >
> > oauth@ietf.org
> >
> > Date:
> >
> > 01/06/2011 09:11
> >
> > Subject:
> >
> > Re: [OAUTH-WG] Draft 16 Security Considerations additions
> >
> > Hi Mark,
> >
> > Am 31.05.2011 22:58, schrieb Mark Mcgloin:
> > > Eran
> > >
> > > Here are some additional sections to add to the next draft under
> > security
> > > considerations
> > >
> > > CSRF
> > > Cross-Site Request Forgery (CSRF) is a web-based attack whereby HTTP
> > > requests are transmitted from a user that the website trusts or has
> > > authenticated. CSRF attacks on OAuth approvals can allow an attacker
> > > to obtain authorization to OAuth Protected Resources without the
> > > consent
> > of
> > > the User.
> > > The state parameter should be used to mitigate against CSRF attacks,
> > > particularly for login CSRF attacks. It is strongly RECOMMENDED that
> > the
> > > client sends the state parameter with authorization requests to the
> > > authorization server. The authorization server will send it in the
> > response
> > > when redirecting the user to back to the client which SHOULD then
> > validate
> > > the state parameter matches on the response.
> >
> > As far as I understand, the goal of the countermeasure is to bind the
> > authz flow to a certain user agent (instance). So client must verify
> > that the state parameter (or any other URL parameter?) matches some
> > data found in the user agent itself before further processing the authz
> code.
> >
> > Breno explained it as follows:
> > -----
> > - Client or user-agent generates a secret.
> > - The secret is stored in a location accessible only by the client or
> > the user agent (i.e., protected by same-origin policy). E.g.: DOM
> > variable (protected by javascript or other DOM-binding language's
> > enforcement of SOP), HTTP cookie, HTML5 client-side storage, etc.
> > - The secret is attached to the state before a request is issued by
> > the client
> > - When the response is received, before accepting the token or code,
> > the client consults the user agent state and rejects the response
> > altogether if the state does not match the user agent's stored value.
> > ----
> >
> > I would suggest to incorporate this into the decription:
> >
> > It is strongly RECOMMENDED that the client sends the state parameter
> > with authorization requests to the authorization server. _The state
> > parameter MUST refer to a secret value retained at the user agent._
> > The authorization server will send the _state parameter_ in the
> > response when redirecting the user to back to the client which _MUST_
> > then validate the state parameter_'s value against the secret value in
> > the user agent_.
> >
> > regards,
> > Torsten.
> >
> > > Clickjacking
> > > Clickjacking is the process of tricking users into revealing
> > confidential
> > > information or taking control of their computer while clicking on
> > seemingly
> > > innocuous web pages. In more detail, a malicious site loads the
> > > target
> > site
> > > in a transparent iframe overlaid on top of a set of dummy buttons
> > > which
> > are
> > > carefully constructed to be placed directly under important buttons
> > > on
> > the
> > > target site. When a user clicks a visible button, they are actually
> > > clicking a button (such as an "Authorize" button) on the hidden page.
> > > To prevent clickjacking (and phishing attacks), native applications
> > SHOULD
> > > use external browsers instead of embedding browsers in an iFrame
> > > when requesting end-user authorization. For newer browsers,
> > > avoidance of
> > iFrames
> > > can be enforced server side by using the X-FRAME-OPTION header. This
> > header
> > > can have two values, deny and sameorigin, which will block any
> > > framing
> > or
> > > framing by sites with a different origin, respectively. For older
> > browsers,
> > > javascript framebusting techniques can be used but may not be
> > > effective
> > in
> > > all browsers.
> > >
> > >
> > > Regards
> > > Mark
> > >
> > > _______________________________________________
> > > OAuth mailing list
> > > OAuth@ietf.org
> > > https://www.ietf.org/mailman/listinfo/oauth
> >
> > _______________________________________________
> > OAuth mailing list
> > OAuth@ietf.org
> > https://www.ietf.org/mailman/listinfo/oauth
_______________________________________________
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth

Reply via email to