分布式系统的灰盒模糊测试
软件工程
2023-08-15 v3
摘要
灰盒模糊测试是发现顺序程序缺陷的轻量级首选方法。它利用来自观测测试执行的反馈函数,在程序输入域上进行有偏随机搜索,在效率与有效性之间取得平衡。然而对于分布式系统测试,当前最佳实践仅由黑盒工具代表,它们不试图推断并利用系统过往行为的任何知识来引导缺陷搜索。本工作中,我们提出 Mallory:首个面向分布式系统的灰盒模糊测试框架。与流行的黑盒分布式系统模糊器 (如 Jepsen) 通过随机注入网络分区与节点故障或遵循人工定义调度来搜索缺陷不同,Mallory 是自适应的。它运用一种新颖度量来学习如何通过选择不同故障序列最大化观测到的系统行为数,从而提高发现新缺陷的可能性。我们的方法依赖于时间线驱动测试。Mallory 动态构建系统行为的 Lamport 时间线,并进一步将这些时间线抽象为先发生于后 (happens-before) 摘要,作为引导模糊测试的反馈函数。随后,Mallory 使用 Q-learning 反应式学习策略,使其能基于实时观测的摘要引入故障。我们在多种广泛使用的工业分布式系统上评估了 Mallory。与最先进的黑盒模糊器 Jepsen 相比,Mallory 探索了更多行为并更快发现缺陷。Mallory 在 Braft、Dqlite 与 Redis 等经过严格测试的分布式系统中发现了 22 个零日缺陷 (其中 18 个被开发者确认),包括 10 个新漏洞。已分配 6 个新 CVE。
引用
@article{arxiv.2305.02601,
title = {Greybox Fuzzing of Distributed Systems},
author = {Ruijie Meng and George Pîrlea and Abhik Roychoudhury and Ilya Sergey},
journal= {arXiv preprint arXiv:2305.02601},
year = {2023}
}