Some of the more interesting capabilities that an app can ask for are revokable 
by the user later on.

Facebook has an API call

/me/permissions
That lets an app determine what permissions the user has granted the app. If 
need be the app can then ask (or re-ask) for additional scopes. 

Additionally, Facebook could decide an app should have fewer scopes and take 
away privileges from the app. A good app would be able to deal with no longer 
being authorized to perform an action.

I fail to see the security issue here.

-- Dick

On Feb 17, 2012, at 7:40 PM, William Mills wrote:

> I don't think the problem as described is an attack per se, the user is able 
> to modify the rights being granted.  The user is after all in control of what 
> they want to allow.  In this case it looks like FBs implementation is pretty 
> loose with the games apps and there's no guarantee you'll get the rights you 
> want as a game developer.
> 
> What this scenario mean is that the integrity of the request from the game 
> company to FB via the user's context does not have sufficient integrity 
> guarantee.  It is certainly possible for the auth server to have a registry 
> of known clients and expected scopes, and in fact the auth server is expected 
> to communicate to the user what they are approving.
> 
> Can an attacker cause a user to approve a token with an unexpected scope?  
> That would be a big problem.
> 
> From: Wenjie Lin <lin....@osu.edu>
> To: oauth@ietf.org 
> Sent: Friday, February 17, 2012 6:07 PM
> Subject: [OAUTH-WG] A Scope Attack against OAuth 2.0
> 
> We describe an attack on OAuth 2.0 (draft-ietf-oauth-v2-23), called scope 
> attack, provide a live-demo of the attack on Facebook, and propose a fix with 
> discussions.
>  
> Scope Attack
> OAuth authorization of services is associated with service agreement scope. 
> For instance, Client provides an online game to User with a service agreement 
> scope A: User authorizes Client to access his profile information and to post 
> messages on his behalf. A malicious User can request for online game with 
> service agreement scope A, manipulate the scope field, and change it to scope 
> B: User authorizes Client to access his profile information. User can still 
> play the games,  yet Client can’t post messages on User’s behalf, as 
> originally agreed.
> OAuth 2.0 authorization code grant and implicit grant are vulnerable to the 
> scope attack.
>  
> A Scope Attack Scenario
> (1) Authorization Server: Facebook (authorization code grant)
> (2) Client: Online gaming company Game. It allows User to play the games with 
> the service agreement scope A: User authorizes Game to access his profile 
> information and post messages on his behalf.
> (3) User: malicious User with an account at Facebook. He attempts to play the 
> games yet without authorizing Game to post messages on his behalf, that is, 
> he changes the scope from A to B: authorization of Client to access his 
> profile information only.
>  
> Attack Workflow
> (1) User requests Game (Client) for permission to play games, instantiating 
> OAuth 2.0 with scope A.
> (2) Game generates an authorization request with a scope specification A, and 
> redirects User to Facebook with the request.
> (3) User manipulates the scope field and changes it to scope B. The modified 
> request is then sent to Facebook.
> (4) User grants the modified request.
> (5) Facebook redirects User back to Game with the authorization code.
> (6) Game exchanges the authorization code for an access token. However it has 
> no knowledge that the scope A has been changed to scope B.
> (7) Game provides online gaming service to User. However, Game can’t post 
> messages on User’s Facebook page.
>  
> A Live-Demo: Facebook and CastleVille (IE and Safari tested)
> Step 1: Login Facebook and visit Facebook Apps and Game page
> https://www.facebook.com/games
> Step 2: Click CastleVille.
> Step 3: When you see the Request for Permission page, instead of
> clicking “Allow”, change the scope field in the URL from your browser from  
> “scope=email%2Cpublish_stream%2Cpublish_actions” to 
> “scope=email%2Cpublish_stream”.
> Step 4: After the modification, press ENTER to send the modified
> request to Facebook. Now you will see the modified Request of Permission page.
> Step 5: Click on “Allow” button and enjoy the game.
> (video: http://www.youtube.com/watch?v=zkmjLa3VU9w)
>  
> Impact
> Client provides services to malicious User yet with the modified service 
> agreement scope by User’s design.
>  
> Manipulating Scope Field
> The scope field in access token response is required ONLY IF Authorization 
> Server observes that the User authorized scope is different than the original 
> scope. Consequently, User can manipulate the scope field so that 
> Authorization Server cannot detect the change of the scope. As a result 
> Client provides the services yet can’t obtain the information that is 
> specified in the scope of the original service agreement.
> Client can verify the service agreement scope by checking all the fields 
> against the original User request before providing the requested services to 
> User.  For instance, Client can verify the granted permissions if 
> Authorization Server (e.g. Facebook)  provides an API. However, this is out 
> of the scope of OAuth 2.0, and Client may not check it. We observe: all top 
> five games recommended by Facebook are vulnerable to the scope attack.
>  
> Proposed Fix
> Draft-ietf-oauth-v2-23 Section 5.1:
> Change from
> “scope
>          OPTIONAL, if identical to the scope requested by the client,
>          otherwise REQUIRED.”
> to
> “scope REQUIRED” /* scope: User authorized scope */
>  
> Remarks
> (1) The proof of the correctness of OAuth with our proposed fix will be 
> published in an article: “OAuth 2.0 – Attacks, Fixes, Correctness, and 
> Generalizations, Wenjie Lin, David Lee and Steve Lai, to appear”.
> (2) The implicit grant is also vulnerable to the scope attack. However it 
> cannot be fixed by enforcing scope field in access token response as above; 
> User can change the scope in response before being redirected to Client.
>  
> Wenjie Lin, The Ohio State University
> David Lee, HP Labs and The Ohio State University
> Steve Lai, The Ohio State University
> 
> _______________________________________________
> 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