Zeng Yingpei, Lin Mingmin, Guo Shanqing, Shen Yanzhao, Cui Tingting, Wu Ting, Zheng Qiuhua, Wang Qiuhua
School of Cyberspace, Hangzhou Dianzi University, Hangzhou 310000, China.
State Key Laboratory for Novel Software Technology, Nanjing University, Nanjing 210000, China.
Sensors (Basel). 2020 Sep 11;20(18):5194. doi: 10.3390/s20185194.
The publish/subscribe model has gained prominence in the Internet of things (IoT) network, and both Message Queue Telemetry Transport (MQTT) and Constrained Application Protocol (CoAP) support it. However, existing coverage-based fuzzers may miss some paths when fuzzing such publish/subscribe protocols, because they implicitly assume that there are only two parties in a protocol, which is not true now since there are three parties, i.e., the publisher, the subscriber and the broker. In this paper, we propose MultiFuzz, a new coverage-based multiparty-protocol fuzzer. First, it embeds multiple-connection information in a single input. Second, it uses a message mutation algorithm to stimulate protocol state transitions, without the need of protocol specifications. Third, it uses a new desockmulti module to feed the network messages into the program under test. desockmulti is similar to desock (Preeny), a tool widely used by the community, but it is specially designed for fuzzing and is 10x faster. We implement MultiFuzz based on AFL, and use it to fuzz two popular projects Eclipse Mosquitto and libCoAP. We reported discovered problems to the projects. In addition, we compare MultiFuzz with AFL and two state-of-the-art fuzzers, MOPT and AFLNET, and find it discovering more paths and crashes.
发布/订阅模型在物联网(IoT)网络中已变得日益重要,消息队列遥测传输(MQTT)和受限应用协议(CoAP)都支持该模型。然而,现有的基于覆盖的模糊测试工具在对这类发布/订阅协议进行模糊测试时可能会遗漏一些路径,因为它们隐含地假设协议中只有两方,而现在由于存在发布者、订阅者和代理这三方,这种假设已不成立。在本文中,我们提出了MultiFuzz,一种新的基于覆盖的多方协议模糊测试工具。首先,它在单个输入中嵌入多连接信息。其次,它使用消息变异算法来刺激协议状态转换,无需协议规范。第三,它使用一个新的desockmulti模块将网络消息输入到被测程序中。desockmulti类似于社区广泛使用的工具desock(Preeny),但它是专门为模糊测试设计的,速度快10倍。我们基于AFL实现了MultiFuzz,并使用它对两个流行项目Eclipse Mosquitto和libCoAP进行模糊测试。我们将发现的问题报告给了这些项目。此外,我们将MultiFuzz与AFL以及两个最先进的模糊测试工具MOPT和AFLNET进行了比较,发现它能发现更多的路径和崩溃情况。