200 likes | 367 Views
Ben Livshits and Weidong Cui Microsoft Research Redmond, WA. Spectator: Detection and Containment of JavaScript Worms. Web Application Security Arena. Web application vulnerabilities are everywhere Cross-site scripting (XSS) Dominates the charts “Buffer overruns of this decade ”
E N D
Ben Livshits and Weidong Cui Microsoft Research Redmond, WA Spectator: Detection and Containment of JavaScript Worms
Web Application Security Arena • Web application vulnerabilities are everywhere • Cross-site scripting (XSS) • Dominates the charts • “Buffer overruns of this decade” • Key enabler of JavaScript worms
The Samy Worm • Unleashed by Samy as a proof-of-concept in October 2005
Consequences? • Samytook down MySpace (October 2005) • Site couldn’t cope: down for two days • Came down after 13 hours • Cleanup costs • Yamanner(Yahoo mail) worm (June 2006) • Sent malicious HTML mail to users in the current user’s address book • Affected 200,000 users, emails used for spamming
Samy: Worm Propagation • Initial infection: • Samy’s MySpace page • Injected JavaScript payload exploits a XSS hole • Propagation step: • User views an infected page • Payload executes • Adds Samy as friend • Add payload to user’s page
What’s at the Root of the Problem? • Worms of the previous decade enabled by buffer overruns • JavaScript worms are enabled by cross-site scripting (XSS) • Fixing XSS holes is best, but some vulnerabilities remain • The month of MySpace bugs • Database of XSS vulnerabilities: xssed.com
What Can We Do? • Existing solutions rely on signatures • Ineffective: obfuscated and polymorphic JavaScript worms are very easy to write • Most real-life worms are obfuscated • Fundamental difficulties • Server can’t tell a user request from worm activity • Browser doesn’t know where JavaScript comes from
Worm Propagation payload • u1 uploads to his page • u2 downloads page of u1 • u2 uploads to his page • u3downloads page of u2 • u3uploads to his page • … u1 u2 u3 Propagation chain • Preserve causality of uploads, store as a graph • Detect long propagation chains • Report them as potential worm outbreaks
Spectator Architecture Server-side application page Spectator proxy page Client-side tracking tag tag1 -> tag2 U1 U2 request request tag
Causality Propagation on Client/Server • Tagging of uploaded input <div> <b onclick="javascript:alert(’...’)">...</b> </div> • Client-side request tracking • Injected JavaScript and response headers • Propagates causality information through cookies on the client side <div spectator_tag=56>
Data Representation: Propagation Graph • Propagation graph G: • Records causality between tags (content uploads) • Records IP address (approximation of user) with each • Worm: Diameter(G) > threshold d <t9, ip0> <t3, ip0> <t7, ip0> <t8, ip0> <t5, ip0> <t0, ip0> <t1, ip1> <t2, ip0> <t6, ip0> <t4, ip2>
Approximation Algorithm Complexity • Determining diameter precisely is exponential • Scalability is crucial • Thousands of users • Millions of uploads • Use greedy approximation of the diameter instead
Experimental Overview • Large-scale simulation with OurSpace: • Mimics a social networking site like MySpace • Experimented with various patterns of site access • Looked at the scalability • Real-life case study: • Uses Siteframe, a third-party social networking app • Developed a JavaScript worm for it similar to real-life ones
OurSpace: Large-Scale Simulations • Test-bed: OurSpace • Every user has their own page • At any point, a user can read or write to a page • Write(U1, “hello”); Write(U1, Read(U2)); Write(U3, Read(U1)); • Various access scenarios: • Scenario 1: Worm outbreak (random topology) • Scenario 2: A single long blog entry • Scenario 3: A power law model of worm propagation
Latency of Maintaining Propagation Graph • Tagaddition overhead pretty much constant
Approximation of Graph Diameter • Approximate worm detection works well
Siteframe Experiment • Real-life worm experimentation is difficult • Used Siteframe, open-source blogging system • Found an exploitable XSS • Developed a worm for it • Scripted user behavior • Spectator flags the worm
Conclusions • First defense against JavaScript worms • Fast and slow, mono- and polymorphic worms • Scales well with low overhead • Essence of the approach • Perform distributed data tainting • Look for long propagation chains • Demonstrated scalability and effectiveness