基于D-S证据理论的嵌入式固件Web代码静态漏洞检测技术
王思琪1,2, 缪思薇3, 张小玲1,2, 石志强1,2, 卢新岱4    
1. 中国科学院 信息工程研究所, 北京 100093;
2. 中国科学院大学 网络空间安全学院, 北京 100049;
3. 中国电力科学研究院有限公司, 北京 100192;
4. 国网浙江省电力有限公司 电力科学研究院, 杭州 310014
摘要

固件的漏洞挖掘和检测主要包含基于虚拟仿真的动态漏洞挖掘与检测技术和基于逆向工程的静态白盒审计技术等,其存在仿真率低或误报率高等问题,为此,提出了一种基于多维度特征的固件Web漏洞检测方法,利用多维度特征、多层级处理技术和基于D-S证据理论的漏洞推理规则,针对固件Web中常见的各类漏洞进行有效检测,并能降低漏洞检测误报率.

关键词: 固件web     静态分析     漏洞检测     多维度特征     D-S证据理论    
中图分类号:TP309.1 文献标志码:A 文章编号:1007-5321(2019)05-0091-09 DOI:10.13190/j.jbupt.2018-212
Static Vulnerability Detection Technology for the Embedded Firmware Web Code Based on D-S Evidence Theory
WANG Si-qi1,2, MIAO Si-wei3, ZHANG Xiao-ling1,2, SHI Zhi-qiang1,2, LU Xin-dai4    
1. Institute of Information Engineering, Chinese Academy of Sciences, Beijing 100093, China;
2. School of Cyber Security, University of Chinese Academy of Sciences, Beijing 100049, China;
3. China Electric Power Research Institute, Beijing 100192, China;
4. State Grid Zhejiang Electric Power Research Institute, Hangzhou 310014, China
Abstract

Currently, vulnerabilities mining and detection for firmware mainly include dynamic analysis which based on virtual simulation and static auditing which based on reverse engineering. These techniques may have low simulation rate and high false positive rate. Proposing a method based on multi-dimensional features for detection of firmware web vulnerabilities. This method can detect common Web vulnerabilities in firmware effectively and lower the false positive rate by using multi-dimensional features, multi-level preprocessing and vulnerabilities reasoning models based on D-S evidence theory.

Key words: firmware web     static analysis     vulnerability detection     multi-dimensional feature     D-S evidence theory    

固件是指硬件设备和计算机指令的结合体,或是在硬件设备上作为只读软件存储、运行的计算机数据[1],以灵活多样的存在方式方便了用户对嵌入式设备和系统的使用. Web界面由于直观、方便、代价小,通常固件中会嵌入Web服务器运行Web应用[2].固件Web漏洞从近几年开始不断被爆出.例如,TP-Link和Hikvision的IP摄像头均被指出存在CVE硬编码漏洞,攻击者可通过硬编码或伪造的cookie绕过用户Web界面认证从而执行任意命令[3].此外,有研究表明,固件中Web服务器的配置文件有超过81%的配置都是以特权用户的权限运行.这种不必要的高级权限将带来极大的风险,利用Web组件的一个漏洞就可能攻陷整个设备[4].

近年来,被频繁爆出的固件漏洞和针对嵌入式设备发起的大规模恶意攻击事件表明嵌入式设备已逐渐成为被恶意攻击的重灾区.因此,对固件漏洞进行挖掘、检测变得越来越重要.综上所述,本课题主要针对固件Web漏洞检测技术进行深入研究.

1 相关工作

漏洞检测分析经历了从人工检测到自动化辅助分析的过程,技术形式多样.针对固件的漏洞检测技术目前主要分为2类,分别是固件动态漏洞检测和固件静态漏洞检测.

固件动态漏洞检测在有真实嵌入式设备的情况下,可直接利用漏洞扫描工具、fuzz模糊测试框架等进行动态检测.但由于嵌入式设备类型众多,对真实设备环境进行检测的代价高、设备类型无法覆盖全面.因此,通常需要先对固件进行虚拟仿真.通过分析并提取固件中仿真运行环境所需信息,利用QEMU虚拟技术实现固件仿真运行.然后再采用动态分析技术进行漏洞检测.目前常见的基于动态分析的漏洞检测技术包括模糊测试、动态污点分析等.

