MUZZ:多线程程序中基于线程感知的灰盒模糊检测
MUZZ: Thread-aware Grey-box Fuzzing for Effective Bug Hunting in Multithreaded Programs
摘要:
灰盒模糊测试由于其轻量级的测试工具、快速的覆盖反馈和动态调整策略,已经揭示了真实世界软件中成千上万的漏洞。然而,直接将灰盒模糊应用于依赖于输入的多线程程序可能效率极低。在实践中,多线程相关的错误通常隐藏在复杂的程序流中。同时,现有的灰盒模糊技术没有强调线程交织影响多线程程序的执行状态。因此,主流的灰盒模糊器不能有效地测试多线程程序中的问题段,尽管他们可能会获得高的代码覆盖率统计。为此,我们提出MUZZ,一个新的灰盒模糊技术,在多线程程序中的错误狩猎。MUZZ拥有三种新颖的线程感知插装,即面向覆盖插装、线程上下文插装和调度干预插装。在模糊化过程中,这些工具产生运行时反馈,以强调线程交织引起的执行状态。通过利用动态种子选择和执行策略中的反馈,MUZZ保留了更多有价值的种子,这些种子在多线程上下文中暴露了错误。我们在12个真实世界的软件程序上评估MUZZ。实验表明,MUZZ在多线程相关种子生成和并发漏洞检测方面优于AFL。此外,通过针对生成的种子重放目标程序,MUZZ还揭示了更多的并发错误(例如,数据竞争,线程泄漏)比AFL。MUZZ总共检测到8个新的并发漏洞和19个新的并发错误。在撰写本文时,已为报告的问题分配了4个CVE ID。
英文摘要:
Grey-box fuzz testing has revealed thousands of vulnerabilities in real-world software owing to its lightweight instrumentation, fast coverage feedback, and dynamic adjusting strategies. However, directly applying grey-box fuzzing to input-dependent multithreaded programs can be extremely inefficient. In practice, multithreading-relevant bugs are usually buried in sophisticated program flows. Meanwhile, the existing grey-box fuzzing techniques do not stress thread-interleavings which affect execution states in multithreaded programs. Therefore, mainstream grey-box fuzzers cannot effectively test problematic segments in multithreaded programs despite they might obtain high code coverage statistics. To this end, we propose MUZZ, a new grey-box fuzzing technique that hunts for bugs in multithreaded programs. MUZZ owns three novel thread-aware instrumentations, namely coverage-oriented instrumentation, thread-context instrumentation, and schedule-intervention instrumentation. During fuzzing, these instrumentations engender runtime feedback to stress execution states caused by thread interleavings. By leveraging the feedback in the dynamic seed selection and execution strategies, MUZZ preserves more valuable seeds that expose bugs in a multithreading context. We evaluate MUZZ on 12 real-world software programs. Experiments show that MUZZ outperforms AFL in both multithreading-relevant seed generation and concurrency-vulnerability detection. Further, by replaying the target programs against the generated seeds, MUZZ also reveals more concurrency-bugs (e.g., data-races, thread-leaks) than AFL. In total, MUZZ detected 8 new concurrency-vulnerabilities and 19 new concurrency-bugs. At the time of writing, 4 CVE IDs have been assigned to the reported issues.
机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。