1 / 31

Path Cutter: Severing the Self-Propagation Path of XSS JavaScript Worms in Social Web Networks

Path Cutter: Severing the Self-Propagation Path of XSS JavaScript Worms in Social Web Networks. Yinzhi Cao, Vinod Yegneswaran , Phillip Porras , and Yan Chen Northwestern University, Evanston, IL SRI International, Menlo Park, CA NDSS Symposium 2012. 2012/05/14 曾毓傑. Outline.

Download Presentation

Path Cutter: Severing the Self-Propagation Path of XSS JavaScript Worms in Social Web Networks

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Path Cutter: Severing the Self-Propagation Path of XSS JavaScript Worms in Social Web Networks YinzhiCao, VinodYegneswaran, Phillip Porras, and Yan Chen Northwestern University, Evanston, IL SRI International, Menlo Park, CA NDSS Symposium 2012 2012/05/14 曾毓傑

  2. Outline • Introduction • Design • Implementation • Evaluation • Performance • Discussion

  3. INTRODUCTION

  4. Self-Propagating XSS Attacks <div style="background: url('java script:eval(...)')">... (1) Access (2) Gain Page DOM Access Samy’s Page (3) Send Forge Request MySpace User (5) Affect Other Users (4) Post Malicious Data onto User’s Wall User’s Page

  5. XSS Taxonomy • Server-side XSS Attacks • Stored XSS (Persistent) • Reflected XSS (Non-Persistent) • Client-side XSS Attacks • Plug-in XSS (e.g. Flash, Java) • Content Sniffing XSS • DOM-based XSS

  6. Path Cutter • Path Cutter can successfully block all kinds of XSS attack for self-propagation • Easy implementation on both server-side and proxy server

  7. Problem Definition Exploitation of a web application vulnerability that enables an attacker to inject client-side scripts into web pages owned by other users. Four steps of Self-Propagating XSS Attack: • Step 1 – Enticement and Exploitation • Step 2 – Privilege Escalation • Step 3 – Replication • Step 4 – Propagation

  8. Related Work • Spectator System – track propagation activity • Sun et al. – Firefox plug-in • Xu et al. – monitor social graph

  9. DESIGN

  10. Main Mechanisms • View Separation • Request Authentication

  11. Key Concepts • Views • A form of a web page or a part of web page • Actions • An operation belonging to a view • Access Control List (ACL) • Actions which a view can perform • Capability • A secret key to validate a request

  12. Dividing Web Applications into Views • Based on semantics User A’s blog website User B’s blog website • Based on URLs http://blog.com/options http://blog.com/update • Based on elements Blogpost User Comments

  13. View Separation • Isolate different pages/views from the server at the client side • Taking advantage of Same-Origin-Policy to prevent DOM access and request forgery http://isolate.blog.com/user/B http://isolate.blog.com/user/B User A Login User A Login <iframe> User B’s Blogpost <div> User B’s Blogpost http://contents.blog.com/user/B/post/1

  14. Request Authentication Authenticate actions using: • Secret Tokens/CapabilityA secret token per view which is not be able to guess, and server-side verify this token to accept the request • Referer-based View ValidationCheck if an action is permitted from certain view in the access control list(ACL) User A Login <iframe> User B’s Blogpost Referer: http://isolate.blog.com/user/B POST http://isolate.blog.com/user/post Referer: http://contents.blog.com/user/B/post/1

  15. IMPLEMENTATION

  16. Server-side Implementation • WordPressOpen Source Blog SystemTotally 43 lines of code modificationURLs Separation • ElggOpen Social Network EngineTotally 2 lines of code modification and 23 lines of plug-inIsolate comment add form into different view echo "<iframe style = ’background:inherit;border:0;margin:0;padding:0’ sandbox=’allow-forms’ scrolling=’no’ height=’400pt’ width=’100%’ src=’http://other.com/echo.php?content=" .urlencode(elgg_view(’input/form’, array(’body’ => $form_body, action’ => "{$vars[’url’]}action/comments/add")))."’/>";

  17. Proxy Implementation • FacebookSeparate user comments into views, and use different URL to get comment contents (2) Redirect isolate.x.com (3) Request isolate.x.com (4) isolate.x.com contents (1) Request content.x.com (6) (7) Proxy Facebook <html><body> <iframesrc="content.x.com/?token=***"> </iframe> </body></html> (5) Request content.x.com/?token=***

  18. Proxy Implementation (Cont.) • User comment separation using echo server http://content.x.com http://content.x.com ... <span data-jsid="text">user comment</span> ... ... <span data-jsid="text"> <iframe scrolling="no" height="100%" sandbox src=“http://foo.com/echo.php?content=user%20coment"> </span> ... Proxy content modification

  19. EVALUATION

  20. Case 1: Boonana Worm Java Applet worm released in October 2010 Propagation Steps: • Visit a profile with malicious Java Applet • Escalate privilege and inject JavaScript into page in client-side using Java vulnerability • Post itself on visitor's wall Path Cutter let Java Applet only gain privilege on isolated page

  21. Case 2: Renren Worm Flash-based worm spread on the Renren Social Networkin 2009 Propagation Steps: • Visit a profile with malicious Flash Object • Escalate privilege and inject JavaScript into page in client-side using Flash vulnerability • Replicate itself on the visitor’s wall Path Cutter block sharing request by isolated views

  22. Case 3: MySpace Samy Worm First XSS worms in MySpace in 2005 Propagation Steps: • Visit a profile with malicious code in a style attribute of <div> tag • Use XMLHttpRequest to get a secret token • Post itself on visitor’s profile using the secret token Path Cutter make XMLHttpRequestunaccessible by view isolation

  23. Case 4: SpaceFlash Worm Flash-based worm on MySpace in 2006 Propagation Steps: • Visit a “About Me” page with malicious Flash Object • Access user’s profile to gain privilege • Send AJAX request to post itself on visitor’s “About Me” page Path Cutter block post request since referer is not “About Me” page

  24. Case 5: Yamanner Worm JavaScript worm spreading in Yahoo! Mail in 2006 Propagation Steps: • Victim open a malicious email and JavaScript executed due to a bug in Yahoo!’s script filter • Worm open victim’s address book and send email to those who are listed in the book Path Cutter deny email sending request because there is no secret token in the request

  25. Experimental Worms • Proof-of-Concept worm • Implementation of worm template • Apply on WordPress and Elgg check_infected(); // check if the user is infected or not xmlhttp = new XMLHttpRequest; xmlhttp.open("POST", post_url,true); xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4) { set_infected(); } } xmlhttp.setRequestHeader("Content-type" , "application/x-www-form-urlencoded"); xmlhttp.setRequestHeader("Content-length" , payload.length); xmlhttp.send(payload); function xhr() { ... } Object.prototype.post = function(uri,arg) { /*** usage: xhr().post(’foo.php’); ***/ this.open(’POST’, uri, true); this.setRequestHeader(’Content-type’ ,’application/x-www-form-urlencoded’); ... this.send(arg); }; /*** source morphing component ***/ Object.prototype.morph = function(s) { ... switch(morphtype) { case "unicode": ... case "charcodes": ... } }

  26. PERFORMANCE

  27. Memory Overhead • <iframe> tags introduce memory overhead • < 10 frames  < 10% memory overhead • ~ 45 frames  ~ 30% memory overhead

  28. Rendering Time Overhead • Observing onload event in Webpage • Elgg implementation: 1.14 secs 1.18 secs (3.5%)

  29. DISSCUSSION

  30. Limitation • Cookie and Content Stealing Attacks • Phishing and ClickJacking Attacks • Drive-by Download Worms

  31. Conclusion • Implement view separation and http request authentication to severing self-propagating XSS attack

More Related