Qualitätssicherung ist ein wichtiger Teil des Softwareentwicklungsprozesses. Fehler in der Software können einen hohen wirtschaftlichen Schaden für Firmen und deren Kunden bedeuten. [Dic11] Daher ist die Qualität dieser Software von groer Bedeutung, die unter anderem mit Hilfe von Sicherheitstests hergestellt werden kann. Das Ziel dabei ist es, so viele Sicherheitslücken wie möglich zu nden, weil versteckte Schwachstellen von einem Angreifer gefunden und ausgenützt werden könnten. Eine Möglichkeit hierür ist die Verwendung von automatischen Sicherheitstestwerkzeugen. Heutzutage existieren verschiedene Ansätze undWerkzeuge, um automatisierte Sicherheitstests durchzuführen, allerdings können diese komplexere Angrie, wie zum Beispiel SQL Injections oder XSS Attacken, nicht aufdecken. Eine mögliche Lösung für dieses Problem ist die Verwendung eines automatisierten Sicherheitstestwerkzeuges, das bösartige Eingabewerte an das zu testende System sendet und dann versucht herauszu nden, ob damit eine icherheitslücke gefunden werden konnte. Das Ziel dieser Arbeit ist es, ein automatisiertes Sicherheitstestwerkzeug mit Hilfe von Retesting zu verbessern, sodass es versteckte Sicherheitslücken wie zum Beispiel SQL Injections findet. Zunächst wird eine umfassende Literaturrecherche durchgeführt, in der automatisierte Sicherheitstestwerkzeuge vergleichend dargestellt wurden. Es wird untersucht, wie Sicherheitslücken erkannt werden, und es hat sich gezeigt, dass die meisten dieser Tools nur überprüfen, ob es zu einem Absturz kommt, nachdem bösartige Eingabewerte an die zu testende Applikation gesendet wurden. Dieser Absturz wird als einziges Indiz für die Entscheidung herangezogen, ob eine Schwachstelle gefunden wurde. Daher können Sicherheitslücken, bei denen es zu keinem Absturz kommt, wie zum Beispiel SQL Injections, nicht gefunden werden. Weitere Literaturrecherchen werden durchgeführt zu dem Thema des Retestings selbst sowie zu verschiedenen Konzepten, die notwendig sind, um Retesting im Rahmen eines automatisierten Sicherheitstestwerkzeuges umzusetzen. Beispiele hierfür wären automatisiertes Lernen oder welche Indizien für Sicherheitsfehler auf einem getesteten System gefunden werden können. Basierend auf diesen Recherchen wird in dieser Arbeit ein selbst erarbeitetes Retesting Konzept vorgestellt: Zunächst erfasst das automatische icherheitstestwerkzeug im Rahmen einer Lernphase, wie das normale Verhalten des getesteten Systems wie zum Beispiel die normale Antwortzeit oder die normale CPU Auslastung ist. In der darauffolgenden Testphase werden bösartige Eingabewerte zu dem System gesendet. Wenn dabei ein abnormales Verhalten beobachtet wird, wird ein Retest durchgeführt. Das ist notwendig, um das Ergebnis des ersten Tests zu bestätigen. Dieses Konzept wird in ein schon bestehendes Sicherheitstestwerkzeug eingebaut. Die Ergebnisse im Rahmen eines Machbarkeitsnachweises zeigen, dass Retesting nicht nur hilft, Sicherheitslücken aufzuzeigen, sondern es kann auch die Anzahl der gemeldeten false positives reduzieren.
de
Quality assurance is an important part of the software development process. Defects found in a software can lead to high economic damage for companies and their customers. [Dic11] One part of the software quality assurance is the security testing process. The goal is to nd as many security vulnerabilities as possible, because hidden security errors can be found and exploited by an attacker. One way to do so are automatic security testing tools. Nowadays dierent approaches and tools for automatic security testing exist. The main problem is that they are not capable of revealing complex attacks like for example SQL injections or XSS attacks. A possible solution for this problem is the usage of an automatic security testing tool that sends malicious input values to the system under test and tries to detect, if a security vulnerability can be revealed. The goal for this thesis is to use retesting in order to improve such an automatic security testing tool in its ability to nd hidden vulnerabilities like SQL injections. At rst a literature search is done to nd such automatic security testing tools and to explore how these reveal vulnerabilities. Most of the tools found only check, if an application crashes, after malicious input was sent to the application. The crash is the only indication used to reveal vulnerabilities. Therefore vulnerabilities, where the application does not crash, like SQL injections, can not be found. A further literature search is done to retesting itself and all the dierent concepts that are needed for retesting in automatic security testing tools, like for example how automatic learning can be done or what indications for security errors can be found on a tested system. Quality assurance is an important part of the software development process. Defects found in a software can lead to high economic damage for companies and their customers. [Dic11] One part of the software quality assurance is the security testing process. The goal is to nd as many security vulnerabilities as possible, because hidden security errors can be found and exploited by an attacker. One way to do so are automatic security testing tools. Nowadays dierent approaches and tools for automatic security testing exist. The main problem is that they are not capable of revealing complex attacks like for example SQL injections or XSS attacks. A possible solution for this problem is the usage of an automatic security testing tool that sends malicious input values to the system under test and tries to detect, if a security vulnerability can be revealed. The goal for this thesis is to use retesting in order to improve such an automatic security testing tool in its ability to nd hidden vulnerabilities like SQL injections. At rst a literature search is done to nd such automatic security testing tools and to explore how these reveal vulnerabilities. Most of the tools found only check, if an application crashes, after malicious input was sent to the application. The crash is the only indication used to reveal vulnerabilities. Therefore vulnerabilities, where the application does not crash, like SQL injections, can not be found. A further literature search is done to retesting itself and all the dierent concepts that are needed for retesting in automatic security testing tools, like for example how automatic learning can be done or what indications for security errors can be found on a tested system. Based on this knowledge a self elaborated retesting concept is introduced: In a learning phase, the automatic security testing tool learns the normal behavior of the system under test (like the normal response time or the normal CPU usage). In the following testing phase, malicious input values are sent to the system. If an abnormal behavior is found, then a retest has to be done. This is needed to reassure the result of the rst test. This concept is implemented in an already existing framework of an automatic security testing tool. The results of a proof of concept show that retesting not only helps to reveal vulnerabilities but it can also reduce the number of false positives.