基于同源性分析的嵌入式设备固件漏洞检测
李登;尹青;林键;吕雪峰
【摘 要】嵌入式设备的制造过程研产分离,导致不同的固件可能包含相同的第三方库,进而相同设备的不同版本甚至是不同设备的固件中都存在大量相同的已公开漏洞.针对该问题,基于第三方库同源性分析提出一种嵌入式设备固件漏洞检测方法,为固件漏洞修复提供参考,减少不必要的重复分析.通过对固件分类,并采用二进制差量分析、字符串常量匹配、模糊哈希3种方法分析第三方库同源性,从而检测同类固件中存在的漏洞.实验结果表明,该方法能够有效检测D-Link系列路由器固件中的缓冲区溢出和越界漏洞,以及Linksys系列路由器固件中的远程命令注入漏洞.%As development and production is separate from each other in the manufacturing process of embedded devices,different firmware may contain the same third-party libraries and thus firmware of different devices or different versions of the same device has a large number of the same vulnerabilities already disclosed.Aiming at this problem,this paper presents a firmware vulnerability detection method in embedded devices based on homology analysis to provide reference for firmware vulnerability remediation and reduce unnecessary r
epetitious analysis.Vulnerability detection is implemented through firmware classification and homology analysis of third-party libraries by binary differential analysis,string constant matching and fuzzy hashing method.Experimental results show that the proposed method can effectively catch buffer overflows and cross-border vulnerabilities in D-Link router firmware as well as remote command injection vulnerabilities in Linksys router firmware.
【期刊名称】《计算机工程》
【年(卷),期】2017(043)001
【总页数】7页(P72-78)
【关键词】嵌入式设备;同源性分析;固件;漏洞;第三方库
【作 者】李登;尹青;林键;吕雪峰
【作者单位】信息工程大学数学工程与先进计算国家重点实验室,郑州450001;信息工程大学数学工程与先进计算国家重点实验室,郑州450001;信息工程大学数学工程与先进计算国家重点实验室,郑州450001;信息工程大学数学工程与先进计算国家重点实验室,郑州450001
【正文语种】中 文
【中图分类】TP18
嵌入式设备随处可见,手机、打印机、家用路由器、智能摄像头、网络摄像机、PLC、电脑组件及其外设都是常用的嵌入式设备。物联网技术的兴起更使其被广泛应用,越来越多的嵌入式设备连入网络,其安全问题也日益突出。
嵌入式系统与传统的PC机系统不同,其通常由一个称为“固件”的软件组成。固件是指写入EEPROM或Flash等存储介质中的程序,通俗的理解就是固化的软件。与传统的软件相同,嵌入式设备中的固件也存在缺陷,并且几乎所有设备的固件中都包含漏洞,这主要是由于嵌入式设备制造领域存在“客制化”的生产模式,研产分离。但生产设备时并不将整个系统随之固化,硬件厂商制造硬件设施并附带硬件驱动程序,设备厂商直接从硬件厂商购买硬件或技术方案开发特定功能的开发板。此时,设备厂商有2种途径生产设备:1)自己开发固件并进行调试,最后封装出厂交由供应商代购;2)设备厂商只是固化一小段引导程序,而如操作系统、文件系统等则先交由第三方分包商构建,再交给供应商代购。
设备厂商通常选用第2)种途径,这就出现一个现象:不同的设备厂商可能选择同一个分包商,同一个设备厂商的软件可能由多个分包商开发。由于分包商依赖的开发工具、开发包或者提供的库没有统一标准,不同品牌的设备可能运行相同或者类似的固件以及包含相同的第三方库,同一品牌的设备可能存在多个不同分包商第三方库导致的漏洞,因此,嵌入式设备经常会受到一些已知漏洞的影响,同一个漏洞可能影响不同的设备厂商,甚至是一个更新的固件也会存在已公开的漏洞[1]。这使得对嵌入式设备固件的漏洞检测存在大量的重复性工作,仅针对某个特定型号的设备或某个版本固件的分析无法代表该系列所有固件的安全状态,必须到一种合理的针对嵌入式设备固件的漏洞分析方法,有效地鉴别固件依赖库以及开发库之间的关联性,确定相似开源代码的同源性,进而对固件出现的漏洞进行较彻底的修复。
针对上述问题,本文对第三方库进行同源性分析,提出一种新的嵌入式设备固件漏洞检测方法。
嵌入式Linux设备固件映像主要包括固件头、引导程序Bootloader、操作系统内核和文件系统等部分,具体分布情况如图1所示。
嵌入式设备中的第三方库主要包括共享库以及通用工具集。同源库是指从某一共同开源代码
库祖先经趋异进化过程而形成的不同的共享库或通用软件(开源工具或某一厂商特定的软件集合)。在嵌入式系统中,常用的共享库有glibc和uClibc,它们的动态链接形式保存在“/lib”目录下,文件名常为“libc.so”和“ld-uClibc.so”,所有通过交叉编译编写的动态链接程序都会在运行时使用它们。常用的开源工具有集合了嵌入式系统常用命令的轻量工具集BusyBox、用作Web服务器的小型工具Boa,Httpd等。
第三方库同源可理解为不同的固件开发库是否源自同一个开源资源库或者是否由同一个第三方开发商、团队编写,以及其是否有内在关联性、相似性。目前针对嵌入式设备固件第三方库同源性分析的研究较少,大都采用传统的漏洞分析方法来检测固件中存在的漏洞,如通过特征匹配方法的固件漏洞检测[2-3]。文献[4]提出面向统一可扩展固件的模糊测试系统,采用模糊测试技术检测固件漏洞。文献[5]通过对固件中远程升级分析控制了一台HP打印机,并采用静态分析方法对其中使用的第三方库进行分析,发现超过80.4%的固件程序存在zlib漏洞。文献[6]通过云计算平台实现大范围的在线固件静态分析,搭建了一个可伸缩性较好的固件分析平台,能够到固件中的共享凭据(如硬编码的密码)、共享自签名证书以及/etc/passwd和/etc/shadow文件中存储的远程登录密码,并实现了一个关联引擎,扫描不同固件镜像之间存在的类似漏洞。文献[7]设计了一个专门解析嵌入式设备固件的二进制分析框架——Firmalice,
字符串长度在线测试采用符号执行引擎和程序切片技术,通过构造大量输入数据,检测固件中存在的认证绕过漏洞。文献[8]分析了工业控制系统(ICS)内部协议,在解析PLC固件的基础上提出基于数据包的固件漏洞分析方法。文献[9]实现了一个嵌入式设备固件动态分析平台——Avatar,通过注入一种特殊嵌入式设备软件代理,Avatar能够在QEMU模拟器内执行固件指令,同时利用真实的物理硬件处理I/O操作。该平台将固件指令转换为LLVM中间语言表示,并采用符号执行对固件漏洞进行分析。文献[10]提出一种基于嵌入式固件的库函数识别方法,对无文件系统固件后门进行检测。
现有固件漏洞分析方法以静态分析为主,通过扫描某个固件程序中硬编码的后门标识,或采用符号执行对控制流和数据流进行跟踪,分析对象较为单一,无法对相同序列固件的整体安全性进行综合评估。由于嵌入式设备固件专用于特定的硬件,动态分析不同提供商的嵌入式设备通常需要使用其配套的调试设备,其中具有代表性的Avatar部署过程不仅复杂,而且不同设备固件特定执行环境需要QEMU进行模拟仿真,适用性较差。文献[11]通过二进制代码克隆检测分析已发行软件是否违反GNU通用公共许可证,通过扫描二进制形式的软件确定其源代码所属的第三方软件包存储库并提取其许可证信息。受其启发,本文通过检测固件程序并进行第三方库的同源性分析,判断固件中是否包含已公开漏洞的第三方库,旨在为固件漏洞修复提供较为
完备的参考。
本文的主要研究内容是基于第三方库同源性分析的固件家族归类及漏洞检测,包括固件家族分类、固件解包和第三方库提取、第三方库特征数据库建立以及基于二进制差量分析、字符串常量匹配和模糊哈希的第三方库近似相似性分析,最后根据分析结果对固件安全性作出评估。二进制差量计算和模糊哈希能够较为全面地分析二进制代码的变化部分,对相同架构下固件第三方库的同源性分析效果较好,缺点是依赖于架构。由于ARM,MIPS,PowerPC等不同架构的二进制文件差异较大,因此针对跨架构下的同源性分析效果不明显。本文考虑分析的完备性,提出字符串常量匹配方法对跨架构的固件程序进行同源性分析。一般情况下,字符串常量在编译过程中与体系结构无关,相同的源代码经过ARM,MIPS交叉编译工具编译,字符串常量往往保存较完整,开源代码中许多字符串在不同版本和重构操作之后几乎不变。因此,本文提出的方法能够较好地适应不同架构之间的第三方库同源性分析。
由于嵌入式系统的多样性(包括嵌入式处理器类型的多样性、设备硬件电路设计的多样性、嵌入式操作系统的多样性、应用领域与方式的多样性)和嵌入式设备类型的多样性,固件打包格式差别较大,固件数目更是难计其数。如果对每个固件进行解包来分析其第三方库同源性,耗
时较多,可行性也不高。图2和图3为D-Link路由器固件家族DIR-505和DAP-1320熵值分布图,经过分析发现同一品牌的设备固件第三方库具有较高的同源性,即使大小不一但布局大多相似。这是由于同一品牌固件一般采用相同或相似的固件头部、引导代码、操作系统、文件系统以及压缩算法。为此,本文提出基于信息熵的固件家族分类方法,首先分析整体固件布局的同源性,将熵值图类似的固件归为一类,在此基础上通过对其进行第三方库同源性分析,实现对同一家族固件漏洞的整体检测。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。