Title:
Efficient Windows Application Fuzzing with Fork-server

dc.contributor.advisor Kim, Taesoo
dc.contributor.author Tong, Stephen
dc.contributor.committeeMember Ahamad, Mustaque
dc.contributor.department Computer Science
dc.date.accessioned 2021-06-30T17:37:26Z
dc.date.available 2021-06-30T17:37:26Z
dc.date.created 2021-05
dc.date.issued 2021-05
dc.date.submitted May 2021
dc.date.updated 2021-06-30T17:37:26Z
dc.description.abstract Fuzzing is an effective technique for automatically uncovering bugs in software. Since it was introduced, it has found thousands of vulnerabilities. Nowadays, fuzzing is an indispensable tool in security researchers' arsenal. Unfortunately, most fuzzing research has been concentrated on Linux systems, and Windows fuzzing has been largely neglected by the fuzzing community. Windows systems still represent a large market share of desktop computers, and as they are end-user systems, they are valuable targets to attackers. Windows fuzzing is still difficult-to-setup, slow, and generally troublesome. There exists a chicken-egg problem: because Windows fuzzing is challenging, little effort is invested in it; yet, because little effort is invested, Windows fuzzing remains challenging. We aim to break this cycle by attacking one of the root problems blocking easy and effective Windows fuzzing. A key difference between Linux and Windows systems for fuzzing is the lack of a fork() functionality on Windows systems. Without a suitable fork() API, a fuzzer cannot quickly and reliably clone processes, an operation that fuzzing relies heavily upon. Existing Windows fuzzers such as WinAFL rely on persistent-mode fuzzing as a work-around for the lack of fast process cloning, unlike Linux fuzzers which rely on a fork-server. In this work, we developed a fork() implementation that provides the necessary fast process cloning machinery and built a working fork-server on top of it. We integrated this fork-server into WinAFL, and applied several other key improvements and insights to bypass the difficulties of fuzzing typical Windows applications. In our evaluation, we ran our fuzzer against 59 fuzzing harnesses for 37 applications, and found 61 new bugs. Comparing the performance of our fork() implementation against other similar APIs on Windows, we found that our implementation was the most suitable and efficient. We believe that this marks the first Windows fork implementation suitable for fuzzing.
dc.description.degree Undergraduate
dc.format.mimetype application/pdf
dc.identifier.uri http://hdl.handle.net/1853/64852
dc.language.iso en_US
dc.publisher Georgia Institute of Technology
dc.subject Fuzzing
dc.subject Software security
dc.subject Software verification
dc.subject Windows OS
dc.subject Fork syscall
dc.title Efficient Windows Application Fuzzing with Fork-server
dc.type Text
dc.type.genre Undergraduate Thesis
dspace.entity.type Publication
local.contributor.advisor Kim, Taesoo
local.contributor.corporatename College of Computing
local.contributor.corporatename School of Computer Science
local.contributor.corporatename Undergraduate Research Opportunities Program
local.relation.ispartofseries Undergraduate Research Option Theses
relation.isAdvisorOfPublication e96debb0-758f-49d4-8ed9-307227ecad78
relation.isOrgUnitOfPublication c8892b3c-8db6-4b7b-a33a-1b67f7db2021
relation.isOrgUnitOfPublication 6b42174a-e0e1-40e3-a581-47bed0470a1e
relation.isOrgUnitOfPublication 0db885f5-939b-4de1-807b-f2ec73714200
relation.isSeriesOfPublication e1a827bd-cf25-4b83-ba24-70848b7036ac
thesis.degree.level Undergraduate
Files
Original bundle
Now showing 1 - 1 of 1
Thumbnail Image
Name:
TONG-UNDERGRADUATERESEARCHOPTIONTHESIS-2021.pdf
Size:
224.91 KB
Format:
Adobe Portable Document Format
Description:
License bundle
Now showing 1 - 1 of 1
No Thumbnail Available
Name:
LICENSE.txt
Size:
3.86 KB
Format:
Plain Text
Description: