title: Evolutionary Constraint-Based Testing Approach for Software Vulnerability Detection
Creators: name: Al Sardy, Loui
Publisher: name: Friedrich-Alexander-Universität Erlangen-Nürnberg (FAU)
Year: 2024
Subjects: subject: Software Vulnerability Detection, Guided Search Pattern Testing, Buffer Overflow Detection, Static and Dynamic Analysis, Genetic Algorithms in Software Testing, Heuristic Optimization in Cybersecurity, Cybersecurity, Targeted Fuzzing Techniques, Security Flaw Detection, Local vs Global Optimization Algorithms, Memory Exploitation Attacks, Machine Code Analysis, Syntactical Constraint Analysis, Disassembling Analysis, Cybersecurity Testing Methods, Software Security Testing, Overlapping Machine Instructions, Vulnerability Detection Techniques, Software Testing Efficiency, Security Testing Approaches, Optimization in Vulnerability Testing

description: As software systems continue to advance in complexity and cyber security attacks become increasingly sophisticated, it is essential to develop effective approaches for detecting security flaws during the testing phase. This thesis introduces a systematic Guided Search Pattern (GSP) testing approach to enhance the early detection of software vulnerabilities. The GSP testing approach combines static and dynamic analysis techniques, involving three phases: restricting the search space; analyzing and determining the search target constraint; and searching for scenarios that satisfy the target constraint. The practical applicability and effectiveness of the proposed approach are demonstrated through practical examples and experimental evaluations, focusing on the specific vulnerability class of buffer overflow. Two heuristic approaches utilizing genetic algorithms are developed to generate optimized test cases for detecting buffer overflows and underflows. These approaches leverage guiding constraints derived from the static analysis phase. The experimental evaluations highlight the superiority of local optimization algorithms over global ones. In addition, the GSP approach is compared with other Fuzzing approaches based on various characteristics, providing insights into their strengths and weaknesses in terms of vulnerability detection and required effort. These comparisons are performed on examples known to contain exploitable buffer overflows. The results indicate that dedicated approaches are more effective in detecting buffer overflow vulnerabilities within specified time limits, particularly for complex logic buffer overflows, while target-generic fuzzers show lower effectiveness and require more time in the event of vulnerability detection. The GSP approach outperforms target-generic fuzzers in terms of success rate and execution time, as a result of the insights gained from the static analysis phase, enabling precise targeting of input data with the highest likelihood of detecting vulnerabilities. Furthermore, the proposed approach is applied to analyse a recent type of attack that exploits overlapping machine instructions of variable length. The analysis begins with a preliminary classification of memory space to identify potential hidden malicious code. Two analyses, namely syntactical constraint analysis and disassembling analysis, are performed to filter out machine code addresses that cannot contain the identified malicious segments. The disassembling analysis proves to be more effective regarding effort required and constraint coverage, as demonstrated in the analysis of push instructions with opcode FF. In summary, the findings highlight the complementary nature of dedicated test approaches, such as the GSP approach, which focuses on specific vulnerability classes, and generic test approaches like AFL and Radamsa, which aim to detect arbitrary vulnerabilities. The research conducted in this thesis provides valuable knowledge and insights that contribute to advancing the detection of software vulnerabilities.
description: Da Softwaresysteme immer komplexer werden und Angriffe auf die Cybersicherheit immer ausgeklügelter werden, ist es unerlässlich, effektive Ansätze zur Erkennung von Sicherheitslücken während der Testphase zu entwickeln. In dieser Arbeit wird ein systematischer Guided Search Pattern (GSP) Testansatz entwickelt, um die Früherkennung von Software-Schwachstellen zu ermöglichen. Der GSP-Testansatz kombiniert statische und dynamische Analysetechniken und besteht aus drei Phasen: Eingrenzung des Suchraums, Analyse und Bestimmung des sogenannten Search Target Constraints und Suche nach Szenarien, die dieses Constraint erfüllen. Die praktische Anwendbarkeit und Effektivität des vorgeschlagenen Ansatzes wird anhand praktischer Beispiele und experimenteller Auswertungen demonstriert, wobei der Schwerpunkt auf der spezifischen Schwachstellenklasse des Pufferüberlaufs liegt. Zwei heuristische Ansätze, die genetische Algorithmen verwenden, werden entwickelt, um optimierte Testfälle für die Erkennung von Pufferüberläufen und -unterläufen zu erzeugen. Diese Ansätze nutzen die aus der statischen Analysephase abgeleiteten Guiding Constraints. Die experimentellen Auswertungen zeigen die Überlegenheit von Verfahren, die auf lokale Optimierung basieren, im Vergleich zu solchen, die eine globale Optimierung verfolgen. Darüber hinaus wird der GSP-Ansatz mit anderen Fuzzing-Ansätzen auf der Basis verschiedener Merkmale verglichen, wobei Einblicke in ihre Stärken und Schwächen in Bezug auf die Erkennung von Schwachstellen und den erforderlichen Zeitaufwand gegeben werden. Diese Vergleiche werden anhand von Beispielen durchgeführt, für die bekannt ist, dass sie ausnutzbare Pufferüberläufe enthalten. Die Ergebnisse zeigen, dass spezifische Ansätze effektiver bei der Erkennung von Pufferüberlauf-Schwachstellen innerhalb bestimmter Zeitgrenzen sind, insbesondere bei komplexen logischen Pufferüberläufen, während zielgenerische Fuzzers eine geringere Effektivität zeigen und mehr Zeit im Fall der Erkennung von Pufferüberlaufschwachstellen benötigen. Der GSP-Ansatz ist im Hinblick auf die Erfolgsquote und die Ausführungszeit erfolgreicher als generische Fuzzers, was auf die Erkenntnisse aus der statischen Analysephase zurückzuführen ist, die eine präzise Auswahl von Eingabedaten mit hoher Aussicht auf Erkennung von Sicherheitslücken ermöglicht. Außerdem wird der vorgeschlagene Ansatz angewandt, um eine neue Art von Angriffen zu analysieren, die überlappende Maschineninstruktionen mit variabler Länge ausnutzen. Die Analyse beginnt mit einer ersten Klassifizierung des Speicherbereichs, um potenziell versteckten bösartigen Code zu identifizieren. Zwei Analyseverfahren – eine basierend auf syntaktische Constraints und die andere basierend auf Disassemblierung – werden untersucht, um Maschinencodeadressen herauszufiltern, die die identifizierten bösartigen Segmente nicht enthalten können. Die Disassemblierungsmethode ist effektiver in Bezug auf den erforderlichen Aufwand und die Constraint-Überdeckung, wie die Analyse von Push-Anweisungen mit Opcode FF gezeigt hat. Zusammengefasst unterstreichen die Ergebnisse die Komplementarität von spezifischen Testansätzen wie dem GSP-Ansatz, der sich auf bestimmte Schwachstellenklassen konzentriert, und generischen Testansätzen wie AFL und Radamsa, die auf die Erkennung beliebiger Schwachstellen ausgerichtet sind. Die in dieser Arbeit durchgeführten Untersuchungen liefern wertvolle Erkenntnisse und Einsichten, die dazu beitragen, die Erkennung von Softwareschwachstellen voranzutreiben.