Untangling the Web of Client-Side Cross-Site Scripting
Total Page:16
File Type:pdf, Size:1020Kb
Untangling the Web of Client-Side Cross-Site Scripting Untersuchungen zu Client-seitigem Cross-Site Scripting Der Technischen Fakultät der Friedrich-Alexander-Universität Erlangen-Nürnberg zur Erlangung des Grades DOKTOR-INGENIEUR vorgelegt von Benjamin Stock aus Mainz Als Dissertation genehmigt von der Technischen Fakultät der Friedrich-Alexander-Universität Erlangen-Nürnberg Tag der mündlichen Prüfung: 31.08.2015 Vorsitzende des Promotionsorgans: Prof. Dr.-Ing. habil. Marion Merklein Gutachter: Prof. Dr.-Ing. Felix Freiling Prof. Dr. Michael Backes Abstract The Web’s functionality has shifted from purely server-side code to rich client-side applications, which allow the user to interact with a site without the need for a full page load. While server-side attacks, such as SQL or command injection, still pose a threat, this change in the Web’s model also increases the impact of vulnerabilities aiming at exploiting the client. The most prominent representative of such client- side attacks is Cross-Site Scripting, where the attacker’s goal is to inject code of his choosing into the application, which is subsequently executed by the victimized browsers in the context of the vulnerable site. This thesis provides insights into different aspects of Cross-Site Scripting. First, we show that the concept of password managers, which aim to allow users to choose more secure passwords and, thus, increase the overall security of user accounts, is susceptible to attacks which abuse Cross-Site Scripting flaws. In our analysis, we found that almost all built-in password managers can be leveraged by a Cross-Site Scripting attacker to steal stored credentials. Based on our observations, we present a secure concept for password managers, which does not insert password data into the document such that it is accessible from the injected JavaScript code. We evaluate our approach from a functional and security standpoint and find that our proposal provides additional security benefits while not causing any incompatibilities. Our work then focusses on a sub-class of Cross-Site Scripting, namely Client-Side Cross-Site Scripting. We design, implement and execute a study into the prevalence of this class of flaws at scale. To do so, we implement a taint-aware browsing en- gine and an exploit generator capable of precisely producing exploits based on our gathered data on suspicious, tainted flows. Our subsequent study of the Alexa top 5,000 domains shows that almost one out of ten of these domains carry at least one Client-Side Cross-Site Scripting vulnerability. We follow up on these flaws by analyzing the gathered flow data in depth in search of the root causes of this class of vulnerability. To do so, we first discuss the complexities inherent to JavaScript and define a set of metrics to measure said complexity. We then classify the vulnerable snippets of code we discovered according to these metrics and present the key insights gained from our analysis. In doing so, we find that the reasons for such flaws are manifold, ranging from simple unawareness of developers to incompatibilities between, otherwise safe, first- and third-party code. In addition, we investigate the capability of the state of the art of Cross-Site Script- ing filters in the client, the XSS Auditor, finding that several conceptual issuesexist which an attacker to subvert of its protection capabilities. In total, we show that the Auditor can be bypassed on over 80% of the vulnerable domains in our data set, high- lighting that it is ill-equipped to stop Client-Side Cross-Site Scripting. Motivated by our findings, we present a concept for a filter targeting Client-Side Cross-Site Script- ing, combining taint tracking in the browser in conjunction with taint-aware HTML and JavaScript parsers, allowing us to robustly protect users from such attacks. Zusammenfassung Das Web hat sich gewandelt: von rein server-seitig implementierter Funktionalität zu mächtigen client-seitigen Applikation, die einem Benutzer die Interaktion mit einer Seite ohne Neuladen ermöglichen. Obwohl server-seitige Angriffe, wie etwa SQL- oder Command-Injections, weiterhin ein Risiko darstellen, erhöht sich durch die Änderung am Konzept des Webs auch die Auswirkung von client-seitigen An- griffen. Der bekannteste Vertreter solcher Verwundbarkeiten ist Cross-Site Script- ing (XSS), eine Code-Injection-Attacke, die darauf abzielt, dass der vom Angreifer eingeschleuste Code im Browser seines Opfers mit der verwundbaren Applikation interagieren kann. Diese Arbeit beschäftigt sich mit verschiedenen Aspekten von Cross-Site Script- ing. Zuerst legt sie die Funktionsweise von Passwort-Managern dar, die Benutzer bei der Wahl sichererer Passwörter unterstützen sollen. Eine Analyse des Konzepts an sich und aktueller Browser zeigt jedoch auf, dass Passwort-Manager anfällig für Cross-Site Scripting-Angriffe sind, die das Stehlen von gespeicherten Zugangs- daten ermöglichen. Basierend auf den Erkenntnissen stellt diese Arbeit daraufhin das Konzept eines Passwort-Managers vor, der Zugangsdaten für eingeschleusten Code unerreichbar macht. Die Evaluation in Hinblick auf Funktionalität und Sicherheit zeigt, dass sich durch den vorgestellten Ansatz Vorzüge für die Sicherheit bieten und der präsentierte Ansatz keinen negativen Einfluss auf bestehende Applikationen hat. Anschließend liegt der Fokus dieser Arbeit auf einer Unterklasse von XSS, dem Client-Seitigen Cross-Site Scripting. Sie präsentiert das Design, die Implementierung und die Durchführung einer Studie, deren Ziel es ist, die Verbreitung von Client- Seitigem XSS im Web zu erforschen. Dazu kombiniert die Arbeit einen Browser, der Taint Tracking unterstützt, und einen Exploit-Generator, der basierend auf den gesammelten Datenflüssen Exploits erzeugen kann. Die daraufhin durchgeführte Studie zeigt auf, dass fast jede zehnte Webseite in den Alexa Top 5000 Domains anfällig für Client-Seitiges Cross-Site Scripting ist. Anschließend analysiert diese Arbeit die gefundenen Schwachstellen ausführlich, um die zugrunde liegenden Ur- sachen von Client-Seitigem XSS zu erkunden. Dazu erläutert sie die Komplexität von JavaScript, leitet daraus Metriken zur Messung der Komplexität von verwundbarem Code ab, klassifiziert die erkannten Verwundbarkeiten und präsentiert die Schlüssel- erkenntnisse. Dabei zeigt sich, dass Client-Seitiges Cross-Site Scripting sowohl durch Unwissen von Entwicklern, aber auch durch die Kombination von inkompatiblem eigenen und fremden Code verursacht wird. Im Anschluss analysiert diese Arbeit aktuelle XSS-Filter und zeigt auf, dass mod- erne Filter, wie der XSS Auditor, konzeptionelle Probleme aufweisen, die es einem Angreifer erlauben, den Filter auf 80% der verwundbaren Domains zu umgehen. Diese Arbeit präsentiert daraufhin ein neues Konzept, welches auf Taint Tracking basierend von einem Angreifer eingeschleusten Code im HTML- und JavaScript- Parser erkennt und stoppt. Dies ermöglicht es, Client-Seitiges XSS zu unterbinden, wobei ein akzeptabler Performanz-Verlust und geringe False Positives entstehen. Acknowledgments This thesis was made possible by the invaluable support given to me by others. First and foremost, I want to thank my PhD advisor Felix Freiling for providing me with the opportunity to conduct my research and, more importantly, for initiating my interest in the field of computer security during my days as a student. In addition, I would like to thank Michael Backes for agreeing to be the secondary reviewer for my dissertation. Also, the research conducted throughout this thesis would not have been possible without Martin Johns and Sebastian Lekies, whom I want to thank for the fruitful collaboration during the pursuit of my PhD. I also want to thank my colleagues (in alphabetical order) for supporting this the- sis by proofreading it: Johannes Götzfried, Michael Gruhn, Tilo Müller, Lena Rein- felder, and Johannes Stüttgen. Next to these, I want to thank all my colleagues from the Security Research Group of the University Erlangen-Nuremberg for a friendly and entertaining work environment. Last but not least, I want to thank my parents Karin and Gerd as well as my wife Corina for their love and support over the years and especially during my time in Erlangen. Contents 1 Introduction ................................................... 3 1.1 Contributions . 4 1.2 Publications . 6 1.3 Related work . 7 1.3.1 Password Manager Security . 7 1.3.2 Finding DOM-based Cross-Site Scripting Vulnerabilities . 8 1.3.3 Analysis of Vulnerable JavaSript Code . 9 1.3.4 Filtering and Mitigating Cross-Site Scripting . 10 1.3.5 Utilizing Taint Tracking to Combat Injection Attacks . 12 1.4 Outline . 12 2 Technical Background ......................................... 15 2.1 Web Technologies . 15 2.1.1 HTML and Browsers . 15 2.1.2 JavaScript . 16 2.1.3 Document Object Model . 16 2.2 The Same-Origin Policy . 17 2.3 Cross-Site Scripting. 18 2.3.1 Server-Side Cross-Site Scripting . 19 2.3.2 Client-Side Cross-Site Scripting . 20 2.4 Taint Tracking . 23 2.5 Summary. 24 3 XSS in Action: Abusing Password Managers................. 25 3.1 Attacking Browser-based Password Managers . 25 3.1.1 Functionality of a Password Manager . 25 3.1.2 Stealing Passwords with XSS . 26 3.1.3 Leveraging Password Managers to Automate Attacks . 26 i Contents 3.1.4 Specific Attack Patterns . 27 3.2 Exploring the Password (Manager) Landscape . 29 3.2.1 Password Managers . 29 3.2.2 Password Fields . 33 3.2.3 Assessment . 37 3.3 Client-Side Protection . 37 3.3.1 Concept . 38 3.3.2 Implementation . 38 3.3.3 Evaluation . 40 3.4 Summary. 42 4 Detecting Client-Side Cross-Site Scripting on the Web ...... 43 4.1 Vulnerability Detection . 43 4.1.1 Labeling Sources and Encoding Functions . 44 4.1.2 Patching the V8 JavaScript Engine . 44 4.1.3 Patching the WebKit DOM Implementation . 45 4.1.4 Detection of Sink Access . 45 4.2 Automated Exploit Generation . 46 4.3 Empirical Study . 49 4.3.1 Architecture Overview . 49 4.3.2 Observed Data Flows . 51 4.3.3 Selective Exploit Generation. 52 4.3.4 Discovered Vulnerabilities . 53 4.3.5 Insights of our Study .