
Coverage-guided fuzzers expose bugs by progres-sively mutating testcases to drive execution to new programlocations. Code coverage is currently the most effective andpopular exploration feedback. For several bugs, though, also howexecution reaches a buggy program location may matter: forthose, only tracking what code a testcase exercises may leadfuzzers to overlook interesting program states. Unfortunately,context-sensitive coverage tracking comes with an inherent stateexplosion problem. Existing attempts to implement context-sensitive coverage-guided fuzzers struggle with it, experiencingnon-trivial issues for precision (due to coverage collisions) andperformance (due to context tracking and queue/map explosion).In this paper, we show that a much more effective approachto context-sensitive fuzzing is possible. First, we propose functioncloning as a backward-compatible instrumentation primitiveto enable precise (i.e., collision-free) context-sensitive coveragetracking. Then, to tame the state explosion problem, we argue toaccount for contextual information only when a fuzzer explorescontexts selected as promising. We propose a prediction schemeto identify one pool of such contexts: we analyze the data-flowdiversity of the incoming argument values at call sites, exposingto the fuzzer a contextually refined clone of the callee if the lattersees incoming abstract objects that its uses at other sites do not.Our work shows that, by applying function cloning to pro-gram regions that we predict to benefit from context-sensitivity,we can overcome the aforementioned issues while preserving,and even improving, fuzzing effectiveness. On the FuzzBenchsuite, our approach largely outperforms state-of-the-art coverage-guided fuzzing embodiments, unveiling more and different bugswithout incurring explosion or other apparent inefficiencies. Onthese heavily tested subjects, we also found 8 enduring securityissues in 5 of them, with 6 CVE identifiers issued.
cybersecurity; software testing; fuzzy testing
cybersecurity; software testing; fuzzy testing
| selected citations These citations are derived from selected sources. This is an alternative to the "Influence" indicator, which also reflects the overall/total impact of an article in the research community at large, based on the underlying citation network (diachronically). | 3 | |
| popularity This indicator reflects the "current" impact/attention (the "hype") of an article in the research community at large, based on the underlying citation network. | Top 10% | |
| influence This indicator reflects the overall/total impact of an article in the research community at large, based on the underlying citation network (diachronically). | Average | |
| impulse This indicator reflects the initial momentum of an article directly after its publication, based on the underlying citation network. | Average |
