Automatic Detection and Fixing of XXE Vulnerabilities Using Static Source Code Analysis and Instance Tracking
Abstract
Programvaresikkerhet er en viktig del av ethvert moderne programvaresystem. XML External Entity angrep er en av de største sikkerhetsrisikoene for web applikasjoner, både i følge OWASP og MITRE. Et vellykket XML External Entity angrep kan ha alvorlige konsekvenser, som tjenestenektangrep, remote code execution, og informasjonsekstraksjon. Det har blitt gjort lite forskning på verktøystøtte for fiksing av XML External Entity angrep. Det har blitt gjort noe forskning på deteksjon av XXE, og fiksing av andre sårbarheter som SQL Injection og Cross-Site Scripting, men ikke for XML External Entities. For å forbedre verktøystøtte for automatisk fiksing av sårbarheter, ønsker vi å finne ut hvordan deteksjon av XXE sårbarheter kan forbedres, og hvordan automatisk fiksing av disse sårbarhetene kan bli utført. For å evaluere det nye auto-fiksing verktøyet ønsker vi også å utforske hvordan test beds kan designes for evaluering av auto-fiks verktøy. Basert på et strukturert litteratursøk ble en rekke deteksjonsteknikker for sårbarheter identifisert. Vi ønsker å bruke disse teknikkene til å forbedre deteksjonen av sårbarheter, og deretter implementere automatisk fiksing av disse sårbarhetene. Før deteksjon og autofiksing kan implementeres, lagde vi en test bed som inneholder test cases som er sårbare mot XXE, og som har muligheten til å evaluere om fiksene klarte å gjøre koden sikker og om funksjonaliteten i koden ble bevart. Vår forskning bidrar med en ny instance tracking metode for å detektere XXE sårbarheter i FindSecBugs, en utvidelse til FindSecBugs som legger til automatisk fiksing for de detekterte sårbarhetene, og en ny test bed for å evaluere deteksjonen og fiksing av XXE. Vår analyse av ulike deteksjonsmetoder viser også at instance tracking er en effektiv måte å forbedre deteksjon av XXE. Vi diskuterer også fordeler og ulemper ved å bruke abstrakte syntaks-trær for å fikse sårbarheter i kildekode. Vi presenterer også et design for en test bed som kan brukes spesifikt for å evaluere autofikser og deteksjon. Web security is an important part of any web-based software system. XML External Entity attacks is one of the biggest security risks for web applications, both according to OWASP and MITRE. A successful XML External Entity attack can have severe consequences like denial of service, remote code execution, and information extraction. There has been done little research into tool support for fixing of XML External Entity attacks. There has been done some research into detection of XXE and fixing of other vulnerabilities like SQL Injection and Cross-Site Scripting, but not XML External Entities. To be better able to advance the field of automatic vulnerability fixing, we wish to find out how XXE vulnerability detection can be improved, and how automatic fixing of these vulnerabilities can be done. To be able to evaluate a new auto fixing tool we also aim to research how a test bed can be designed for evaluating auto fixing tools. Based on a structured literature review a number of vulnerability detection techniques were discovered. We aim to use these techniques to improve the detection in state of the art auto fixing tools, and then implement automatic fixing of these vulnerabilities. Before creating the detection and auto fixing, a test bed will be created containing test cases vulnerable to XXE that can evaluate the effectiveness of the detection and the fixes. Our research contributes a novel instance tracking method to detect XXE vulnerabilities for the tool FindSecBugs, a novel extension for the tool adding auto fixes for the detected vulnerabilities, and a novel test bed for the evaluation of the detection and the auto fixes of XXE. Our analysis of different detection methods also shows that instance tracking is an effective way to improve the detection of XXE. We also discuss both the effectiveness and shortcomings of using abstract syntax trees (ASTs) for fixing vulnerable code, and a design for test beds that are used specifically for evaluation of auto fixes and detection.