Jincheng Wang, Zhuohua Li, Mingshen Sun, and John C.S. Lui
Proceedings of the 25th International Symposium on Research in Attacks, Intrusions and Defenses RAID '22, October 2022.



Internet of Things (IoT) services are gaining increasing popularity, and IoT devices are widely deployed at many smart homes. Among all the IoT communication protocols, Zigbee is a dominant one used by billions of devices and customers. However, the design of Zigbee has not been carefully evaluated and could be exploited by attackers. In this paper, we focus on Zigbee’s network rejoin procedure, which aims to allow devices to automatically recover their network status when they accidentally go offline. We develop an automated verification tool Verejoin to perform a systematic study on the rejoin procedure. Using this tool, we not only confirm a well-known design flaw, but also reveal two undiscovered design flaws. Moreover, we construct four proof-of-concept (PoC) attacks to exploit these design flaws. These vulnerabilities create new attack surfaces for attackers to manipulate Zigbee devices, and the damage of these vulnerabilities ranges from denial of service to device hijacking. We further design a Zigbee testing tool ZigHomer to confirm these vulnerabilities in real-world devices. Using ZigHomer, we conduct thorough evaluations of off-the-shelf Zigbee devices from leading IoT vendors, and the evaluation result shows the prevalence and severity of these vulnerabilities. Finally, we reported our findings to related parties, and they all acknowledged the significant security impact. We further collaborate with Zigbee Alliance to amend the Zigbee specification, and successfully addressed our reported vulnerabilities

BibTeX Record:

    author    = "Jincheng Wang and Zhuohua Li and Mingshen Sun and John C.S. Lui",
    title     = "{Zigbee's Network Rejoin Procedure for IoT Systems: Vulnerabilities and Implications}",
    booktitle = "Proceedings of the 25th International Symposium on Research in Attacks, Intrusions and Defenses",
    series    = "RAID '22",
    year      = "2022",