论文标题

结合BMC和模糊技术,以在并发程序中查找软件漏洞

Combining BMC and Fuzzing Techniques for Finding Software Vulnerabilities in Concurrent Programs

论文作者

Aljaafari, Fatimah K., Menezes, Rafael, Manino, Edoardo, Shmarov, Fedor, Mustafa, Mustafa A., Cordeiro, Lucas C.

论文摘要

由于状态空间探索的大小,在并发程序中查找软件漏洞是一项具有挑战性的任务,因为交织的数量随程序线程和语句的数量而成倍增长。我们提出和评估EBF(有限模型检查与模糊模型的集合) - 一种结合了有限模型检查(BMC)和灰色框模糊(GBF)的技术,以在同一程序中查找软件漏洞。由于没有用于并发代码的公开供应GBF工具,因此我们首先提出OpenGBF - 一种新的开源并发 - 意识到的灰色盒子fuzzer,通过用随机延迟来启动正在测试的代码来探索不同的线程计划。然后,我们通过以下方式构建BMC工具和OpenGBF的合奏。一方面,当集合中的BMC工具返回反例时,我们将其用作OpenGBF的种子,从而增加了执行由复杂数学表达式保护的路径的可能性。另一方面,我们使用决策矩阵汇总了集合中BMC和GBF工具的结果,从而提高了EBF的准确性。我们根据最新的纯BMC工具对EBF进行评估,并表明与仅相应的BMC工具相比,它可以生成多达14.9%的正确验证证人。此外,我们通过证明它可以在我们的评估套件中发现24.2%的漏洞来证明OpenGBF的功效,而非急流感知的GBF工具只能找到0.55%。最后,由于我们的并发感知OpenGBF,EBF在开源WolfMQTT库中检测到数据竞赛,并在其他几个现实世界中重现已知错误,这表明了其在现实世界中发现脆弱性的有效性。

Finding software vulnerabilities in concurrent programs is a challenging task due to the size of the state-space exploration, as the number of interleavings grows exponentially with the number of program threads and statements. We propose and evaluate EBF (Ensembles of Bounded Model Checking with Fuzzing) -- a technique that combines Bounded Model Checking (BMC) and Gray-Box Fuzzing (GBF) to find software vulnerabilities in concurrent programs. Since there are no publicly-available GBF tools for concurrent code, we first propose OpenGBF -- a new open-source concurrency-aware gray-box fuzzer that explores different thread schedules by instrumenting the code under test with random delays. Then, we build an ensemble of a BMC tool and OpenGBF in the following way. On the one hand, when the BMC tool in the ensemble returns a counterexample, we use it as a seed for OpenGBF, thus increasing the likelihood of executing paths guarded by complex mathematical expressions. On the other hand, we aggregate the outcomes of the BMC and GBF tools in the ensemble using a decision matrix, thus improving the accuracy of EBF. We evaluate EBF against state-of-the-art pure BMC tools and show that it can generate up to 14.9% more correct verification witnesses than the corresponding BMC tools alone. Furthermore, we demonstrate the efficacy of OpenGBF, by showing that it can find 24.2% of the vulnerabilities in our evaluation suite, while non-concurrency-aware GBF tools can only find 0.55%. Finally, thanks to our concurrency-aware OpenGBF, EBF detects a data race in the open-source wolfMqtt library and reproduces known bugs in several other real-world programs, which demonstrates its effectiveness in finding vulnerabilities in real-world software.

扫码加入交流群

加入微信交流群

微信交流群二维码

扫码加入学术交流群,获取更多资源