Weissbacher, M. (2014). ZigZag : hardening web applications against CSV attacks [Diploma Thesis, Technische Universität Wien]. reposiTUm. http://hdl.handle.net/20.500.12708/158708
E184 - Institut für Informationssysteme ; Institut für Rechnergestützte Automation
-
Date (published):
2014
-
Number of Pages:
51
-
Keywords:
Web security; HTML5; client-side input validation vulnerabilities
de
Web security; HTML5; client-side input validation vulnerabilities
en
Abstract:
Im Gegensatz zu klassischen Serverseitigen Programmen zeichnet sich bei modernen Web Applikationen ein Trend ab, mehr Programmlogik auf die Clientseite auszulagern. Da die Popularität von HTML5 APIs wie etwa postMessage steigt, spielen Schwachstellen in clientseitigem Programmcode, im speziellen Client-Side Validation (CSV) Vulnerabilities eine immer wichtiger werdende Rolle. Bisher wurde vor allem die Erkennung und Abwehr von Angriffen gegen die Serverseite von Web Applikationen erforscht. Angriffe und Sicherungsmassnahmen für die Clientseite erfuhren weniger Aufmerksamkeit. Um in Zukunft Web Anwendungen besser zu schützen, müssen Clientseitige Angriffe wie CSV direkt im Browser erkannt werden, da serverseitige Schutzmechanismen dafür nicht eingesetzt werden können. Ziel dieser Arbeit ist ein System zur Härtung von JavaScript Web Applikationen gegen CSV Schwachstellen. ZigZag erlaubt es transparent clientseitigen Code zu instrumentieren um dynamische Erkennung von Invarianten für sicherheitsrelevanten Code durchzuführen. Es werden durch das System Modelle generiert die beschreiben in welcher Art Programmkomponenten auf der Clientseite interagieren können. ZigZag unterstüzt JavaScript welches serverseitig durch Templates generiert wurde, und vermeidet dadurch wiederholte Instrumentierung wenn JavaScript Programme mit ähnlicher Struktur bereits Instrumentiert wurden. Sobald genug Daten gesammelt wurden um ein Modell für ein Programm zu generieren, wird in den Enforcement-mode geschaltet um wahlweise Angriffe zu Erkennen oder Abzuwehren. Durch Evaluierung des Systems haben wir festgestellt, dass ZigZag fähig ist automatisch clientseitigen Code zu härten, um Angriffe sowohl gegen bekannte als auch bisher unbekannte Schwachstellen abzuwehren. Abschließend demonstrieren wir, dass der Overhead von ZigZag großteils akzeptabel ist. Weiters zeigen wir, dass unser System kompatibel ist mit Websites der Alexa Top 20, ohne Eingreifen von Entwicklern.
de
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 master's thesis, 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.
en
Additional information:
graph. Darst. Abweichender Titel laut Übersetzung der Verfasserin/des Verfassers Zsfassung in dt. Sprache