Despite growing research interest, existing directed grey-box fuzzers do not scale well with program complexity. In this paper, we identify two major scalability challenges for current directed grey-box fuzzing. Particularly, we find that traditional coverage feedback does not always provide meaningful guidance for reaching the target program point(s), and the existing seed distance mechanism does not operate well with programs with complex control structures. To address these problems, we present a novel fuzzer, named DAFL. DAFL selects code parts that are relevant to the target location and obtains coverage feedback only from those parts. Furthermore, it computes precise seed distances considering the data-flow semantics of program executions. The results are promising. Out of 41 real-world bugs, DAFL was able to find 4, 6, 9, and 5 more bugs within the given time, compared to AFL, AFLGo, WindRanger, and Beacon, respectively. Furthermore, among the cases where all fuzzers produced a median TTE, DAFL was at least 4.99 times faster on average compared to 3 state-of-the-art directed fuzzers including AFLGo, WindRanger, and Beacon.
지금까지 받아온 많은 관심에도 불구하고 기존의 지향성 반투명(directed grey-box) 퍼저들은 복잡한 프로그램에 대해 한계를 가진다. 본 논문에서는 지향성 반투명 퍼저들이 마주한 두 가지 주요한 문제를 다루고자 한다. 첫째, 전통적인 커버리지 피드백은 목표 프로그램 지점에 도달하기 위한 유용한 가이드를 제공하지 못한다. 둘째, 기존의 시드 거리(seed distance) 계산방식은 복잡한 제어 구조를 가진 프로그램에서 그 한계를 드러낸다. 위와 같은 문제들을 해결하기 위해 우리는 새로운 지향성 반투명 퍼저인 DAFL을 제안한다. DAFL은 목표지점과 연관성이 있는 코드 지점들을 식별하고, 해당 부분으로부터만 커버리지 피드백을 받는다. 더 나아가 DAFL은 프로그램 실행의 데이터 흐름을 고려하여 보다 정확한 시드 거리를 계산한다. DAFL의 실험 결과는 매우 고무적이다. 41개의 실제 결함 중 DAFL은 AFL, AFLGo, WindRanger, Beacon 과 비교하여 각각 4, 6, 9, 5개의 결함을 더 빠르게 발견했다. 또한, 모든 퍼저들이 결함을 발견한 경우에 DAFL은 AFLGo, WindRanger, Beacon과 비교하여 최소 4.99배 더 빠르게 결함을 발견했다.