模糊测试是一种黑盒漏洞检测方法,通过构造非正常输入数据并监测测试目标运行过程中的异常来发现软件漏洞.模糊测试发展到现在出现了较多成熟的框架,如Fuzzing[5]、SPIKE[6]、sulley[7]、peach[8]、HotFuzz等.

动态污点分析技术是在程序运行的基础之上,对不可信数据流或控制流进行跟踪监控,将来自污点源的数据标识为污点[9],从而对数据传播路径、数据误用等情况进行跟踪和检测.动态污点分析技术主要代表工具有TaintCheck、Flayer、BitBlaze等.

基于动态分析的固件漏洞检测技术通过虚拟仿真的固件,其仿真成功率较低,在可解压的固件中,ARM平台下的仿真率为55%,MIPS平台下仅为17%[2].仿真成本较高,且不能完全真实反映固件的运行情况,无法大规模适用于所有固件.同时,动态分析需要构造大量测试输入数据,需等待系统反馈,检测速度较慢.

基于逆向工程的固件漏洞静态检测技术需要对固件进行逆向解压,提取出其中的关键核心程序,再继续对该程序进行逆向工程和源码审计.静态分析技术最早是通过人工代码审计的方式完成.由于代码数量庞大,人工审计方式不能完全满足要求.目前静态检测主要借助代码分析工具,常见的静态分析技术包括词法分析、数据流分析、静态污点传播、符号执行、模型检测等[10-12].

基于静态分析的漏洞检测方法研究较多,Agosta等[13]在2012年提出一种基于符号执行并结合静态污点分析的漏洞识别方法,基于该方法实现的工具主要是针对PHP的Web应用. 2013年Zheng团队[14]针对PHP语言提出了一种基于路径敏感的静态分析方式检测远程代码执行漏洞. 2014年Gupta团队[15]对Web应用中的SQL注入及跨站脚本漏洞检测的静态方法进行了研究与概括.常见的基于静态分析的源代码漏洞扫描工具有专门针对PHP语言的RIPS、运用词法分析的Checkmarx等.

固件静态漏洞检测可以在不执行程序的情况下对固件进行分析,检测速度较动态分析更快,效率高.固件可在各厂商官网上通过下载镜像文件的方式得到,在固件生命管理周期初始即固件执行之前进行漏洞检测,减少后期固件运行时检测的代价,比较适合固件情况.所以静态分析技术是针对嵌入式设备固件漏洞检测的一种重要且有效的方式.因此,采用静态分析进行漏洞检测.

目前已有的静态漏洞检测方法主要是从代码上去检测发现Web漏洞,且多数只针对某一特定语言.而固件中的Web漏洞不只是存在于代码中,还可能存在于配置文件或是暴露在说明文档等文件中,且不同厂商、型号的固件使用的代码语言有异.因此,固件的Web漏洞检测方法需对固件进行具体的分析并根据固件特性来制定.

2 基于多维度特征的固件Web漏洞检测方法

根据漏洞静态分析检测技术原理,针对固件Web漏洞提出一种基于多维度特征的固件Web漏洞检测方法,以达到有效检测固件Web漏洞,降低检测误报率的目的.该漏洞检测方法通过静态匹配固件Web漏洞特征的方式进行,技术路线如图 1所示.该检测方法主要由以下4部分组成.

图 1 基于多维度特征的固件Web漏洞检测方法技术路线

1) 固件Web多维度漏洞特征库构建.多渠道提取固件Web中各类漏洞在词法、行为和属性上的表现特征,多维度表征漏洞.

2) 待分析固件脆弱性特征提取.提取可能存在漏洞特征的脆弱性文件信息、代码片段、代码行为流等作为固件脆弱性特征.

3) 固件Web漏洞特征匹配检测.将待分析固件样本中的脆弱性特征与多维度漏洞特征进行匹配,发现待分析固件中满足的漏洞特征.

