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 构
建方法仅关心与特定函数(如不安全函数)相关的参数,不考虑无关变量,分析变量大大减少,大大降低了在循环