ZigZag: Automatically Hardening Web Applications Against Client-side Validation Vulnerabilities
Speaker/Bio
Michael Weissbacher is a PhD student and Research Assistant at the
SecLab of Northeastern University. His research interests are focused
on the security of web applications on both client and server side.
Michael plays CTFs with Shellphish.
Abstract
Modern web applications are increasingly moving program code to the
client in the form of JavaScript. With the growing adoption of HTML5
APIs such as postMessage, client-side validation (CSV) vulnerabilities
are consequently becoming increasingly important to address as well.
However, while detecting and preventing attacks against web
applications is a well-studied topic on the server, considerably less
work has been performed for the client. Exacerbating this issue is
the problem that defenses against CSVs must, in the general case,
fundamentally exist in the browser, rendering current server-side
defenses inadequate.
In this talk, we present ZigZag, a system for hardening
JavaScript-based web applications against client-side validation
attacks. ZigZag transparently instruments client-side code to perform
dynamic invariant detection on security-sensitive code, generating
models that describe how -- and with whom -- client-side components
interact. ZigZag is capable of handling templated JavaScript,
avoiding full re-instrumentation when JavaScript programs are
structurally similar. Learned invariants are then enforced through a
subsequent instrumentation step. Our evaluation demonstrates that
ZigZag is capable of automatically hardening client-side code against
both known and previously-unknown vulnerabilities. Finally, we show
that ZigZag introduces acceptable overhead in many cases, and is
compatible with popular websites drawn from the Alexa Top 20 without
developer or user intervention.