> The attack is only possible if there are multiple independent authorization 
> servers that don't trust each other.



And there are. Facebook, Twitter, Photos-are-us, Xyz… can operate authorization 
servers; they are all independent; and don’t particularly trust each other. The 
attack doesn’t require a single resource server to trust all these independent 
authorization servers.



> By far the most widespread deployment of OAuth is for social login, as in 
> "log in with Facebook".  In that case the authorization server is a Facebook 
> endpoint, the resource servers are Facebook endpoints, and the attack is not 
> possible





You are probably right that this attack is not possible against a client app 
offering a “login with facebook” button. Such a client is hardwired to work 
with a single service – which is one (very limiting) way to avoid these attacks.



A client accepting login from any social network (even ones the client hasn’t 
heard of) could be susceptible this attack. The “other” social network returns 
a token that it actually got from Facebook and gets the client app to use it at 
Facebook.





--

James Manger





From: Francisco Corella [mailto:fcore...@pomcor.com]
Sent: Tuesday, 1 March 2011 4:17 PM
To: OAuth Mailing List; Manger, James H
Cc: Karen P. Lewison
Subject: RE: [OAUTH-WG] Indicating origin of OAuth credentials to combat login 
CSRF



Hi James,

I think I got it now.  Thanks for explaining it so patiently.

The attack is only possible if there are multiple independent authorization 
servers that don't trust each other.  But the OAuth specification talks about 
multiple resource servers but only one authorization server.  I think there is 
an implicit assumption that the multiple resource servers will only accept 
tokens from the one authorization server.  By far the most widespread 
deployment of OAuth is for social login, as in "log in with Facebook".  In that 
case the authorization server is a Facebook endpoint, the resource servers are 
Facebook endpoints, and the attack is not possible.

Francisco

--- On Tue, 3/1/11, Manger, James H <james.h.man...@team.telstra.com> wrote:




From: Manger, James H <james.h.man...@team.telstra.com>
Subject: RE: [OAUTH-WG] Indicating origin of OAuth credentials to combat login 
CSRF
To: "fcore...@pomcor.com" <fcore...@pomcor.com>, "OAuth Mailing List" 
<oauth@ietf.org>
Cc: "Karen P. Lewison" <kplewi...@pomcor.com>
Date: Tuesday, March 1, 2011, 12:43 AM

Francisco,



>> A client that follows HTTP redirects (or Link: header or any
>> other variety of hypertext) might get directed to an 2nd
>> service while still using the token from the 1st service.

> But why would a legitimate authorization server redirect the
> client to an attacker's server?



It can happen the other way around. The 1st service acts maliciously, 
forwarding a token that was actually obtained from the 2nd service. The client 
then uses that token to make requests to the 2nd service – because it thinks it 
is part of the 1st service.



The core issue is that a client gets a opaque token from one service and will 
use it to access other resources. The token is opaque to the client:

1.       The client cannot check that the token was originally issued by this 
service (as opposed to this service forwarding a token from elsewhere);

2.       The client cannot check that the token was meant for itself (as 
opposed to being forwarded from another client);

3.       The client isn’t told by the token issuer where it should & shouldn’t 
be used (ie the boundary of the services);

4.       The client isn’t told by a resource server which sources of tokens are 
legitimate.



One way to avoid some of these issues is to hardwire clients to a specific 
service – which is very limiting.

Another way is to have a standard token format – which is limiting, and a big 
burden on clients.

A better way is to accept points 1 & 2; address 3 by listing resource sites in 
token responses; and address 4 obliquely by listing the authorization server in 
the “Origin” HTTP request header. Then it doesn’t matter if a client 
unwittingly connects with an attacker’s service (just as it shouldn’t matter to 
a legitimate web site if their web browser clients unwittingly visit malicious 
or compromised web sites).



--

James Manger



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

Reply via email to