论文部分内容阅读
随着物联网产业的飞速发展,其设备安全问题也受到越来越多的安全研究人员的关注。现有的大部分研究工作使用固件仿真和符号执行来检测物联网设备固件中存在的漏洞。这些方法应用于轻量级物联网固件分析时存在诸多不足,其原因包括:(1)轻量级物联网设备固件及其源码难以搜集;(2)轻量级物联网设备固件没有统一的文件格式和加载规则;(3)轻量级物联网设备固件中缺失了符号信息;(4)轻量级物联网设备厂商往往定制私有硬件组件,固件仿真难以成功。针对上述问题,本文提出了一种针对轻量级物联网设备的内存漏洞检测框架。具体而言,本文的创新点和主要工作如下:1.提出了一种新的固件搜集方法。该方法的核心是使用软件模拟物联网设备与云进行交互,通过上传过时的版本号,欺骗云发送固件。首先分析云平台及其合作硬件厂商提供的SDK,提取云、设备、App之间的通信协议及通信数据格式。接着构造能够模拟设备与云进行认证和授权的模拟软件,通过修改上报的设备信息,诱导云发送OTA更新链接,通过该链接下载得到固件。最后,通过该方法,本文搜集到了3个平台下的193个固件,结合网络爬虫和App内提取等方法,本文共搜集到了7个平台下的318个固件。2.提出了一种新的针对轻量级物联网设备固件内存漏洞的检测方法。为了减少二进制文件的干扰,本文首先使用基于字符特征匹配的方法识别固件分区信息和加载基址。接下来根据固件中的芯片信息重编译设备SDK,并进行库函数识别,补全固件中缺失的函数名等符号信息。之后本文生成固件完整的调用流图,再使用基于调用流图的后向代码切片方法对固件进行切片,切片包含攻击者可控数据源到漏洞触发点的完整路径,最后使用动态符号执行技术对固件切片进行模拟运行,结合Fuzzing测试完成固件内存漏洞检测。3.实现了检测工具:FIoT。本文从库函数识别的准确率、漏洞检测的有效性等方面系统地对所提出的方法进行了评估。基于40个固件的库函数识别实验表明,FIoT相比于现有工具将识别率提高到了31.8%,对库函数匹配结果进行人工检验,其正确率达到了100%。基于对115个固件进行的漏洞检测实验,FIoT成功识别出35个固件中存在缓冲区溢出漏洞,通过人工核验,误报率达到0%。根据时间测试,FIoT能够在平均210秒内完成对单个轻量级物联网固件的漏洞检测。实验表明,FIoT能够准确的识别内存漏洞,且性能开销合理可接受。