4) 漏洞检测可靠性评估:通过基于D-S证据理论建立的漏洞推理规则对检测结果进行评估判断.

2.1 多维度漏洞特征库构建 2.1.1 固件Web漏洞分类

笔者主要是对固件Web漏洞进行检测分析.通过收集并分析CVE、Exploit-db等漏洞平台上爆出的,包含D-Link、TP-Link、Westermo等6个厂商在内的72个固件Web方面的漏洞中发现,在固件存在的Web漏洞中,XSS占统计漏洞数据的21%,CSRF占31%,后门和硬编码占13%.而传统Web漏洞中最严重的SQL注入漏洞由于固件较多为轻量级,不存在数据库,漏洞存在占比较小,只有3%.固件Web漏洞类型具体统计结果如图 2所示.

图 2 固件Web漏洞类型比例
2.1.2 固件Web漏洞多维度特征

通过对固件Web常见漏洞进行分析和抽象后发现,虽然不同类型漏洞的原理、利用条件、危害各不相同,但可以用属性特征、词法特征和行为特征3个维度的特征来表示.这3个维度的特征描述情况如表 1所示.通过多渠道,如OWASP漏洞描述、CVE漏洞描述的已有固件漏洞信息和存在漏洞的第3方库信息,收集、提取出这些多维度特征,并用形式化语言进行表示来构建多维度漏洞特征库.

表 1 固件Web多维度漏洞特征
2.2 待分析固件样本脆弱性特征提取

待分析固件样本脆弱性特征提取需要经过固件收集和固件处理2个过程.第1步是固件的收集,可以通过人工的方式从厂商官网上下载获得,也可以通过爬虫获取到本地.收集得到的固件是一个二进制压缩包,要得到可分析的文件并从中提取出脆弱性特征需要对固件进行处理.本节主要介绍固件收集之后,对固件的多层级处理以及固件脆弱性特征提取工作.对固件进行处理分析提取出脆弱性特征还需要经过多层级固件处理,包括固件级处理、文件级处理、代码级处理3个过程,如图 3所示.

图 3 多层级固件处理过程
2.3 固件Web漏洞特征匹配

采用词法、数据流等作为固件Web漏洞检测的分析对象.提出基于多维度特征的固件Web漏洞检测方法,流程如图 4所示.

图 4 基于多维度特征的固件Web漏洞检测方法流程

流程描述如下:

1) 将待分析固件脆弱性特征进行分类为文件脆弱性特征和代码脆弱性特征;

2) 针对待分析固件的文件脆弱性特征,与多维度漏洞特征库中的词法特征和属性特征进行匹配,采用基于BM算法的属性/词法特征匹配算法;

3) 针对待分析固件的代码脆弱性特征,与多维度漏洞特征库中的行为特征进行匹配,采用基于行为流遍历的特征匹配算法.

2.4 基于D-S证据理论的漏洞检测可靠性评估

采用D-S证据理论对固件漏洞建立推理规则和对应模型,通过推理规则由漏洞特征得到漏洞为真的确定性,从而对漏洞检测进行可靠性评估,降低检测误报率.

2.4.1 D-S证据理论的基本原理

D-S证据理论的基本原理:推理规则中,证据E的确定性由经验CER(E)给定,计算命题H的确定性.

$ \text { if } E \text { then } H=\left\{h_{1}, h_{2}, \cdots, h_{n}\right\}, \quad F=\left\{c_{1}, c_{2}, \cdots, c_{n}\right\} $ (1)

得到命题H的概率分配函数M.

$ \begin{array}{c} M\left(\left\{h_{1}\right\}, \left\{h_{2}\right\}, \cdots, \left\{h_{n}\right\}\right)= \\ \left\{\operatorname{CER}(E) c_{1}, \operatorname{CER}(E) c_{2}, \cdots, \operatorname{CER}(E) c_{n}\right\} \end{array} $ (2)

计算H的信任函数Bel(H)、似然函数Pl(H)和类概率函数f(H).

