  Internet of Things (IoT) has been rapidly growing in the past few years in
all life disciplines. IoT provides automation and smart control to its users in
different domains such as home automation, healthcare systems, automotive, and
many more. Given the tremendous number of connected IoT devices, this growth
leads to enormous automatic interactions among sizeable IoT apps in their
environment, making IoT apps more intelligent and more enjoyable to their
users. But some unforeseen interactions of IoT apps and any potential malicious
behaviour can seriously cause insecure and unsafe consequences to its users,
primarily non-experts, who lack the required knowledge regarding the potential
impact of their IoT automation processes. In this paper, we study the problem
of security and safety verification of IoT systems. We survey techniques that
utilize program analysis to verify IoT applications' security and safety
properties. The study proposes a set of categorization and classification
attributes to enhance our understanding of the research landscape in this
domain. Moreover, we discuss the main challenges considered in the surveyed
work and potential solutions that could be adopted to ensure the security and
safety of IoT systems.
