Eran, to summarize,

1. The server cannot tell if the client did its job - so the server can't 
"require" the client to implement state
2. There are many ways to enforce CSRF

There is an important "network" effect  here (and in general with OAuth) - that 
client decisions affect the security of the resource server and vice-versa. One 
could argue, that many implementers will want a solution for #1 above -- some 
form of mutual state validation.  This may not be of interest to today's 
implementers, but I know this is critical for government and financial services 
where fraud (and phishing) become a much larger issue.

I am beginning to believe we can't fix this now. This will likely have to be an 
optional RFC for higher strength anti-CSRF which specifies a standard 
methodology that can be verified by the server (so it can enforce that it was 
done).  My belief is that a standard methodology would make things easier for 
developers since they would have clear instructions on how to do it. Hopefully 
this would address folks like Facebook who are concerned developers have a hard 
time getting this right.

Because of this, I re-checked RFC2119 regarding making state "RECOMMENDED".  
Whereas "REQUIRED" is equivalent to "MUST", "RECOMMENDED" is equivalent to 
SHOULD and could be used as a parameter qualifier. Though I agree, 
traditionally this isn't done.  However, my feeling is that the developer needs 
to be alerted to the importance of "state". Deciding not to use it means they 
should have some other technique to counter CSRF.  This is what SHOULD is meant 
for.  Changing to RECOMMENDED makes the calls consistent with the security 
consideration requirement that anti-CSRF is a MUST.

Phil

@independentid
www.independentid.com
phil.h...@oracle.com





On 2011-08-21, at 10:53 PM, Eran Hammer-Lahav wrote:

> 
> 
>> -----Original Message-----
>> From: Phil Hunt [mailto:phil.h...@oracle.com]
>> Sent: Sunday, August 21, 2011 10:39 PM
>> To: David Recordon
>> Cc: Eran Hammer-Lahav; OAuth WG (oauth@ietf.org)
>> Subject: Re: [OAUTH-WG] Auth Code Swap Attack
>> 
>> I think the complication here is that CSRF issues are multi-site issues where
>> the attacker cross connecting his client with a victims resource, or a 
>> victims
>> client with the attackers resource.
>> 
>> So while an individual site (e.g. Facebook) may presume little or no risk -
>> there is a network effect here. A CSRF attacker could be using facebook to
>> attack another site. See Yaron's original text about Plaxo/Live at the start 
>> of
>> this thread.
> 
> It's still just a CSRF attack.
> 
>> Would it be reasonable to assess whether a resource site could make it
>> mandatory based on a pre-registered client?  IOW, would Facebook want to
>> make state mandatory for Confidential clients, but not public clients?
> 
> That's irrelevant. The authorization server has absolutely no way of 
> verifying if the client is implementing a CSRF protection properly. Making 
> 'state' required does not accomplish such an enforcement. A client can pass 
> the proposed text requirement with "state=ni".
> 
>> Would it be acceptable to change status from OPTIONAL to RECOMMENDED?
> 
> Parameters are either required or optional. We can makes it optional and 
> recommended for a particular purpose which is consistent with the existing 
> text.
> 
> It should be mandatory to implement CSRF protection. We agree on that and 
> should add it to the text. We also agree that 'state' is a great way of 
> implementing it and should recommend it. We already do that in the security 
> consideration section and can enhance that when defining the 'state' 
> parameter.
> 
> EHL

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

Reply via email to