Falb, K. (2017). Design and implementation of a model-based test data generation framework for automated web application security testing [Diploma Thesis, Technische Universität Wien]. reposiTUm. http://hdl.handle.net/20.500.12708/78775
web applications; security; model based testing; test data generation; automated testing
en
Abstract:
Moderne Webanwendungen werden verwendet, um Bankgeschäfte durchzuführen, einzukaufen, mit anderen zu kommunizieren, und vieles mehr. Die hohe Komplexität dieser Anwendungen führt jedoch zu einer immer größer werdenden Anzahl von Sicherheitslücken, die nicht nur die vertraulichen Daten von Nutzern gefährden, sondern auch dem Geschäft der Betreiber schaden. Eine Technik, die Webanwendungen sicherer machen kann, sind Sicherheitstests. Da ein Großteil der Sicherheitslücken dadurch entsteht, dass eine Anwendung mit gewissen Eingabedaten nicht umgehen kann, müssen bei Sicherheitstests große Mengen an möglicherweise problematischen Daten erzeugt werden. Daher ist es von Vorteil, diese Abläufe zu automatisieren. In dieser Arbeit wird ein Framework zur Testdatengenerierung für funktionale Tests und Sicherheitstests entworfen und umgesetzt. Dabei wird ein modellbasierter Ansatz gewählt: Die Struktur einer Anwendung wird von einem Tester als Modell formalisiert. Parallel dazu können Sicherheitsexperten Strategien implementieren, die Testdaten für ein solches Modell generieren. Solche Teststrategien sind allerdings von konkreten Anwendungen unabhängig und daher wiederverwendbar. Die Funktionsweise wird mit einer beispielhaften Implementierung wie folgt nachgewiesen: Eine einfache Strategie zur Testdatengenerierung für Sicherheitstests wird implementiert. Es wird eine Open-Source-Webanwendung mit bekannten Sicherheitslücken ausgewählt. Für diese Anwendung werden zuerst funktionale Tests entwickelt. Mithilfe der daraus entstandenen Modelle werden schließlich Sicherheitstests mit der zuvor implementierten Strategie durchgeführt. Diese Tests fanden drei potentielle Sicherheitslücken, sowie zwei Programmfehler. Diese Arbeit bietet folgenden Mehrwert: Erstens trennt das Framework die Aufgaben von Testern, die Testmodelle basierend auf ihrem Domänenwissen erstellen, sowie Sicherheitsexperten, die Teststrategien mithilfe ihres Fachwissens implementieren. Zweitens eröffnet das Framework die Möglichkeit zur Code-Wiederverwendung, da es sowohl für funktionale Tests als auch für Sicherheitstests ausgelegt ist. Drittens wird die Durchführung von Sicherheitstests zu einem früheren Zeitpunkt ermöglicht, da die Sicherheitstests ausgeführt werden können, sobald Testmodelle entwickelt wurden.
de
Modern web applications are used in order to communicate with others, to carry out banking transactions, to do shopping, and more. The complexity of these applications contributes to the increasing number of security vulnerabilities found, which endangers not only the data of users, but also the business of companies operating the applications. A technique to make applications more secure is security testing. Since a large number of vulnerabilities is caused by unanticipated input, security testing requires submitting large amounts of possibly dangerous input to an application. Thus, it is desirable to automate this process. In this thesis, a framework for test data generation designed for both functional testing and security testing will be designed and implemented. It uses a model-based approach: The structure of an application is expressed by a tester in a test model. Security professionals create application- independent, reusable testing strategies, which can then generate test data for a model. The framework is evaluated by conducting a proof-of-concept. A simple security test data generation strategy is implemented. An open source application containing known vulnerabilities is selected. Functional tests are performed on this application. The models created for the functional tests are then reused for performing security tests using the implemented strategy. These tests found three potential security vulnerabilities and two bugs in the application. The contributions of this thesis are as follows: First, the framework separates the concerns between testers, who create test models based on their domain knowledge, and security professionals, who implement test data generation strategies. Second, the framework provides opportunities for code reuse, since it is suitable for both functional and security testing. Third, it allows to perform security testing earlier in the development lifecycle, since security tests can be performed as soon as models have been developed.