title: Automated XSS vulnerability detection through context aware fuzzing and dynamic analysis
Creators: name: Fink, Tobias
Publisher: name: TU Wien
Year: 2018
Subjects: subject: XSS vulnerability detection
subject: cross site scripting
subject: automated detection
subject: dynamic analysis
subject: web application entry points
subject: web app control flow analysis
subject: XSS payloads
subject: data flow analysis
subject: black-box testing

description: Cross Site Scripting (XSS) Angriffe sind bereits seit langem bekannt und obwohl eine breite Palette an Gegenmaßnahmen vorgestellt wurde, ging das Auftreten von neuen XSS Schwachstellen nur marginal zurück. Auf der anderen Seite erhöht sich die Zahl an Angriffen sowie deren Raffinesse, da immer mehr Anwendungen Code vom Server auf den Client auslagern. Existierende Programme zur Schwachstellenanalyse in diesem Sektor weisen oft nur eine ungenügende Genauigkeit beim Aufspüren solcher Fehler auf. Deshalb beschäftigt sich diese Arbeit mit der Lösung der folgenden Probleme: (i) Unzureichende Testumgebungen zur Auswertung bestehender Tools, (ii) Fehlende Vergleiche bereits existierender Black-Box Analysetools, (iii) Entwicklung und Implementierung von Methoden zur effektiven Erkennung von XSS Schwachstellen. Die automatisierte Auswertung von Analyseprogrammen bedarf einer Testumgebung, welche eine möglichst hohe Abdeckung an diversen XSS Schwachstellen bietet. Da existierende Frameworks hier große Mängel aufweisen, wurde eine eigene Anwendung entwickelt um möglichst viele Kombinationen unterschiedlicher Dateneingangs und - ausgangspunkte, sowie Filtermechanismen in Webanwendungen abzubilden, welche zuvor in keinem Testset enthalten waren. Basierend auf dieser Testumgebung wurde eine großangelegte Studie zu frei verfügbaren XSS Scannern durchgeführt. Die Auswertung zeigt, dass existierende Tools nur unzureichende Ergebnisse liefern. Speziell bei den Varianten der DOM-basierten und persistenten Schwachstellen konnten die meisten überhaupt keine Testfälle erkennen. Um den Stand von offenen und frei verfügbaren Werkzeugen zu verbessern stellen wir daher eine eigene Black-Box Methodik zum effizienten Erkennen von XSS Schwachstellen in Webanwendungen vor, welche aus zwei wesentlichen Teilen besteht. Zuerst wird eine Analyse der Datenflüsse innerhalb der Anwendung durchgeführt um Informationen zu deren Eingangsund Ausgangskontext sowie eventuell vorhandene Filterund Sicherheitsmaßnahmen zu erhalten. Anschließend werden diese zuvor identifizierten Datenkanäle durch Fuzzing mit speziell adaptierten Angriffen getestet und dynamisch in einem integrierten Browser ausgewertet. Diese dynamische Verifizierung erlaubt es falsch positive Ergebnisse zu vermeiden. Die Evaluierung des entwickelten Prototypen zeigt auf, dass die neu entwickelte Methodik im Vergleich zu existierenden frei verfügbaren Tools in der Lage ist in annähernd der selben Zeit eine signifikant höhere Anzahl an ausnutzbaren Schwachstellen zu identifizieren.
description: Cross Site Scripting (XSS) attacks have been around for a long time and while a multitude of countermeasures and mitigation techniques have been researched, XSS vulnerabilities did not decline much. The number of attacks and their sophistication increases as more and more code is shifted into the client side of web applications. Therefore this thesis deals with the following challenges: (i) Creating and implementing a method for efficient XSS detection, (ii) the lack of coverage of current testbeds regarding types and possibilities of XSS, (iii) the missing comparisons and analysis of existing black-box scanners. A testing environment was created covering a large number of diverse XSS vulnerabilities in 1808 distinct test cases so that black-box scanning tools can be evaluated and compared with regard to their performance. The focus was to maximize combinations of different input and output contexts together with filtering mechanisms and also to minimize the complexity of the web application and test case structure in order to make them easily accessible for automated scanners. The test cases of already existing testbeds, which often only feature a handful of simple XSS test cases, were integrated and many more new and advanced ones implemented. Based on the previous findings an approach to efficiently detect XSS vulnerabilities is presented and implemented in a fully automated scanner prototype. The approach is based on data flow detection together with input and output context analysis. This allows the construction of specialized and environment sensitive attack payloads. The scanner additionally collects information about potential input filters and sanitization mechanisms and evaluates these against several evasion methods. The gathered data flows are then fuzz tested with specifically tailored payloads. Finally, detected vulnerabilities and attack vectors are verified dynamically to ensure a zero false positive rate. Several automated vulnerability scanners that try to detect XSS flaws exist, but no large scale comparison of their performance regarding detection rate is available. Therefore existing free and open source analysis tools were evaluated against the created testbed, uncovering that most of them lack proper detection capabilities especially in the sectors of DOM-based and stored cross site scripting. Many could not even detect a single vulnerability in the test cases of these two categories. The evaluation of the prototype implementation of the new approach shows, that it is able to detect significantly more vulnerabilities than other open source scanners. This is achieved while the time required for the scanning process stays in the range of the best performing open source tools.