A seminar by Ben Livshits
- 11:00 11th September 2015 ( Trinity Term 2015 )Tony Hoare Room, Robert Hooke Building
Over the last several years, JavaScript malware has emerged as one of the most insidious ways to attack unsuspecting users through their web browsers. This talk covers a series of projects that use ideas from program analysis, both static and runtime, to find --- and fight --- JavaScript malware.
A number of these academic projects have been successfully deployed within Bing and have been used daily to find and block malicious web sites, constituting one of the largest-scale deployments of such techniques. This talk will focus on the complex interplay between static and runtime analyses and outline some of the lessons learned in migrating research ideas to real-world products.
I will present the key ideas and insights behind four of the systems with increasingly dazzling names we have created: Nozzle, Zozzle, Rozzle, and Kizzle. Nozzle is a runtime malware detector that focuses on finding heap spraying attacks. Zozzle is a mostly static detector that finds heap sprays and other types of JavaScript malware. Rozzle leverages a novel technique we call multi-execution to address the problem of client-side cloaking, an avoidance tactic used by malware to escape detection. Lastly, Kizzle is a system that finds exploit kits, the most sophisticated form of JavaScript malware to date.
These systems all share two characteristics that are key to their deployability: they are fast and extremely precise. For example, Zozzle's false positive rate is about one in a million, while Nozzle's is close to one in a billion.