IoT fuzz难点:难以提取和模拟自定义固件,只能进行黑盒测试。但是这种方法会产生不合法输入,导致很容易被丢弃,无法渗透进代码。另一种方法是使用相关APP生成构造好的fuzz输入,但是已有的方案被APP端输入限制,限制了发现漏洞的能力。
本文提出了一种方法。作者观察到APP种已有的函数能够用于生成优化fuzz输入。这些函数称为fuzz触发器,在数据传输函数之前和数据验证函数之后执行。可以生成不被APP端检测函数约束的输入。同时不会被IoT设备丢弃。本文设计了DIANE,结合了静态和动态分析寻找fuzz触发器的工具。使用DIANE分析11个流行的IoT设备,找到了11个bug,9个是0day。并且如果不使用fuzz触发器,对于很多设备来说很难生成bug触发输入。
包含APP执行的将用户输入数据转化为网络输入的函数序列,直觉上,序列中第一个函数将用户输入转化为内部数据结构,生成APP端验证约束的数据。最后一个函数编码用户输入,序列化输入到网络中。本文方法的创新性是通过调用APP中特定函数来fuzz IoT设备,调用后,fuzz触发器生成不被APP端验证并具有良好数据结构的输入。
该方法包含静态分析和动态分析
找到了11个bug,其中9个0day