Page 115 - 《软件学报》2020年第11期
P. 115

陈千  等:函数级数据依赖图及其在静态脆弱性分析中的应用                                                    3431


                 分析中的有效性.
                    •   FDDG 构建时间性能评估实验:对不同固件中的二进制程序分别构建 FDDG 和 DDG,对比两种依赖图
                        的构建时间.
                    •   FDDG 在固件静态脆弱性分析中的有效性评估实验:运用 FFVA 系统对二进制程序进行脆弱性分析,
                        尝试发现程序中存在的安全缺陷或漏洞.
                    实验采用的软硬件环境见表 3.
                                     Tabel 3    Experimental environment of software and hardware
                                                   表 3   实验软硬件环境
                                       名称                        详情
                                     处理器型号      Intel(R) Xeon(R) CPU E5-2687W v3@3.10Ghz,10 Cores
                                     处理器个数                        4
                                     内存大小                       126GB
                                     操作系统                Ubuntu 16.04.3 LTS x86_64
                                     软件模块                Python 2.7.12,angr 7.7.12.16
                    对固件进行脆弱性分析,主要分析对象是固件中提供网络服务的程序模块,如 HTTP,UPnP 等.因为一旦在这
                 些程序中发现漏洞,其很可能会被远程利用,进而带来严重的安全隐患.考虑到不同指令架构、不同品牌、文件
                 大小以及是否有真实可用设备等因素,本文从路由器和摄像头设备固件中最终选取表 4 中给出的 13 个二进制
                 程序样本作为分析对象.
                                             Table 4    Information of binary samples
                                                 表 4   二进制样本相关信息
                                     名称        大小(k)   指令架构       设备品牌        设备型号
                                    wlancmd     38       MIPS      Huawei      HG532e
                                   stupid-ftpd  53       MIPS      D-Link    DIR-882_A1
                                     upnp       90       MIPS      Huawei      HG532e
                                     jjhttpd    118      MIPS      D-Link    DIR820LB1
                                    lighttpd    145      ARM      Honeywell  HIVDC-F100V
                                     cgibin     150      ARM       D-Link     DIR-890L
                                     cgibin     155      MIPS      D-Link      DIR-645
                                   miniupnpd    165      MIPS      D-Link    DIR-882_A1
                                     upnpd      213      MIPS    NETGEAR      DGN2200
                                    setup.cgi   324      MIPS    NETGEAR      DGN1000
                                     httpd      994      MIPS    NETGEAR      DGN2200
                                    ipc_server  2 048    ARM       EasyN       B18EN
                                   mwareserver  4 812    ARM       uniview    IPC_6201

                 5.1   FDDG构建时间性能评估
                    本文采用 FFVA 系统构建函数级数据依赖图,然后利用 angr 框架构建指令级数据依赖图,对两种依赖图的
                 构建时间进行对比.为了保证两种方案分析函数的一致性,本文采用程序的入口地址作为分析的起始地址,将从
                 入口地址可达的所有非系统函数作为待分析函数列表.
                    由于控制流分析采用并行化加速,CFG 的构建时间在整个脆弱性分析中的占比很小,因此,数据依赖图的构
                 建时间将直接影响脆弱性分析的效率.由表 5 可知,与 DDG 相比,FDDG 的构建时间基本在 1min 内,除 wlancmd
                 这种分析函数个数少、内部逻辑简单的程序样本外,构建时间性能普遍提升约 3 个数量级.同时,构建时间与分
                 析函数的数量、样本内部的流程复杂度密切相关.以两种硬件架构(ARM 和 MIPS)的 cgibin 样本为例,对 ARM
                 架构的 cgibin 分析了 356 个函数,多于 MIPS 架构,FDDG 生成时间也长一些,但 FDDG 的构建时间差异(3 倍)
                 小于 DDG 的构建时间差异(11 倍).
                    从实现原理上看,angr 框架中的 DDG 构建方法考虑了程序中的所有变量,当一个函数内部存在循环时,由
                 于很多变量之间存在循环依赖,故需要频繁对变量的数据依赖进行更新,耗费大量的时间.本文提出的 FDDG 构
                 建方法仅关心与特定函数(如不安全函数)相关的参数,不考虑无关变量,分析变量大大减少,大大降低了在循环
   110   111   112   113   114   115   116   117   118   119   120