{"id":{"repo_id":"vt","oai_identifier":"oai:vtechworks.lib.vt.edu:10919/135550"},"canonical_url":"https://search.dev.ndltd.org/etd/vt/oai:vtechworks.lib.vt.edu:10919/135550","repository":{"repo_id":"vt","name":"Virginia Tech","base_url":"https://vtechworks.lib.vt.edu/oai/request"},"display":{"title":"Towards Correct and Efficient Persistent Fuzzing: Dynamic Coverage Removal and State Management","abstract":"Coverage-guided fuzzing is a powerful technique for automatically discovering software bugs and security vulnerabilities. This work improves the efficiency and correctness of coverage-guided fuzzers by introducing dynamic removal of redundant coverage instrumentation and implementing a state-managed version of persistent mode. Traditional coverage instrumentation remains active even after code regions have been thoroughly explored, resulting in unnecessary runtime overhead. Meanwhile, persistent fuzzing—used to accelerate input execution by looping the target program in memory—can suffer from state contamination between test cases. To address these challenges, this system dynamically disables coverage tracking for already-covered paths and uses compiler-inserted instrumentation to restore global variables, heap allocations, and file state at the start of each iteration. The result is a fast, self-contained fuzzing framework that improves execution throughput and test isolation, without requiring OS-level support or recompilation.","abstract_html":"Coverage-guided fuzzing is a powerful technique for automatically discovering software bugs and security vulnerabilities. This work improves the efficiency and correctness of coverage-guided fuzzers by introducing dynamic removal of redundant coverage instrumentation and implementing a state-managed version of persistent mode. Traditional coverage instrumentation remains active even after code regions have been thoroughly explored, resulting in unnecessary runtime overhead. Meanwhile, persistent fuzzing—used to accelerate input execution by looping the target program in memory—can suffer from state contamination between test cases. To address these challenges, this system dynamically disables coverage tracking for already-covered paths and uses compiler-inserted instrumentation to restore global variables, heap allocations, and file state at the start of each iteration. The result is a fast, self-contained fuzzing framework that improves execution throughput and test isolation, without requiring OS-level support or recompilation.","abstract_has_math":false,"creators":["Earp, Sydney Kathryn"],"institution":"Virginia Tech","degree_name":"Master of Science","degree_level":"masters","degree_discipline":"Computer Science & Applications","degree_department":"Computer Science and#38; Applications","school":null,"contributors":[],"advisors":[],"committee_chairs":["Hicks, Matthew"],"committee_members":["Yao, Danfeng","Chung, Taejoong Tijay"],"year":2025,"date_issued":"2025-06-12","date_published":"2025-06-12","updated_at":"2026-07-22T22:20:17Z","subjects":["Fuzzing","Software Security","Program Instrumentation"],"languages":["en"],"rights":["In Copyright"],"rights_urls":["http://rightsstatements.org/vocab/InC/1.0/"],"identifier_entries":[{"key":"dc:identifier.other","label":"Dc Identifier Other","values":["vt_gsexam:44126"],"render_values":[{"text":"vt_gsexam:44126","href":null,"code":true}]}]},"links":{"outbound_url":"https://hdl.handle.net/10919/135550","outbound_label":"Handle","outbound_source":"dc:identifier.uri"},"metadata_groups":[{"id":"people","label":"People","entries":[{"key":"dc:contributor.committeechair","label":"Committee Chair","values":["Hicks, Matthew"]},{"key":"dc:contributor.committeemember","label":"Committee Member","values":["Yao, Danfeng","Chung, Taejoong Tijay"]},{"key":"dc:contributor.department","label":"Department","values":["Computer Science and#38; Applications"]},{"key":"dc:creator","label":"Author","values":["Earp, Sydney Kathryn"]}]},{"id":"academic_context","label":"Academic Context","entries":[{"key":"dc:date.accessioned","label":"Dc Date Accessioned","values":["2025-06-21T08:00:28Z"]},{"key":"dc:date.available","label":"Dc Date Available","values":["2025-06-21T08:00:28Z"]},{"key":"dc:date.issued","label":"Date","values":["2025-06-12"]},{"key":"dc:publisher","label":"Institution","values":["Virginia Tech"]},{"key":"dc:type","label":"Dc Type","values":["Thesis"]},{"key":"thesis:degree_discipline","label":"Discipline","values":["Computer Science & Applications"]},{"key":"thesis:degree_level","label":"Degree Level","values":["masters"]},{"key":"thesis:degree_name","label":"Degree Name","values":["Master of Science"]},{"key":"thesis:institution_name","label":"Thesis Institution Name","values":["Virginia Polytechnic Institute and State University"]}]},{"id":"subjects_keywords","label":"Subjects and Keywords","entries":[{"key":"dc:subject","label":"Dc Subject","values":["Fuzzing","Software Security","Program Instrumentation"]}]},{"id":"language_rights","label":"Language and Rights","entries":[{"key":"dc:language.iso","label":"Language (ISO)","values":["en"]},{"key":"dc:rights","label":"Dc Rights","values":["In Copyright"]},{"key":"dc:rights.uri","label":"Rights URI","values":["http://rightsstatements.org/vocab/InC/1.0/"]}]},{"id":"identifiers","label":"Identifiers","entries":[{"key":"dc:identifier.other","label":"Dc Identifier Other","values":["vt_gsexam:44126"]},{"key":"dc:identifier.uri","label":"Identifier URI","values":["https://hdl.handle.net/10919/135550"]}]},{"id":"additional","label":"Additional Metadata","entries":[{"key":"dc:description.abstract","label":"Abstract","values":["Coverage-guided fuzzing is a powerful technique for automatically discovering software bugs and security vulnerabilities. This work improves the efficiency and correctness of coverage-guided fuzzers by introducing dynamic removal of redundant coverage instrumentation and implementing a state-managed version of persistent mode. Traditional coverage instrumentation remains active even after code regions have been thoroughly explored, resulting in unnecessary runtime overhead. Meanwhile, persistent fuzzing—used to accelerate input execution by looping the target program in memory—can suffer from state contamination between test cases. To address these challenges, this system dynamically disables coverage tracking for already-covered paths and uses compiler-inserted instrumentation to restore global variables, heap allocations, and file state at the start of each iteration. The result is a fast, self-contained fuzzing framework that improves execution throughput and test isolation, without requiring OS-level support or recompilation."]},{"key":"dc:description.abstractgeneral","label":"General Abstract","values":["Modern software systems are complex, and finding bugs or vulnerabilities in them is difficult and time-consuming. One popular method to automate this process is called fuzzing, where a program is repeatedly tested using random or unexpected inputs to see if it crashes or behaves incorrectly. This research focuses on a particular kind of fuzzing that uses feedback to explore new parts of the program. However, this approach can be inefficient—it often checks the same parts of the program repeatedly and may reuse parts of memory that still contain leftovers from previous tests, which can cause inaccurate results. This work improves the speed and reliability of fuzzing by removing unnecessary checks and ensuring that the program starts fresh for every test. These improvements make fuzzing faster and more trustworthy for finding bugs in real software."]},{"key":"dc:description.degree","label":"Dc Description Degree","values":["Master of Science"]},{"key":"dc:format.medium","label":"Dc Format Medium","values":["ETD"]},{"key":"dc:title","label":"Title","values":["Towards Correct and Efficient Persistent Fuzzing: Dynamic Coverage Removal and State Management"]}]}],"canonical_facts":{"dc:contributor.committeechair":["Hicks, Matthew"],"dc:contributor.committeemember":["Yao, Danfeng","Chung, Taejoong Tijay"],"dc:contributor.department":["Computer Science and#38; Applications"],"dc:creator":["Earp, Sydney Kathryn"],"dc:date.accessioned":["2025-06-21T08:00:28Z"],"dc:date.available":["2025-06-21T08:00:28Z"],"dc:date.issued":["2025-06-12"],"dc:description.abstract":["Coverage-guided fuzzing is a powerful technique for automatically discovering software bugs and security vulnerabilities. This work improves the efficiency and correctness of coverage-guided fuzzers by introducing dynamic removal of redundant coverage instrumentation and implementing a state-managed version of persistent mode. Traditional coverage instrumentation remains active even after code regions have been thoroughly explored, resulting in unnecessary runtime overhead. Meanwhile, persistent fuzzing—used to accelerate input execution by looping the target program in memory—can suffer from state contamination between test cases. To address these challenges, this system dynamically disables coverage tracking for already-covered paths and uses compiler-inserted instrumentation to restore global variables, heap allocations, and file state at the start of each iteration. The result is a fast, self-contained fuzzing framework that improves execution throughput and test isolation, without requiring OS-level support or recompilation."],"dc:description.abstractgeneral":["Modern software systems are complex, and finding bugs or vulnerabilities in them is difficult and time-consuming. One popular method to automate this process is called fuzzing, where a program is repeatedly tested using random or unexpected inputs to see if it crashes or behaves incorrectly. This research focuses on a particular kind of fuzzing that uses feedback to explore new parts of the program. However, this approach can be inefficient—it often checks the same parts of the program repeatedly and may reuse parts of memory that still contain leftovers from previous tests, which can cause inaccurate results. This work improves the speed and reliability of fuzzing by removing unnecessary checks and ensuring that the program starts fresh for every test. These improvements make fuzzing faster and more trustworthy for finding bugs in real software."],"dc:description.degree":["Master of Science"],"dc:format.medium":["ETD"],"dc:identifier.other":["vt_gsexam:44126"],"dc:identifier.uri":["https://hdl.handle.net/10919/135550"],"dc:language.iso":["en"],"dc:publisher":["Virginia Tech"],"dc:rights":["In Copyright"],"dc:rights.uri":["http://rightsstatements.org/vocab/InC/1.0/"],"dc:subject":["Fuzzing","Software Security","Program Instrumentation"],"dc:title":["Towards Correct and Efficient Persistent Fuzzing: Dynamic Coverage Removal and State Management"],"dc:type":["Thesis"],"thesis:degree_discipline":["Computer Science & Applications"],"thesis:degree_level":["masters"],"thesis:degree_name":["Master of Science"],"thesis:institution_name":["Virginia Polytechnic Institute and State University"]},"updated_at":"2026-07-22T22:20:17Z"}