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 a novel concurrency-aware gray-box fuzzer that explores different thread schedules by instrumenting the code under test with random delays controlled by the fuzzing engine. Then, we build an ensemble of one BMC and one GBF tool 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 our GBF tool, 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 BMC alone. Furthermore, we demonstrate the efficacy of our concurrency-aware GBF by showing that it can find 21.4% of the vulnerabilities in our evaluation suite, while non-concurrency-aware GBF tools can only find 0.55%. Finally, thanks to our concurrency-aware GBF tool, EBF detects a data race in the open-source wolfMqtt library, which demonstrates its effectiveness in finding vulnerabilities in real-world software.
翻译:在同时的程序中查找软件脆弱性是一项具有挑战性的任务,因为州-空间探索的规模很大,因此,随着程序线索和语句的数量的增多,互换功能的数量成倍增长。我们提议和评价EBF(使用模糊模型检查与模糊) -- -- 一种结合了闪烁模型检查(BMC)和格雷-布克斯法辛(GGBF)的技术,以便在同时的程序中找到软件脆弱性。由于没有公开可用的 GBF 工具,因此我们首先提议一种新型的货币觉悟工具,用于同时代码,因此,我们首先提议一种新颖的、货币觉悟的灰盒灰盒发泡器,它通过在测试中以随机的延迟来检测代码5,来探索不同的线程。然后,我们用一种方法建立一个混合模型模型(BMC)和一个GMFFM工具的组合。一方面,当BMC工具返回了一个反解析时,我们用GMFA工具的配置方式,这样可以找到复杂的数学表达工具。 另一方面,我们用BMC和GBBFFMF的精度来测量它的精度, 我们用BMF的精度工具的精度显示它的精度工具的精度。