Uncovering Software Vulnerabilities Using Source Code Analysis and Fuzzing
Bachelor thesis
![Thumbnail](/ntnu-xmlui/bitstream/handle/11250/3138726/no.ntnu%3ainspera%3a187443388%3a234867863.pdf.jpg?sequence=5&isAllowed=y)
Permanent lenke
https://hdl.handle.net/11250/3138726Utgivelsesdato
2024Metadata
Vis full innførselSamlinger
Sammendrag
Målet med denne oppgaven er å utforske hvordan statisk kildekodeanalyse og fuzzing kan brukes til å avdekke sårbarheter i programmer skrevet i et lavnivåspråk. I denne oppgaven vil vi gjennomføre en penetrasjonstest av Netsurf, en selvstendig nettleser skrevet i programmeringsspråket C.
Ettersom antallet trusler innen cybersikkerhet øker, og stadig flere skrivebordsapplikasjoner flyttes inn i nettleseren, er behovet for å sikre nettleseren større enn noen gang. Nettleseren er et essensielt verktøy for alle som bruker den til produktivitetsarbeid, kommunikasjon, underholdning, banktjenester og en rekke andre formål, som tydeliggjør behovet for å sikre den.
Vi skal bruke verktøy og teknikker innen statisk kildekodeanalyse og fuzzing for å lete etter svakheter i NetSurf. Gjennom denne forskningen skal vi vurdere disse to metodene ved å sammenligne hvor godt de fungerer i forskjellige situasjoner. Før vi setter igang med den praktiske penetrasjonstestingen skal vi først forklare sentrale teoretiske konsepter og begreper rundt penetrasjonstesting, statisk kildekodeanalyse, fuzzing og sårbarheter i programvare.
Vi vil bruke våre funn og erfaringer fra denne testingen til å sammenligne de forskjellige verktøyene og metodene vi har brukt. Disse resultatene kan brukes sammen med tidligere forskning som bakgrunn når vi svarer på forskningsspørsmålene og problemstillingen vår. Til slutt vil vi konkludere med at disse to metodene kan utfylle hverandre godt, og at kombinasjonen av de to kan være effektiv for å avdekke en rekke forskjellige programvarefeil og sårbarheter i et prosjekt som NetSurf. This thesis aims to explore the capabilities of source code analysis and fuzzing for uncovering vulnerabilities in programs written in a systems programming language. We will be conducting a penetration test on NetSurf, an independent web browser written in the C programming language.
With a rapid increase in the number of cybersecurity threats, and more applications moving from the desktop into the web browser, the security of the browser is more important than ever. The browser is an essential tool for anyone who uses the web for productivity, communication, entertainment, finance, or a plethora of other tasks, emphasizing the need to keep it secure.
We will utilize tools and techniques for source code analysis and fuzzing to search for vulnerabilities in NetSurf. Throughout our research, we will compare the capabilities of these two methods, and evaluate their performance and usability in different situations. Before going into the practical penetration test, we will first explain central concepts surrounding penetration testing, source code analysis, fuzzing, and software vulnerabilities in general.
The findings and experiences from our testing will be used to evaluate and compare the different tools and techniques in question. We will use these results in combination with previous research as a background to find answers to our research questions and problem statement. In the end, we will conclude that source code analysis and fuzzing can complement each other, and the combination of both techniques can successfully uncover a wide range of bugs and vulnerabilities in a project like NetSurf.