$ \operatorname{Bel}(H)=\sum\limits_{i=1}^{n} M\left(\left\{h_{i}\right\}\right) $ (3)
$ \operatorname{Pl}(H)=1-\operatorname{Bel}(\neg H) $ (4)
$ f(H)=\operatorname{Bel}(H)+\frac{|H|}{|D|} M(D) $ (5)

信任函数Bel(H)表示对命题结论H为真的信任程度,又称为下限函数.似然函数Pl(H)表示对H为非假的信任程度,又称为上限函数.信任函数和似然函数的意义如图 5所示. (Bel(H), Pl(H)),当(1, 1)表示H为真,(0, 0)表示H为假,(0, 1)表示对H一无所知. Pl(H)-Bel(H)表示对H不知道的程度.

图 5 D-S证据理论信任函数和似然函数

最后,命题结论H的确定性通过式(6)计算得出.

$ \operatorname{CER}(H)=\operatorname{MD}\left(H / E^{\prime}\right) f(H) $ (6)

定义

$ \operatorname{MD}\left(H / E^{\prime}\right)=\left\{\begin{array}{ll} 1, 当H所要求的证据都已出现 \\ 0, 其他 \end{array}\right. $ (7)
2.4.2 漏洞推理规则及模型的建立

基于D-S证据理论原理,将固件Web漏洞特征匹配结果作为初始证据,建立该类漏洞从特征匹配到评估漏洞是否存在的推理规则.对于固件Web中常爆出的XSS漏洞,定义固件XSS漏洞知识规则如下:

rule1:if E1 and E2 then X={x1, x2}, F={F_x1, F_x2};

rule2:if E3 then Y={y1, y2}, F={F_y1, F_y2};

rule3:if X and Y then A={a1, a2}, F={F_a1, F_a2};

rule4:if E4 then B={b1, b2, b3}, F={F_b1, F_b2, F_b3};

rule5:if A then R={r1}, F={F_r1};

rule6:if B then R={r1}, F={F_r1′}.

在上述推理规则中,初始证据为E1、E2、E3、E4,分别代表的证据如下:

E1:固件代码脆弱性特征中包含source点;

E2:固件代码脆弱性特征中包含sink点;

E3:固件代码脆弱性特征中sink和source之间不存在过滤或替换函数;

E4:sink点和source点关键词直接拼接.

每条推理规则中得到的结论有XYABR,分别代表的结论如下.

X:形成漏洞可达路径.取值范围为{是,不确定},表示为{x1, x2};

Y:用户外部可控参数无过滤.取值范围为{是,不确定},用{y1, y2}表示;

A:满足行为特征.取值范围为{满足,不确定},用{a1, a2}表示;

B:满足词法特征.取值范围为{满足,不满足,不确定},用{b1, b2, b3}表示;

R:存在XSS漏洞.取值范围为{存在},用{r1}表示;

F:表示推理规则结论取值的对应可信度.

由上述漏洞推理规则建立的XSS漏洞推理网络如图 6所示.

图 6 基于D-S证据理论的XSS漏洞推理网络
2.4.3 漏洞检测可靠性评估流程

将固件Web漏洞特征匹配结果作为初始证据,根据D-S证据理论介绍中的计算过程开始对漏洞推理规则进行传递计算,得到最终漏洞成立结论的确定性,从而对漏洞检测结果进行评估.具体流程描述如下.

1) 初始证据Ei,即漏洞多维度特征匹配的结果,其确定性用CER(Ei)表示,取值范围为[0, 1],通过固件Web漏洞行为特征和词法特征的匹配结果得到.推理结论的可信度因子F由先验知识给定.

2) 由CER(Ei)和F通过式(2)得到结论概率分配函数M,再通过式(3)~式(5)分别计算得到结论的信任函数Bel()、似然函数Pl()、类概率函数f(),最后通过式(6)、式(7)得到该条规则结论的确定性.

3) 判断该条规则是否是漏洞推理模型的最终结论,如果是最终结论,则传递计算流程结束;如果不是最终结论,则将得到的该结论确定性作为新一轮计算的证据确定性值,重复步骤2).

