![]() |
![]() |
|
April 25, 2007RunAs Radio interviews me about CardspaceRecently I was interviewed by Richard Campbell and Greg Hughs on RunAsRadio. You might have heard of Richard... he's also the host of .Net Rocks!. Where .NET Rocks! is for developers, RunAsRadio is for IT Pros. Anyways, if you would like to listen to the interview we did on Cardspace, you can download it here. Its about a half hour long, and is a simple introduction to the world of Cardspace, atleast for the client side perspective. For those already versed in the subject, you will notice a few term definition problems in the interview. It went by so fast, and I didn't make it clear what I was getting at. For those that don't know, here is a primer that may help understand how I talk about digital identity:
In a couple of places I used the term "credential" where I was really talking about "claims". And in passing it may sound like I was saying its the Identity Providers (IdP) role to decide who to trust. That didn't come out right. It is up to the relying party to decide which IdP it wishes to trust. In some cases, it will trust you, because you act as the provider. How? Because when you create a a self-issued card and submit it, you are asserting you are who you say you are. It won't be as trusted as much as say... a government IdP. But you get the point. I hope Kim doesn't think about throwing a brick at my head if he hears the interview :) Anyways, fun interview. Richard and Greg have asked me to come back and do another one where we can explore the server side of things... and discuss how Relying Parties and Identity Providers really work. We may even get into some discussion about Longhorn server and some of the interesting bits there that can be leveraged for the new digital identity ecosystem. Until then... enjoy! April 03, 2007Javascript Hijacking provides new class of attack vectors for AJAX, and ultimately, ATLAS.As more "Web 2.0" applications become popular, we continue to see richer and richer user experiences (UX) that astound us. To make UX snappy UI controls leverage technology like AJAX to offer support for better interactive experiences. We all know and love it. Who DOESN'T? I remember the first time I saw the scrolling on Google Maps. I couldn't believe my eyes. But that comes at a price. People who listen to me speak know I am NOT a fan of melding data and code together. What you get at the data layer should NOT be what you see at the presentation layer. We see so many attack patterns that leverage this to their advantage. From the WMF vulnerability to origins of Office macro hell (and everythng in between), its just not a good idea to do this. In the Web 2.0 world it gets worse. To get those speed increases developers leverage low overhead round tripping with AJAX interfaces. For those that don't know, AJAX stands for 'Asynchronous Javascript and XML'. The problem is, people are forgetting to keep constructs in XML and are spending more time leveraging the Javascript. And that gets me to this post. The guys over at Fortify have released a research paper showing the weakness in this approach, and shows how easy it is to build on cross site request forgery to hijack Javascript. And as they point out in their research, this isn't a theoretical attack. We have already seen this in the wild. Remember the exploit for GMail recently? Google was serving the current GMail users’ contacts in unprotected JavaScript, so an attacker could steal the contact list using JavaScript Hijacking. Google has since fixed the problem for GMail, but to my understanding its actually a vulnerability that exists in their Google Web Toolkit API, and is not yet fixed. (Although I am told its being fixed as we speak). And Microsoft's Atlas framework is not immune either. Although they HAVE made it more difficult to attack, it is still possible to generate a request from a malicious <script> tag with a HTTP GET request. Actually, I recall a few ASP.NET MVPs suggesting in public newsgroups to use GET for performance gains. There is a trade off in doing that; you expose yourself to these types of attacks. The Fortify guys do a good job in explaining the problem, and better yet, defining how to SOLVE it. I hope Microsoft looks at this new class of attack and creates a mitigation strategy soonest for the Atlas platform. Right now a work around that twarts this attack vector is to append the current session cookie to each request that returns Javascript. This will defeat the underlying cross site request forgery in the first place, and makes Javascript Hijacking moot since the server can validate the origin of the request. Since ATLAS provides the server-side support for this, it won't be difficult for Microsoft to do this. Predictably, MSRC will first have to threat model this class of attack before making any sort of recommendation for fixing the underlying problem. Consider my post an early warning to the problem, and an echo of Fortify's research on how to mitigate the risks of this attack. If you are building web applications that use ATLAS, you need to consider this attack vector in your own threat models, and take action to mitigate the problem as you see fit. |
![]() ![]()
My 5 Favorite Books
Writing Secure Code
Secure Programming Cookbook Security Engineering Secure Coding Principles & Practice Inside the Security Mind ![]()
My 5 Favorite Papers
Smashing the Stack
Penetration Studies Covert Channel Analysis of Trusted Systems DoD Trusted Computer System Evaluation Criteria NSA Security Recommendation Guides ![]()
Archives
March 2010
October 2009 August 2009 May 2009 April 2009 March 2009 February 2009 January 2009 December 2008 November 2008 October 2008 September 2008 August 2008 July 2008 June 2008 April 2008 January 2008 December 2007 November 2007 October 2007 September 2007 August 2007 July 2007 June 2007 May 2007 April 2007 March 2007 February 2007 January 2007 December 2006 November 2006 October 2006 September 2006 August 2006 July 2006 June 2006 May 2006 April 2006 March 2006 February 2006 January 2006 December 2005 November 2005 October 2005 September 2005 August 2005 July 2005 June 2005 May 2005 April 2005 March 2005 February 2005 January 2005 December 2004 November 2004 October 2004 September 2004 August 2004 July 2004 June 2004 May 2004 April 2004 March 2004 February 2004 January 2004 December 2003 November 2003 October 2003 September 2003 August 2003 July 2003 June 2003 May 2003 April 2003 March 2003 February 2003 January 2003 December 2002 November 2002 October 2002 September 2002 August 2002 July 2002 ![]() |
|