Breno did a review of the security draft.
Thanks a lot!

Begin forwarded message:

> From: Breno de Medeiros <br...@google.com>
> Date: May 7, 2011 4:25:53 AM GMT+03:00
> To: Hannes Tschofenig <hannes.tschofe...@gmx.net>
> Subject: Re: OAuth Security Consideration Text
> 
> Hi Hannes,
> 
> I have gone through the test and I have a few edits and questions.
> 
> In the edits below, text between -- -- are supposed the be stricken
> out. Example if the original is:
> 
> They quick brown fox ...
> 
> and my suggested edit is:
> 
> --They--The quick brown fox ...
> 
> it means that I am suggesting that you replace the original with
> 
> The quick brown fox ...
> 
> Now edits by section: -------------------------------------
> 
> IN: Section 1. Definitions
> 
> Web Application .... to the OAuth protocol is--are-- stored on the
> server and --is-- not accessible ...
> 
> User Agent-based Application ... they can seamlessly make use of
> --it--its capabilities ...
> 
> IN: Section 2.2 Malicious Client Obtains Authorization
> 
> ...
> 
> Where the client can be --authenticate--authenticated ...
> 
> ...
> 
> It is --higly--highly RECOMMENDED that ...
> 
> IN: Section 2.9 Phishing Attacks
> 
> in which users can confirm the --authentictity--authenticity of the site.
> 
> -----------------/edits
> 
> Now higher level comments:
> 
> On Native Apps protection of refresh token:
> 
> On section Definitions, there is a sentence in the Native Apps "It is
> assumed that such applications can protect dynamically issued secrets,
> such as refresh tokens, from eavesdropping by other applications
> residing in the same service"
> 
> I suggest that you strike out this sentence from definitions since it
> is confusing. This should be moved to section 2.4, with a specific
> headed paragraph about management of refresh tokens for native
> applications including specific recommendation.
> 
> E.g. of substitution paragraph:
> 
> Native Applications MUST use operating system mediated protections to
> ensure that the refresh tokens are safe from unauthorized access by
> other users and applications. It is highly RECOMMENDED that such
> applications use OS-provided APIs to manage secrets. The applications
> MUST apply appropriately restrictive access controls to any file
> system or persistent memory objects where the refresh token is stored.
> 
> On Client Authentication:
> 
> "Authorization servers are encouraged to consider stronger client
> authentication means" --> This is too vague to be actionable. There is
> a great tradition of 'innovation' in client security that promotes no
> security and hinders interoperability. I tend to believe that it is
> better for servers to be conscious of the limitations of client
> authentication and implement mitigation measures than to create ad-hoc
> authentication mechanisms. Suggest to strike out this sentence.
> 
> "Authorization server MUST NOT issue client secrets to native or user
> agent-based applications in general." -> Agreed on user-agent, however
> at least in principle it is possible to issue secrets to native
> applications that use hardware-based DRM modules and can hold on to
> secrets. More importantly, since the OAuth2 spec no longer actually
> specifies how to implement a Native App Flow end-to-end, I am not sure
> how to even reason about Native App issues. Propose simply strike out
> 'native or'.
> 
> On Malicious Client Obtains Authorization:
> 
> "Authorization servers MUST NOT automatically process (without user
> interaction) repeated authorizations without authenticating the
> client." -> Not sure what to make of this sentence. If this implies
> User-Agent should not support automatic renewal of access tokens
> (since user-agent apps cannot be 'authenticated'), then it is a
> harmful recommendation because it ignores practical requirements. The
> bad word here is 'authenticating', since what is really intended is
> some assurance that it is the same client, e.g., the redirect URI
> matches a registered value in the User-Agent case. Please strike out
> this sentence or substitute it with one like:
> 
> "Authorization servers MUST implement measures to ensure that
> automatically issued tokens (without user interaction, based on
> previously recorded grant) are delivered to the same client to whom
> original grant was performed. Example of suitable measures are
> enforcing client authentication or enforcing that the destination of a
> redirect (in case of implicit grant) matches the expected value for
> the client."
> 
> On Access Tokens
> 
> "Application developers MUST NOT store access tokens in non-transient
> memory." -> This is not realistic -- consider the case of a Web
> Application running on distributed servers. It is quite possible that
> the only distributed storage mechanism available to the application is
> based on persistent storage. I suggest you strike out this sentence,
> since the previous one is sufficient.
> 
> On Session Fixation
> 
> This section needs to cover XSRF protection, the measures described
> within are insufficient for Web Applications or User-Agent-Based
> applications. Also the current mitigation described there is better
> described as a mitigation against token/code leakage.
> 
> I suggest that you create a new section:
> 
> ==
> Token and Code Leakage via Referer Header and/Or Open Redirectors
> 
> Attackers can leverage inclusion of third party content (images, ads)
> and/or the presence of redirectors in legitimate Web or
> User-Agent-Based Applications to steal codes and/or tokens issued to
> such sites.
> 
> "In order to prevent such attack ..." (move here the 2nd paragraph
> that currently lives on Session Fixation)
> 
> Now for the Session Fixation section, I would recommend that you
> expand it to also include 'token', since the attack is also possible
> via token.
> 
> The Session fixation attack involves an attacker that forwards a link
> to an unsuspecting victim. The victim clicks on the link and
> subsequently approves an expected application but as a result the
> attacker obtains access to the victim's data either at application or
> at the authorization server.
> 
> In order to prevent such attack, a Web or User-Agent-Based application
> MUST bind the state of authorization requests to the user's session
> with the application. This requires that the Application generate a
> strongly unguessable random number, and both include it in the 'state'
> parameter of the authorization request as well as to store it in the
> user's session, e.g., as an HTTP cookie, a DOM variable, or in any
> other suitable storage in the user's agent. When processing the
> response from the authorization server (whether in the form of a code
> or token), the Application MUST verify that the returned 'state'
> parameter matches the value in the user agent.
> 
> 
> 
> On Thu, May 5, 2011 at 14:26, Hannes Tschofenig
> <hannes.tschofe...@gmx.net> wrote:
>> Hey Breno,
>> 
>> here is the draft I mentioned:
>> http://tools.ietf.org/html/draft-lodderstedt-oauth-securityconsiderations-02
>> 
>> It would be great to get your review comments in.
>> 
>> Ciao
>> Hannes
>> 
>> 
> 
> 
> 
> --
> --Breno

_______________________________________________
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth

Reply via email to