漏洞推理规则的最终结论确定性表示了该漏洞存在的可靠性,是漏洞特征匹配结果与先验知识的结合.随着对漏洞检测结果的确认和先验知识的增加,可扩展漏洞推理规则,并不断调整漏洞推理规则中的可信度因子,使得漏洞最终结论的确定性更加贴近实际,从而降低固件Web漏洞检测误报率.

2.5 多维度特征固件Web漏洞检测框架的构建

根据上述方法设计并实现了一套多维度特征(MDF, multi-dimensional feature)固件Web漏洞检测框架,如图 7所示.将该框架用于对实际的嵌入式设备固件进行检测分析,以验证笔者提出的方法对所要解决的问题的有效性. MDF固件Web漏洞检测框架的整体设计思想包含有模块化编程、分层结构等,采用模块化编程和分层结构可以使框架易于扩展,能够添加更多漏洞类型和漏洞特征,支持更多漏洞和更加准确的检测.

图 7 多维度特征固件Web漏洞检测框架

MDF固件Web漏洞检测框架总共包含3层,分别为应用展示层、业务逻辑层、数据持久层.应用展示层主要是用户与MDF固件Web漏洞检测框架的交互,包含固件导入模块、漏洞特征管理模块、检测结果展示模块; 业务逻辑层实现了对固件Web漏洞进行检测的主要逻辑和过程,包含固件处理模块、固件漏洞检测引擎、漏洞检测评估模块; 数据持久层存储了MDF固件Web漏洞检测框架的漏洞特征库.

3 试验与结果分析

将上述构建的MDF固件Web漏洞检测框架应用于实际固件检测中,并对MDF固件Web漏洞检测的功能和性能进行对比和分析,验证基于多维度特征的固件Web漏洞检测方法在针对固件Web多种不同类型的漏洞检测上的有效性,以及其对检测误报率的降低.

3.1 MDF固件Web漏洞检测功能分析

MDF固件Web漏洞检测框架的功能主要通过对待分析固件的漏洞检测结果以及与其他开源工具功能的对比来进行分析.

1) MDF固件Web漏洞检测结果

选取30个固件作为MDF固件Web漏洞检测的待分析固件样本,包括5个确认包含已知Web漏洞的固件和25个随机选取的固件.将该待分析固件样本导入MDF固件Web漏洞检测框架进行测试.

待分析固件样本中5个确认包含已知Web漏洞的固件属于不同嵌入式设备厂商.漏洞信息来源于CVE、Exploit-db、Seebug 3个漏洞平台.漏洞编号分别为:CVE-2013-7389、CVE-2013-4975、CVE-2017-5521、SSV-91481、EDB-ID:35817.漏洞类型包括XSS、CSRF、密码泄漏/硬编码密码、信息泄漏. MDF固件Web漏洞检测框架对这5个确认包含已知Web漏洞的固件检测情况如表 2所示.

表 2 MDF固件Web漏洞检测框架对确认包含已知漏洞的固件检测情况

针对固件漏洞检测的确认方法目前有3类:①对没有真实设备的固件进行人工代码审计确认;②对有真实嵌入式设备环境的固件进行漏洞复现;③该固件已在漏洞平台上被确认存在漏洞.通过方式①和②对待分析固件样本中25个随机选取的固件的Web漏洞检测结果进行分析,目前有2个命令执行漏洞,7个XSS漏洞,2个CSRF漏洞和6个硬编码密码得到了确认.此外,样本中有较多固件被检测出存在硬编码信息和信息泄漏.

2) MDF固件Web漏洞检测功能分析与对比

基于静态分析的漏洞检测技术在功能上常用所能支持的漏洞类型衡量.笔者研究的基于MDF的固件Web漏洞检测方法通过支持漏洞类型、代码语言、文件格式进行功能分析,如表 3所示.

表 3 基于多维度特征的固件Web漏洞检测功能分析

