Preso Title - NCC Group

9 downloads 180 Views 852KB Size Report
https://www.isecpartners.com. Raining on the Trendy New Parade. Andrew Becherer, Alex Stamos, Nathan Wilcox. BlackHat US
Cloud Computing Security Raining on the Trendy New Parade Andrew Becherer, Alex Stamos, Nathan Wilcox BlackHat USA 2009

https://www.isecpartners.com

Agenda  Cloud Computing Defined  Software as a Service  Platform as a Service  Infrastructure as a Service

2

Special Thanks  Chris Clark  Alex Vidergar  Scott Stender  Andreas Junestam

3

Cloud Computing “am i the only one who has an urge to punch myself in the neck whenever i hear about 'the cloud'?” - Arshan Dabirsiaghi Commenter at Jeremiah’s Blog

No, Arshan, you are not the only one.

4

Cloud Computing  Term is useless  What is it not?  Virtualization  Remote backup  Most of the stuff called cloud computing

5

Cloud Computing  Generally means:  Lots of general purpose hosts  Central management  Distributed action="{!init}"> Preconditions exclude CSRF token validation Input parameter vuln to CSRF public class myClass { public void init() { Id id = ApexPages.currentPage().getParameters().get('id'); Account obj = [select id, Name FROM Account WHERE id = :id]; delete obj; return ; } }

Ref: http://wiki.developerforce.com/index.php/Apex_and_Visualforce_Security_Tips

36

CSRF Lessons  Deviations from the “ancestor” frameworks lead to

configuration headaches:  AppEngine/Django middleware.  Azure requires new session configuration.

 Force.com trades a better default at the cost of

learning a new language and platform.  Custom handlers tend to inadvertently disable the protection.

37

Cross-site Scripting  We focus on output encoding over input validation.  Requires more developer awareness than CSRF.  Typically devs must consider which parameters to

escape.  The framework solution is not inherently different in

the Cloud environment (as with CSRF).

38

GAE XSS Filtering  AppEngine templates can use Django filters,

including an XSS encoder: escape  This filter encodes for HTML body and non-JS attribute contexts.

GAE Templates: http://code.google.com/appengine/docs/python/gettingstarted/templates.html

39

GAE XSS Filtering…  Example: {% for greeting in greetings %}

Santa says: {{greeting.content|escape}}

{% endfor %}

Today‟s limerick is:



GAE Templates: http://code.google.com/appengine/docs/python/gettingstarted/templates.html

40

Azure XSS Filtering  Azure relies on standard ASP.NET for output encoding:  HttpUtility.HtmlEncode or .InnerText property.  HttpUtility.UrlEncode 

HtmlEncode and .InnerText

are for the HTML body or non-

JS attribute contexts.  Examples:  Welcome1.InnerText = "Hello, " + User.Identity.Name;

 Response.Write(HttpUtility.HtmlEncode(Request.Form["name"]));

XSS tutorial: http://msdn.microsoft.com/en-us/library/ms998274.aspx 41

Force.com XSS Filtering  Two UI frameworks:  S-Controls provide UI via JS mechanisms (older design)

 Visualforce provides markup template language

Security Tips: http://wiki.developerforce.com/index.php/Apex_and_Visualforce_Security_Tips

42

Force.com S-Controls  Eschew eval() and string-based callbacks: window.setTimeout(„flingAnimal(„ + evilParam + „)‟)

 Use higher level DOM api and .innerText, not .innerHTML  Server-side expansions must be manually escaped:

{!SUBSTITUTE(SUBSTITUTE($Request.title,””,”>”)}

Security Tips: http://wiki.developerforce.com/index.php/Apex_and_Visualforce_Security_Tips

43

Force.com Visualforce  Tags in the apex: namespace escape text contents, eg:

{!$CurrentPage.parameters.attackedParam}

vuln link

Security Tips: http://wiki.developerforce.com/index.php/Apex_and_Visualforce_Security_Tips

44

XSS Lessons  The PaaS frameworks are status quo compared to

classic frameworks.  Force.com has legacy S-Control, despite fresh start.  Dev’s need to understand language context issues.  Or simpler: Don’t place parameters in JavaScript, ever.

45

Context is Key • There are many unaccounted for contexts:

46

Context is Key • There are many unaccounted for contexts: JS event handler

Escape for wrong context.

47

Context is Key • There are many unaccounted for contexts: JS event handler

Escape for wrong context.

• If the greeting content is: „ + alert(„xss‟) + „

• The expansion becomes: