In my opinion the protocol has serious problems.

The authorization code is a credential that provides access to
protected resources via the client, as well as user authentication
when OAuth is used for social login.  If an attacker observes or
intercepts the authorization code, the attacker can present the code
to the client, use the client to gain access to the user's protected
resources, and log in to the client impersonating the user.  Therefore
the authorization code cannot be sent to the client without TLS
protection.  The protocol must require the redirect_uri to use the
https scheme.  The redirect_uri is shown as an https URI in the
examples, but examples are not enough.  If TLS is not required,
implementations may use http.  At this time the Facebook developer
documentation shows http rather than https in its examples, and
implementations seem to use http, as can be seen by searching the Web
for "oauth redirect_uri".

The protocol has the same well-known vulnerability to phishing attacks
as OpenID.  The attack on OpenID described by Ben Laurie in
http://www.links.org/?p=187 is equally applicable to this protocol.
The protocol should require the use of TLS at the authorization
endpoint; without it, the user is defenseless against the attack.  The
protocol should also require the user to be already logged in at the
authorization server, so that the server will not ask for credentials.

If implementors take no precautions, the protocol is vulnerable to
Login CSRF attacks.  Adam Barth confirmed this in a message to the
IETF websec mailing list:

> Last time I looked into Login CSRF issues with
> OAuth, the protocol had a large problem and every implementation I
> experimented with was trivially vulnerable.

A countermeasure against Login CSRF must be provided in the security
considerations section.  The security considerations section should
also suggest countermeasures against DOS attacks.  But the section is
not written yet.  I would think that the absence of a security
considerations section in and of itself means that the protocol is not
ready.

I also must point out the danger to the Web posed by a protocol that
is used for social login and requires registration.  Millions of Web
applications already use Facebook for social login.  If social login
becomes a de facto standard for user authentication, Web applications
will have to support login with Facebook just to be able to
authenticate their users.  If that requires registration, then
Facebook will have the power to disable any Web application by
revoking its registration.  That would be bad for all parties
involved, including Facebook, which would then face regulation by the
governments of many countries.

Francisco

--- On Wed, 3/2/11, Hannes Tschofenig <hannes.tschofe...@gmx.net> wrote:

From: Hannes Tschofenig <hannes.tschofe...@gmx.net>
Subject: [OAUTH-WG] WGLC on draft-ietf-oauth-v2-13.txt
To: "OAuth WG" <oauth@ietf.org>
Date: Wednesday, March 2, 2011, 7:32 AM

This is a Last Call for comments on 

http://www.ietf.org/id/draft-ietf-oauth-v2-13.txt

Please have your comments in no later than March 16.

Do remember to send a note in if you have read the document and have no 
other comments other than "its ready to go" - we need those as much as we need 
"I found a problem".

Thanks!
Hannes & Blaine

_______________________________________________
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