将MDF固件Web漏洞检测框架与传统基于静态分析的开源漏洞检测工具RIPS以及Vulny-Code-Static-Analysis进行功能分析对比.针对固件Web常见漏洞的检测支持情况如表 4所示.因此,笔者提出的基于MDF的固件Web漏洞检测方法能有效针对固件Web中常见的多种不同类型漏洞进行检测.

表 4 MDF固件Web漏洞检测与开源静态工具功能对比
3.2 MDF固件Web漏洞检测性能分析

基于静态分析的漏洞检测通常存在误报率高的问题.如何降低静态漏洞检测误报率是基于多维度特征的固件Web漏洞检测方法需要研究的问题.误报是指检测显示的结果并不是真实的漏洞,误报率表示存在这样误报情况的概率.用D表示固件Web中总检测出的数量,N表示检测出的非漏洞数量,P表示漏洞检测误报率.

$ P=\frac{N}{D} \times 100 \% $ (8)

从MDF固件Web漏洞检测结果中抽取20条检测结果,编号为1~20,用于漏洞检测可靠性评估.根据先验知识将漏洞特征匹配检测结果量化作为初始证据确定性.根据对应漏洞推理规则进行计算,并依据漏洞类型分别对每条漏洞检测结果的可靠性评估值进行降序排列,结果如表 5所示.

表 5 基于D-S证据理论的漏洞检测可靠性评估

表 5中,可靠性评估值表示采用基于D-S证据理论的固件Web漏洞推理规则后得到的计算数值,是对漏洞存在这一结论的确定性量化表示;漏洞确认结果表示通过前文所述固件漏洞检测确认方法得到的漏洞确认结果.

测试数据以漏洞类型进行区分.每类漏洞检测结果的可靠性评估值以降序排列.通过漏洞确认得到,漏洞检测结果编号为4、20、10、6、15的检测结果为误报.编号4、20、10的可靠性评估值为XSS漏洞检测数据的倒数1,2,3条;编号6的可靠性评估值为命令执行漏洞检测数据的最后1条;编号15的可靠性评估值为硬编码密码检测数据的倒数第5条.将可靠性评估前的漏洞检测结果作为集合S.可靠性评估后,去除以降序排列的每类漏洞检测结果尾部30%的数据作为集合S′.根据式(8)可得,集合S的误报率PS=25%.集合S′的误报率PS′=7.14%.

表 5的结果分析可见,漏洞检测误报多出现在可靠性评估值较低的检测结果中.某种程度上,可靠性评估值越低,误报的可能性越大.可将可靠性评估值较低的检测结果视作误报,从而降低检测出的非漏洞数量N,降低误报率P.由此,基于D-S证据理论的漏洞检测可靠性评估值为判定漏洞检测结果是否为误报提供了依据,在一定程度上能降低漏洞特征匹配检测的误报率.

此外,将MDF固件Web漏洞检测与开源静态检测工具RIPS、Vulny-Code-Static-Analysis进行误报率对比.检测对象为前述待分析固件样本中25个随机选取的固件.针对XSS、命令执行、硬编码密码3类漏洞的检测结果进行误报率计算.如表 6所示.

表 6 MDF固件Web漏洞检测与开源静态工具误报对比

表 6中,MDF固件Web漏洞检测共14条检测结果,有1条硬编码密码误报,误报率PM为7.14%;RIPS共16条检测结果,有3条XSS误报,误报率PR为18.75%;Vulny-Code-Static-Analysis共19条检测结果,有2条XSS误报、3条硬编码密码误报,误报率PV为26.32%.

表 6结果分析可见,经过基于D-S证据理论的漏洞检测可靠性评估处理后的MDF固件Web漏洞检测在误报率上较开源静态分析工具RIPS、Vulny-Code-Static-Analysis更低.

4 结束语

