Re: [Full-disclosure] [WEB SECURITY] Preventing Cross-site Request Forgeries

2007-04-02 Thread Stephen de Vries

Interesting post pdp, and implementing such a solution could be a lot  
easier than coding the nonce generation yourself.

Some existing web frameworks already provide a similar feature by  
creating another layer of state management on top of the HTTP  
session.  One of the cleanest examples is JBoss Seam (http:// 
www.jboss.com/products/seam) which defines a conversation state in  
addition to the usual session state.  Spring webflow does something  
similar (http://www.springframework.org/webflow) for pageflow, and  
there are probably more web frameworks that have implemented similar  
solutions for workflow and pageflow.  None of these solutions were  
born out of a need for more security.  Rather, developers need  
something more granular than the session state to keep track of user  
actions and they need to more easily control page flow within an  
app.  If you try out the Seam demo's you'll see that the session  
management (or conversation management) is more robust than a typical  
web app - because the app defines distinct conversations which  
require another ID (similar to your nonce values) for requests that  
are part of a conversation.  E.g. when you start performing a  
checkout operation, a new conversation ID is generated and used for  
all subsequent requests until that conversation has been completed.

As far as CSRF is concerned, some implementation of these solutions  
are not bullet proof.  For example, in Seam, the conversation ID  
value is a simple numeric value that is global across all users.  So  
an attacker could create his own conversation, read the ID, and  
predict the ID which will be used for subsequent conversations by  
other users.  Fixing this is simply a matter of generating random  
ID's rather than sequential ones.
Spring webflow on the other hand appears to generate random flow Ids,  
but by default the ID seems to be passed as a URL parameter rather  
than a form value, so disclosure through referer is possible.
But both of these limitations are implementation problems, which can  
be fixed quite easily, rather than flaws in the overall design.

Additional levels of state management like these allow developers to  
build applications which support workflow and pageflow more easily  
and naturally than with vanilla HTTP session management.  And the  
fact that they could potentially be used to mitigate the risk of CRSF  
is an added bonus.  So we may be lucky in this case, that an industry  
trend towards pageflow and workflow based web applications overlaps  
with the need for CSRF protection.  Two birds with one stone.

regards,
Stephen



On 30 Mar 2007, at 17:16, pdp (architect) wrote:

 http://www.gnucitizen.org/blog/preventing-csrf

 I briefly covered how simple it is to prevent CSRF attacks. Hope that
 you find it useful.

 -- 
 pdp (architect) | petko d. petkov
 http://www.gnucitizen.org

 -- 
 --
 Join us on IRC: irc.freenode.net #webappsec

 Have a question? Search The Web Security Mailing List Archives:  
 http://www.webappsec.org/lists/websecurity/

 Subscribe via RSS: http://www.webappsec.org/rss/websecurity.rss  
 [RSS Feed]


-- 
Stephen de Vries
Corsaire Ltd
E-mail: [EMAIL PROTECTED]
Tel:+44 1483 226014
Fax:+44 1483 226068
Web:http://www.corsaire.com




___
Full-Disclosure - We believe in it.
Charter: http://lists.grok.org.uk/full-disclosure-charter.html
Hosted and sponsored by Secunia - http://secunia.com/


Re: [Full-disclosure] [WEB SECURITY] Preventing Cross-site Request Forgeries [ASP.NET crowd]

2007-03-30 Thread Chris Weber
Nice article.  

For the ASP.NET crowd out there, the will be even more simple, one line of
code.  Set the ViewStateUserKey property in your base class or page and the
unique token protections (similar to CSRF_Guard) will be provided for you.

http://msdn2.microsoft.com/en-us/library/system.web.ui.page.viewstateuserkey
.aspx

This protection mechanism has been available for many years, since the
Framework 1.1





-Original Message-
From: pdp (architect) [mailto:[EMAIL PROTECTED] 
Sent: Friday, March 30, 2007 3:16 AM
To: full-disclosure@lists.grok.org.uk; WASC Forum; webappsec @OWASP
Subject: [WEB SECURITY] Preventing Cross-site Request Forgeries

http://www.gnucitizen.org/blog/preventing-csrf

I briefly covered how simple it is to prevent CSRF attacks. Hope that you
find it useful.

--
pdp (architect) | petko d. petkov
http://www.gnucitizen.org


Join us on IRC: irc.freenode.net #webappsec

Have a question? Search The Web Security Mailing List Archives: 
http://www.webappsec.org/lists/websecurity/

Subscribe via RSS: 
http://www.webappsec.org/rss/websecurity.rss [RSS Feed]

___
Full-Disclosure - We believe in it.
Charter: http://lists.grok.org.uk/full-disclosure-charter.html
Hosted and sponsored by Secunia - http://secunia.com/


Re: [Full-disclosure] [WEB SECURITY] Preventing Cross-site Request Forgeries [ASP.NET crowd]

2007-03-30 Thread Michael Sutton
The EnableEventValidation page directive (enabled by default since .Net
2.0) applies a nonce value for form validation and is also a strong
control to prevent CSRF attacks. 

Michael Sutton
Security Evangelist
SPI Dynamics
http://portal.spidynamics.com/blogs/msutton

 -Original Message-
 From: Chris Weber [mailto:[EMAIL PROTECTED]
 Sent: Friday, March 30, 2007 6:12 PM
 To: 'pdp (architect)'; full-disclosure@lists.grok.org.uk; 'WASC
Forum';
 'webappsec @OWASP'
 Subject: RE: [WEB SECURITY] Preventing Cross-site Request Forgeries
 [ASP.NET crowd]
 
 Nice article.
 
 For the ASP.NET crowd out there, the will be even more simple, one
line of
 code.  Set the ViewStateUserKey property in your base class or page
and
 the
 unique token protections (similar to CSRF_Guard) will be provided for
you.
 
 http://msdn2.microsoft.com/en-
 us/library/system.web.ui.page.viewstateuserkey
 .aspx
 
 This protection mechanism has been available for many years, since the
 Framework 1.1
 
 
 
 
 
 -Original Message-
 From: pdp (architect) [mailto:[EMAIL PROTECTED]
 Sent: Friday, March 30, 2007 3:16 AM
 To: full-disclosure@lists.grok.org.uk; WASC Forum; webappsec @OWASP
 Subject: [WEB SECURITY] Preventing Cross-site Request Forgeries
 
 http://www.gnucitizen.org/blog/preventing-csrf
 
 I briefly covered how simple it is to prevent CSRF attacks. Hope that
you
 find it useful.
 
 --
 pdp (architect) | petko d. petkov
 http://www.gnucitizen.org
 


--
 --
 Join us on IRC: irc.freenode.net #webappsec
 
 Have a question? Search The Web Security Mailing List Archives:
 http://www.webappsec.org/lists/websecurity/
 
 Subscribe via RSS:
 http://www.webappsec.org/rss/websecurity.rss [RSS Feed]
 
 


--
 --
 Join us on IRC: irc.freenode.net #webappsec
 
 Have a question? Search The Web Security Mailing List Archives:
 http://www.webappsec.org/lists/websecurity/
 
 Subscribe via RSS:
 http://www.webappsec.org/rss/websecurity.rss [RSS Feed]

___
Full-Disclosure - We believe in it.
Charter: http://lists.grok.org.uk/full-disclosure-charter.html
Hosted and sponsored by Secunia - http://secunia.com/


Re: [Full-disclosure] [WEB SECURITY] Preventing Cross-site Request Forgeries [ASP.NET crowd]

2007-03-30 Thread Chris Weber
Actually that's not true.  We should be clear that this is *not* the same
thing as ViewStateUserKey (which is not enabled by default).
EnableEventValidation does provide postback input related protections, but
ViewStateUserKey actually ties it to the user session.  Without
ViewStateUserKey, you will notice the __EVENTVALIDATION nonce will be the
same for any two users.  With ViewStateUserKey, the value will be unique per
user.



-Original Message-
From: Michael Sutton [mailto:[EMAIL PROTECTED] 
Sent: Friday, March 30, 2007 3:59 PM
To: Chris Weber; pdp (architect); full-disclosure@lists.grok.org.uk; WASC
Forum; webappsec @OWASP
Subject: RE: [WEB SECURITY] Preventing Cross-site Request Forgeries [ASP.NET
crowd]

The EnableEventValidation page directive (enabled by default since .Net
2.0) applies a nonce value for form validation and is also a strong control
to prevent CSRF attacks. 

Michael Sutton
Security Evangelist
SPI Dynamics
http://portal.spidynamics.com/blogs/msutton

 -Original Message-
 From: Chris Weber [mailto:[EMAIL PROTECTED]
 Sent: Friday, March 30, 2007 6:12 PM
 To: 'pdp (architect)'; full-disclosure@lists.grok.org.uk; 'WASC
Forum';
 'webappsec @OWASP'
 Subject: RE: [WEB SECURITY] Preventing Cross-site Request Forgeries 
 [ASP.NET crowd]
 
 Nice article.
 
 For the ASP.NET crowd out there, the will be even more simple, one
line of
 code.  Set the ViewStateUserKey property in your base class or page
and
 the
 unique token protections (similar to CSRF_Guard) will be provided for
you.
 
 http://msdn2.microsoft.com/en-
 us/library/system.web.ui.page.viewstateuserkey
 .aspx
 
 This protection mechanism has been available for many years, since the 
 Framework 1.1
 
 
 
 
 
 -Original Message-
 From: pdp (architect) [mailto:[EMAIL PROTECTED]
 Sent: Friday, March 30, 2007 3:16 AM
 To: full-disclosure@lists.grok.org.uk; WASC Forum; webappsec @OWASP
 Subject: [WEB SECURITY] Preventing Cross-site Request Forgeries
 
 http://www.gnucitizen.org/blog/preventing-csrf
 
 I briefly covered how simple it is to prevent CSRF attacks. Hope that
you
 find it useful.
 
 --
 pdp (architect) | petko d. petkov
 http://www.gnucitizen.org
 


--
 --
 Join us on IRC: irc.freenode.net #webappsec
 
 Have a question? Search The Web Security Mailing List Archives:
 http://www.webappsec.org/lists/websecurity/
 
 Subscribe via RSS:
 http://www.webappsec.org/rss/websecurity.rss [RSS Feed]
 
 


--
 --
 Join us on IRC: irc.freenode.net #webappsec
 
 Have a question? Search The Web Security Mailing List Archives:
 http://www.webappsec.org/lists/websecurity/
 
 Subscribe via RSS:
 http://www.webappsec.org/rss/websecurity.rss [RSS Feed]

___
Full-Disclosure - We believe in it.
Charter: http://lists.grok.org.uk/full-disclosure-charter.html
Hosted and sponsored by Secunia - http://secunia.com/