Directed greybox fuzzing (DGF) can quickly discover or reproduce bugs in programs by seeking to reach a program location or explore some locations in order. However, due to their static stage division and coarse-grained energy scheduling, prior DGF tools perform poorly when facing multiple target locations (targets for short). In this paper, we present multiple targets directed greybox fuzzing which aims to reach multiple programs locations in a fuzzing campaign. Specifically, we propose a novel strategy to adaptively coordinate exploration and exploitation stages, and a novel energy scheduling strategy by considering more relations between seeds and target locations. We implement our approaches in a tool called LeoFuzz and evaluate it on crash reproduction, true positives verification, and vulnerability exposure in real-world programs. Experimental results show that LeoFuzz outperforms six state-of-the-art fuzzers, i.e., QYSM, AFLGo, Lolly, Berry, Beacon and WindRanger in terms of effectiveness and efficiency. Moreover, LeoFuzz has detected 23 new vulnerabilities in real-world programs, and 11 of them have been assigned CVE IDs.
翻译:直接的灰盒烟雾( DGF) 可以通过寻求到达程序位置或探索某些地点来快速发现或复制程序中的错误。 但是,由于它们静态的阶段分割和粗粗的能源排期,以前的DGF工具在面对多个目标地点( 短目标) 时表现不佳。 在本文中, 我们展示了多个目标的灰盒烟雾, 目的是在模糊运动中到达多个程序地点。 具体地说, 我们提出了一个适应性地协调勘探和开发阶段的新战略, 以及一个新的能源排期战略, 考虑种子和目标地点之间的更多关系。 我们用一个名为 LeoFuzz 的工具实施我们的方法, 并评估在现实世界方案中的崩溃复制、 真实的正反效果验证和脆弱性暴露。 实验结果表明, LeoFuzz 超越了六种最先进的烟雾器, 即QYSM、 ALLGO、 Loll、 Belly、 Berry、 Beacon 和 Wind Ranger 的效能和效率。 此外, LeoFuzz 在现实世界方案中发现了23个新的弱点, 。