根据静态漏洞检测技术的思想,提出了基于多维度特征的固件Web漏洞检测方法,并基于此方法实现了一套针对固件Web漏洞的检测框架,利用该框架对固件进行漏洞检测分析,发现包括XSS、CSRF、命令执行漏洞在内的多个固件Web漏洞.但是该方法仍然还有很多的不足,如当面对具有复杂语义和控制流环境时,对行为特征匹配分析出的结果会有不足.针对本文实现的MDF固件Web漏洞检测框架,目前支持XSS、CSRF、命令执行、硬编码密码、信息泄漏等漏洞,更多类型的漏洞特征有待扩展添加.下一步的工作计划如下:

1) 针对笔者提出的方法进行优化,提高检测具有复杂语义和控制流固件Web代码漏洞的能力;

2) 收集并分析更多类型的固件Web漏洞,如文件上传漏洞、SSRF漏洞等.扩展多维度特征固件Web漏洞特征库,进一步提高漏洞检测覆盖率;

3) 对更多的嵌入式设备固件进行测试,优化MDF固件Web漏洞检测框架,检测更多的固件Web漏洞.

参考文献
[1]
Standard I. IEEE standard glossary of software engineering terminology[J]. IEEE Std, 1990, 610(12): 1-84.
[2]
Costin A, Zarras A, Francillon A, et al. Automated dynamic firmware analysis at scale: a case study on embedded web interfaces[C]//ACM on Asia Conference on Computer and Communications Security.[S.l.]: ACM, 2016: 437-448.
[3]
Exploit-db. TP-Link IP cameras firmware 1. 6. 18P12-multiple vulnerabilities[EB/OL]. (2013-05-28)[2018-09-01]. https://www.exploit-db.com/exploits/25812/.
[4]
Costin A, Zaddach J, Francillon A, et al. A large-scale analysis of the security of embedded firmwares[C]//USENIX Security.[S.l.]: [s.n.], 2014: 95-110.
[5]
Miller B P, Fredriksen L, So B. An empirical study of the reliability of UNIX utilities[J]. Communications of the ACM, 1990, 33(12): 32-44. DOI:10.1145/96267.96279
[6]
Aitel D. An introduction to SPIKE, the fuzzer creation kit, presented at the BlackHat USA conference[EB/OL]. (2011-05-20)[2018-06-10]. https://www.blackhat.com/html/bh-usa-02/bh-usa-02-speakers.html.
[7]
GitHub. Sulley: a pure-python fully automated and unattended fuzzing framework[EB/OL]. (2016-10-18)[2018-09-01]. https: //github.com/OpenRCE/sulley.
[8]
GitHub. A fuzzing framework which uses a DSL for building fuzzers and an observer based architecture to execute and monitor them[EB/OL]. (2017-08-08)[2018-09-01]. https://github.com/MozillaSecurity/peach.
[9]
Chess B, West J. Dynamic taint propagation:finding vulnerabilities without attacking[J]. Information Security Technical Report, 2008, 13(1): 33-39.
[10]
Pistoia M, Chandra S, Fink S J, et al. A survey of static analysis methods for identifying security vulnerabilities in software systems[J]. IBM Systems Journal, 2007, 46(2): 265-288. DOI:10.1147/sj.462.0265
[11]
Li P, Cui B. A comparative study on software vulnerability static analysis techniques and tools[C]//Information Theory and Information Security (ICITIS).[S.l.]: IEEE, 2010: 521-524.
[12]
Liu B, Shi L, Cai Z, et al. Software vulnerability discovery techniques: a survey[C]//Multimedia Information Networking and Security (MINES).[S.l.]: IEEE, 2012: 152-156.
[13]
Agosta G, Barenghi A, Parata A, et al. Automated security analysis of dynamic web applications through symbolic code execution[C]//Information Technology: New Generations (ITNG).[S.l.]: IEEE, 2012: 189-194.
[14]
Zheng Y, Zhang X. Path sensitive static analysis of web applications for remote code execution vulnerability detection[C]//International Conference on Software Engineering.[S.l.]: [s.n.], 2013: 652-661.
[15]
Gupta M K, Govil M C, Singh G. Static analysis approaches to detect SQL injection and cross site scripting vulnerabilities in web applications: a survey[C]//Recent Advances and Innovations in Engineering.[S.l.]: IEEE, 2014: 1-5.