CN107368417A - 一种漏洞挖掘技术测试模型及测试方法 - Google Patents

一种漏洞挖掘技术测试模型及测试方法 Download PDF

Info

Publication number
CN107368417A
CN107368417A CN201710609538.6A CN201710609538A CN107368417A CN 107368417 A CN107368417 A CN 107368417A CN 201710609538 A CN201710609538 A CN 201710609538A CN 107368417 A CN107368417 A CN 107368417A
Authority
CN
China
Prior art keywords
test
leak
testing
bug excavation
bug
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201710609538.6A
Other languages
English (en)
Other versions
CN107368417B (zh
Inventor
李津
陈锦富
黄敏桓
陈书杰
曾智锋
谢网根
张庆晨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
63928 TROOPS PEOPLE'S LIBERATION ARMY
Jiangsu University
Original Assignee
63928 TROOPS PEOPLE'S LIBERATION ARMY
Jiangsu University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 63928 TROOPS PEOPLE'S LIBERATION ARMY, Jiangsu University filed Critical 63928 TROOPS PEOPLE'S LIBERATION ARMY
Priority to CN201710609538.6A priority Critical patent/CN107368417B/zh
Publication of CN107368417A publication Critical patent/CN107368417A/zh
Application granted granted Critical
Publication of CN107368417B publication Critical patent/CN107368417B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种漏洞挖掘技术测试模型及测试方法,属于软件工程领域。包括:步骤1,基于现有静态和动态漏洞挖掘方法,构建自适应的漏洞挖掘运行环境;步骤2,根据不同的漏洞类型、漏洞语言及漏洞触发方式,构建并配置测试用例集;步骤3,执行漏洞挖掘测试方法,并监控挖掘测试状态,同时输出测试分析报告和统计测试结果;步骤4,基于漏洞挖掘测试过程模型设计并实现一个集成测试平台,进一步验证漏洞测试模型的可行性和有效性。本发明不仅以一套具体的评价标准准确评估了现有典型的漏洞挖掘方法和工具,并且对这些方法和工具进行对比分析,对人们在实际漏洞挖掘中选择最合适、最有效的方法或工具具有一定的指导意义。

Description

一种漏洞挖掘技术测试模型及测试方法
技术领域
本发明属于软件测试中的漏洞挖掘领域,涉及一种漏洞挖掘技术测试模型及测试方法。
背景技术
随着社会信息技术的迅猛发展,市场上各种应用软件应运而生。而这些软件本身的质量参差不齐,大部分软件都没有经过规范的审查和严格的测试就被投入使用,从而导致这些软件中存在着大量可被攻击和利用的软件漏洞。目前对系统安全性存在威胁的主要因素是应用软件、各种通信安全协议和构成信息系统的操作系统等存在未知的漏洞。由于各种原因,漏洞的存在无法避免,如果某些比较严重的未知漏洞被攻击者发现,这些未知漏洞就很有可能被攻击者利用,攻击者可以在未经授权的情况下对计算机系统进行访问或者破坏。先于攻击者发现并及时修复漏洞能够有效的降低潜在漏洞对于信息系统安全性的威胁。因此主动挖掘并分析系统安全漏洞具有重要的意义。漏洞挖掘和漏洞分析是漏洞研究的两个主要部分。漏洞挖掘技术是指对未知漏洞的探索,综合应用各种技术和工具,尽可能地找出软件中的隐藏的漏洞;漏洞分析技术是指对已发现漏洞的细节进行深入分析,为漏洞利用、补救等处理措施作铺垫。软件漏洞检测技术是发现软件中存在的漏洞,是确保信息系统安全的重要途径。
虽然目前不同研究组织和个人都开发了大量漏洞挖掘方法或工具,但每种方法都有自己各自的优缺点,针对这些优缺点每种挖掘方法或工具的适用场景也各不相同,所以有必要对这些工具以及方法做出一个较为准确和完整的分析评价。通过考察之前的对于软件漏洞检测方面的研究成果,我们发现不存在具有普适性的现有漏洞检测方法或工具,它们都只能在某些特定情况下发挥一定的漏洞检测效果。实践中需要根据实际情况选择最合适、最有效的软件漏洞检测方法或工具。因此,研究对现有漏洞挖掘方法和工具的对比评价具有十分重要的理论价值和实践意义。
发明内容
为了解决如何在现实的漏洞挖掘中针对不同的环境以及不同的场景选择适用且有效的漏洞挖掘方法和工具,本发明提出了一种漏洞挖掘技术测试模型及测试方法,建立了一个漏洞挖掘方法测试过程模型,能够提高漏洞挖掘方法的自动化水平。同时我们设计并实现了一个集成测试评估平台,能对一些主流的静态分析方法和一些动态挖掘方法进行测试和对比分析,以得出一个直观的对比分析结果,进而生成测试分析报告。最终测试结果能指导如何在现实的漏洞挖掘中选择适用且有效的漏洞挖掘方法和工具。
本发明的技术方案如下:
步骤1,基于现有静态和动态漏洞挖掘方法,构建自适应的漏洞挖掘运行环境;
步骤2,根据不同的漏洞类型、漏洞语言及漏洞触发方式,构建并配置测试用例集;
步骤3,执行漏洞挖掘测试方法,并监控挖掘测试状态,同时输出测试分析报告和统计测试结果;
步骤4,基于漏洞挖掘测试过程模型设计并实现一个集成测试平台,进一步验证漏洞测试模型的可行性和有效性。
进一步方案中,上述步骤1的具体步骤如下:
步骤1.1,选择确定所需要配置的测试方法类型为静态测试方法或者动态测试方法;
步骤1.2,对应静态测试方法,选择配置语言类型为C++/C或者Java;对应动态测试方法,选择配置运行平台为Windows或者Linux;
步骤1.3,对应静态测试方法的Java语言,选择配置漏洞挖掘方法有FindBugs、FindSecBugs、PMD等一些方法;对应静态测试方法的C++/C语言,选择配置漏洞挖掘方法有FlawFinder、SPLINT、CppCheck等一些方法;对应动态测试方法,选择配置漏洞挖掘方法有MiniFuzz、WinAfl、PinTool等一些方法;
步骤1.4,选择在测试结果报告中输出的评价指标,包括误报率,准确率,时间代价,资源开销,利用效果这五个指标。
进一步方案中,上述步骤2的具体步骤如下:
步骤2.1,以漏洞挖掘方法评估为目标,设计一个具备有源代码软件、无源代码软件的测试集框架,为了方便测试评估,测试集框架中每个测试用例属性需要包括输入类型、运行平台、漏洞类型、漏洞触发条件、漏洞发生位置范围等信息;
步骤2.2,配置静态测试用例集,针对Java测试平台,基于一些开源的漏洞代码网站,收集抓取Java漏洞测试用例集;针对C++/C测试平台,同样基于一些开源的漏洞代码网站,收集抓取C++/C漏洞测试用例集。由于静态测试用例样本完全独立并且满足漏洞测试集框架,按照漏洞分类信息直接将其加入测试集中。此外,由于Java和C++/C测试用例在测试用例集样本大小的不足,还需要收集一些公开漏洞的开源软件进行弥补,尝试将开源代码剥离出来并按照框架改写测试用例,按照漏洞类型将其加入测试集,最后将每个测试用例映射到该漏洞对应的CWE(Common Weakness Enumeration)编号;
步骤2.3,配置动态测试用例集,由于动态漏洞挖掘需要基于二进制可执行文件在程序执行的过程中发现程序的异常,因此需要对测试集进行扩展。通过对静态测试用例集代码进行修改编译生成待测试的二进制文件,进而形成二进制文件的测试用例集并按照漏洞分类信息将其加入测试集;
步骤2.4,测试集收集和扩展完成后,为了方便管理平台使用,利用数据库对构造的漏洞方法测试集进行索引、整理。
进一步方案中,上述步骤3的具体步骤如下:
步骤3.1,根据步骤1中构建好的漏洞挖掘运行环境以及步骤2中配置好的测试用例集,选择测试对象是单个测试用例,或是测试用例集,或是真实源代码程序,执行漏洞挖掘测试方法;
步骤3.2,对漏洞挖掘测试方法执行状态进行实时监控,通过对挖掘状态的监测分析输出测试分析报告,测试分析报告中包括所配置挖掘方法的版本信息,测试对象的文件位置及文件名。其中对于静态测试方法还包含了发现的漏洞数,代码行数,漏洞危险级别以及执行时间等一些信息,对于动态测试方法还包含了是否检测到异常,异常信息,导致异常或者崩溃的测试集以及寄存器信息等一些信息;
步骤3.3,针对测试分析报告的结果分别计算误报率、准确率、时间代价、资源开销、利用效果这五个评价指标的得分以及最终的总得分;
步骤3.4,根据步骤1.4所选择的评价指标生成一份最终的统计结果报告,用以对漏洞挖掘方法实现定量的评价以及对不同的漏洞挖掘方法进行对比评价。
进一步方案中,上述步骤4的具体步骤如下:
步骤4.1,基于漏洞挖掘测试过程模型设计并实现一个漏洞挖掘方法集成测试平台VMATP(Vulnerability Mining Approach Testing Platform),所述测试平台主界面包括12个部分:测试类型,测试对象,语言,测试用例集平台,方法/工具,脆弱性类型,子类型,测试用例,行为,信息,评价细则及报告等;
步骤4.2,针对不同的测试方法类型以及不同语言下的测试工具和方法,选取相对应的测试用例进行对比实验,记录下测试结果;
步骤4.3,根据测试结果,针对不同的测试工具绘制实验对比结果的表格,其中数据包括工具名,测试用例集,实际漏洞数,发现漏洞数,假阳性数和检测出的正确的漏洞数等,根据实验对比结果计算出每种工具在不同的测试用例下的检测能力绘制检测能力对比柱状图,检测能力即检测出的正确的漏洞数除以实际漏洞数。
进一步,所述步骤2.1中,有源代码软件主要包含关键数据代码和逻辑分析代码,关键数据代码指漏洞触发相关的变量、常量数据的代码;逻辑分析处理代码指对关键数据进行分析、处理的代码;所述无源代码软件首先读取输入数据,然后对输入信息进行提取,将进行数据处理,在提取和处理过程时可能执行漏洞代码。
进一步,所述步骤3.3中,
误报率的计算通过公式:检测出的错误漏洞数量/检测出的总漏洞数量;
准确率的计算通过公式:检测出的正确的漏洞数量/存在的总的漏洞数量;
时间代价的计算通过公式:(挖掘方法执行结束时间-开始时间)/挖掘方法所用的最大时间;
资源开销的计算通过公式:内存占用率*50%+CPU占用率*50%;
利用效果的计算通过公式:(实际漏洞CVSS总分/个数)/10;
最终得分的计算通过公式:{(1-误报率)*30%+准确率*30%+(1-时间代价)*10%+(1-资源开销)*10%+利用效果*20%}/选择指标权重和。
进一步,所述步骤4.1中,
测试类型:选择测试类型为静态测试或者动态测试,不同的测试对应着不同的测试方法和测试用例的选择;测试对象:可选择对单个测试用例测试,选择测试用例集进行批处理,还可以选择正是源代码程序;测试用例:针对不同的环境配置选择不同类型的漏洞类型,每个子类型对应了CWE编号;行为:配置完挖掘环境和测试用例后,选择执行漏洞挖掘或进行重置操作;信息:对漏洞挖掘测试方法执行状态进行实时监控,通过对挖掘状态的监测分析输出测试分析报告;评价细则:可选择误报率、准确率、时间代价、资源开销、利用效果这五个评价指标的定量计算;报告:程序执行结束之后,可以根据所选择的评价指标输出具体的评价结果和最终的评价得分。
与现有技术相比,本发明的有益效果:
1、本发明建立了一个漏洞挖掘方法测试过程模型,能够提高漏洞挖掘方法的自动化水平,并设计了一套评价标准以评价不同挖掘方法。
2、在漏洞挖掘方法测试过程模型的基础上,以漏洞挖掘方法评估为目标设计了一个具备有源代码软件、无源代码软件的洞挖掘方法测试集框架,用于更全面的对漏洞挖掘方法和工具进行评估,方便测试平台的使用。
3.设计实现了一个漏洞挖掘方法测试评估平台,该测试平台能够很好地实现测试过程的控制以及评估指标的采集,提高了测试过程的自动化水平,并且该测试平台的最终评估测试结果对人们在实际漏洞挖掘中根据实际情况选择最合适、最有效的软件漏洞检测方法或工具具有一定的指导意义。
附图说明
图1是一种漏洞挖掘方法测试模型及测试平台的流程图。
图2是构建自适应的漏洞挖掘运行环境的流程图。
图3是构建配置测试用例集的流程图。
图4是有源代码测试用例框架图。
图5是无源代码测试用例框架图。
图6是动态测试用例修改前的代码段。
图7是动态测试用例修改后的代码段。
图8是生成测试分析报告和统计结果的流程图。
图9是漏洞挖掘方法集成测试平台的主界面图。
图10是findbugs、PMD、findsecbugs检测能力对比柱状图。
具体实施方式
为了能够更清楚地理解本发明一种漏洞挖掘方法测试模型及测试平台的技术内容,下面结合附图和具体实施案例对本发明作进一步说明,须指出的是,所描述给出的实施案例旨在便于对本发明的理解,而对其没有任何限定要求。
本发明以解决如何在现实的漏洞挖掘中针对不同的环境以及不同的场景选择适用且有效的漏洞挖掘方法和工具的问题为目的,提供了一种漏洞挖掘方法测试过程模型,有效地提高了漏洞挖掘方法的自动化水平,同时基于漏洞挖掘方法测试过程模型设计实现了一个集成测试平台,并且进行了充分的分析和实验,证明了漏洞测试过程模型的可行性和有效性。
如图1所示,本发明的漏洞挖掘方法测试模型及测试平台,包括:
步骤1,基于现有静态和动态漏洞挖掘方法,构建自适应的漏洞挖掘运行环境;
上述步骤1中,参照图2,构建自适应的漏洞挖掘运行环境具体步骤如下:
步骤1.1,选择确定所需要配置的测试方法类型为静态测试方法或者动态测试方法,静态测试方法和动态测试方法是目前软件漏洞检测中最主要也是最常用的两种方法。静态测试方法不需要运行程序,而是通过直接的代码分析来检测漏洞;而动态测试方法在调试器中运行目标程序,通过观察执行过程中程序的运行状态、内存使用状况以及寄存器的值等以发现潜在问题,寻找出潜在的漏洞。
步骤1.2,对应静态测试方法,选择配置语言类型为C++/C或者Java。C、C++和Java是目前计算机比较主流并且也是应用比较广泛的三门编程语言,C语言是面向过程的语言,C++和Java是面向对象的语言。由于C是C++的前身并且这两种语言在语法结构和功能上有很多的相似之处,所以可以将这两种语言归为一类。对应动态测试方法,选择配置运行平台为Windows或者Linux,Windows和Linux操作系统也是目前两大主流操作系统,两者应用十分广泛并且差异性也较大。
步骤1.3,对应静态测试方法的Java语言,选择配置漏洞挖掘方法有FindBugs、FindSecBugs、PMD等一些方法,这些针对Java的漏洞挖掘方法主要利用词汇分析和数据流分析等技术来检测Java的字节码文件以发现潜在的漏洞。对应静态测试方法的C++/C语言,选择配置漏洞挖掘方法有FlawFinder、SPLINT、CppCheck等一些方法,这些针对C++/C语言的漏洞挖掘方法主要利用规则检查、文本模式匹配和函数分析等技术来检查复杂的程序以查出漏洞。对应动态测试方法,选择配置漏洞挖掘方法有MiniFuzz、WinAfl、PinTool等一些方法,这些动态漏洞挖掘方法从代码流和数据流两方面入手:通过设置断点动态跟踪目标程序代码流,以检测有缺陷的函数调用及其参数;对数据流进行双向分析,通过构造特殊数据触发潜在错误并对结果进行分析。
步骤1.4,选择在测试结果报告中输出的评价指标,包括误报率,准确率,时间代价,资源开销,利用效果这五个指标。其中误报率是指漏洞挖掘方法发现错误漏洞的概率;准确率是指漏洞挖掘技术发现漏洞的准确程度,准确率和误报率是相对应的,即误报率越低,则相应的准确率则越高;时间代价是指漏洞挖掘方法发现漏洞所需的时间;资源开销是指漏洞挖掘方法在发现漏洞时所需要的具体环境资源等,这里主要考虑的是CPU占用率和内存的占用率,不同的漏洞挖掘方法,运用时所需系统资源如CPU占用以及内存利用率都各不相同;利用效果漏洞挖掘方法发现的漏洞对应的CVSS得分,即反映出所发现漏洞的价值。CVSS(Common Vulnerability Scoring System)即“通用漏洞评分系统”,是一个行业公开标准,其被设计用来评测漏洞的严重程度。漏洞的最终得分最大为10,最小为0,得分7~10的漏洞通常被认为比较严重,得分在4~6.9之间的是中级漏洞,0~3.9的则是低级漏洞。
步骤2,根据不同的漏洞类型、漏洞语言及漏洞触发方式,构建并配置测试用例集;
上述步骤2中,参照图3,构建并配置测试用例集具体步骤如下:
步骤2.1,以漏洞挖掘方法评估为目标,设计一个具备有源代码软件、无源代码软件的测试集框架。其中有源代码测试用例软件主要包含关键数据代码和逻辑分析代码,关键数据代码指漏洞触发相关的变量、常量等数据的代码,逻辑分析处理代码指对关键数据进行分析、处理的代码,整体框架图如图4;无源代码测试用例软件首先读取输入数据,然后对输入信息进行提取,将进行数据处理,在提取和处理过程时可能执行漏洞代码,整体框架图如图5。为了方便测试评估,测试集框架中每个测试用例属性需要包括输入类型、运行平台、漏洞类型、漏洞触发条件、漏洞发生位置范围等信息,具体如表1所示。
步骤2.2,配置静态测试用例集,针对Java测试平台,基于一些开源的漏洞代码网站,收集抓取Java漏洞测试用例集,表2给出了Java漏洞测试用例的覆盖情况;针对C++/C测试平台,同样基于一些开源的漏洞代码网站,收集抓取C++/C漏洞测试用例集,表3给出了C++/C漏洞测试用例的覆盖情况。由于静态测试用例样本完全独立并且满足漏洞测试集框架,按照漏洞分类信息直接将其加入测试集中并将每个测试用例映射到该漏洞对应的CWE(Common Weakness Enumeration)编号。此外,由于Java和C++/C测试用例在测试用例集样本大小的不足,于是还需要收集一些公开漏洞的开源软件进行弥补,尝试将开源代码剥离出来并按照框架改写测试用例,按照漏洞类型将其加入测试集。开源软件相较Java和C++/C测试用例更能够代表实际工作需要面对的测试目标,且程序大小上有明显的提升,与Java和C++/C形成优势互补,在表4中列出了选择的开源软件测试用例的名称、版本、包含文件数量和非空白行、非注释行代码数量等一些统计信息。
步骤2.3,配置动态测试用例集,由于动态漏洞挖掘需要基于二进制可执行文件在程序执行的过程中发现程序的异常,因此需要对测试集进行扩展。通过对静态测试用例集代码进行修改编译,生成待测试的二进制文件,进而形成二进制文件的测试用例集并按照漏洞分类信息将其加入测试集。根据上面的设计,对于一个对应CWE编号121的的测试用例进行修改,图6给出了修改前的代码,图7给出了修改后的代码。通过对比可知,修改后的代码只增加了两行代码分别是第八行的读取文件内容和第九行的关闭句柄,单纯添加了文件内容读取部分,没有带来额外的漏洞和运行资源的浪费。通过两个函数,将读取的文件内容赋值给变量,然后作为数组的元素序数。一方面取代了原代码的手动输入,方便了系统的高效测试;另一个方面,程序实现文件内容的随机化,更具有随机性,普遍性。当随机的文件内容大于数组的长度20时,可能会造成内存中的不可写部分被写入了非法内容,即发生资源访问越界,进程就会出现异常。
步骤2.4,测试集收集和扩展完成后,为了方便管理平台使用,利用数据库对构造的漏洞方法测试集进行索引、整理。根据测试系统的要求和测试用例的具体情况,设计数据表如表5所示。其中ID表示每条数据元素的id;vul_type即为资源访问越界、运算错误、结构的使用错误、保护机制错误等漏洞类型作为分类的依据;vul_filename就是带有CVE编号类型的二进制文件名;baseFilename则是被测目标程序的种子文件的名称;接下来是九种典型的检测工具和方法,如果需要对方法进行扩展也要在此对相应的方法进行记录;support_param为客户端需要传递给服务端的挖掘方法所需参数。
表1测试用例属性
属性名称 内容描述
测试用例id 测试用例标识
源代码类型 C/C++代码/Java代码/无
无源代码类型 二进制/java程序
输入类型 输入类型(文件,网络等)
输入地址 对应输入类型的输入地址(文件位置/网络地址等)
运行平台 Windows/Linux
漏洞类型 资源访问越界、运算错误、结构使用错误等
漏洞触发条件 使得漏洞发生的条件(即输入等信息)
漏洞发生位置范围 漏洞发生的位置,包括地址发生的具体范围
表2Java漏洞测试用例覆盖情况
脆弱性类型 CWE编号 测试用例数
命令注入 78 251
Weak Cryptography 327 246
弱哈希 328 236
LDAP注入 90 59
路径遍历 22 268
Secure Cookie Flag 614 67
SQL注入 89 504
违反信任边界 501 126
弱随机 330 493
XPATH注入 643 35
XSS(跨站脚本) 79 455
表3C++/C漏洞测试用例覆盖情况
表4开源软件测试用例集
表5测试用例集数据库表设计
步骤3,执行漏洞挖掘测试方法,并监控挖掘测试状态,同时输出测试分析报告和统计测试结果;
上述步骤3中,参照图8,生成测试分析报告和统计结果的具体步骤如下:
步骤3.1,根据步骤1中构建好的漏洞挖掘运行环境以及步骤2中配置好的测试用例集,选择测试对象是单个测试用例,或是测试用例集,或是真实源代码程序。执行漏洞挖掘测试方法,当测试对象对应的是测试用例集,将对同一漏洞类型下的所有测试用例集进行批处理。
步骤3.2,对漏洞挖掘测试方法执行状态进行实时监控,通过对挖掘状态的监测分析输出测试分析报告,测试分析报告中包括所配置挖掘方法的版本信息,测试对象的文件位置及文件名。其中对于静态测试方法还包含了发现的漏洞数,代码行数,漏洞危险级别以及执行时间等一些信息;对于动态测试方法还包含了是否检测到异常,异常信息,导致异常或者崩溃的测试集以及寄存器信息等一些信息。
步骤3.3,针对测试分析报告的结果分别计算误报率、准确率、时间代价、资源开销、利用效果这五个评价指标的得分以及最终的总得分。其中误报率的计算通过公式:检测出的错误漏洞数量/检测出的总漏洞数量;准确率的计算通过公式:检测出的正确的漏洞数量/存在的总的漏洞数量;时间代价的计算通过公式:(挖掘方法执行结束时间-开始时间)/挖掘方法所用的最大时间;资源开销的计算通过公式:内存占用率*50%+CPU占用率*50%;利用效果的计算通过公式:(实际漏洞CVSS总分/个数)/10;最终得分的计算通过公式:{(1-误报率)*30%+准确率*30%+(1-时间代价)*10%+(1-资源开销)*10%+利用效果*20%}/选择指标权重和。
步骤3.4,根据步骤1.4所选择的评价指标生成一份最终的统计结果报告,统计结果报告中包含所选择的评价指标具体得分和最终总得分,通过统计结果报告可以对漏洞挖掘方法实现定量的评价以及对不同的漏洞挖掘方法进行对比评价。
步骤4,基于漏洞挖掘测试过程模型设计并实现一个集成测试平台,进一步验证漏洞测试模型的可行性和有效性。
上述步骤4中,实现集成测试平台并验证漏洞测试模型的可行性和有效性具体步骤如下:
步骤4.1,基于漏洞挖掘测试过程模型设计并实现一个漏洞挖掘方法集成测试平台VMATP(Vulnerability Mining Approach Testing Platform),平台主界面如图9所示。所述测试平台主界面包括12个部分:测试类型,测试对象,语言,测试用例集平台,方法/工具,脆弱性类型,子类型,测试用例,行为,信息,评价细则及报告等。测试类型:选择测试类型为静态测试或者动态测试,不同的测试对应着不同的测试方法和测试用例的选择;测试对象:可选择对单个测试用例测试,选择测试用例集进行批处理,还可以选择正是源代码程序;测试用例:针对不同的环境配置选择不同类型的漏洞类型,每个子类型对应了CWE编号;行为:配置完挖掘环境和测试用例后,选择执行漏洞挖掘或进行重置操作;信息:对漏洞挖掘测试方法执行状态进行实时监控,通过对挖掘状态的监测分析输出测试分析报告。评价细则:可选择误报率、准确率、时间代价、资源开销、利用效果这五个评价指标的定量计算;报告:程序执行结束之后,可以根据所选择的评价指标输出具体的评价结果和最终的评价得分。
步骤4.2,针对不同的测试方法类型以及不同语言下的测试工具和方法,选取相对应的测试用例进行对比实验,记录下测试结果。这边分别添加了11个Java漏洞测试用例集,11个测试用例集的信息如表2所示。我们分别把针对Java语言的测试工具findbugs、PMD和findsecbugs进行了对比实验。
步骤4.3,根据测试结果,针对不同的测试工具绘制实验对比结果的表格,其中数据包括工具名,测试用例集,实际漏洞数,发现漏洞数,假阳性数据和检测出的正确的漏洞数等,如表6、7、8所示。从表中可以看出findsecbugs在三种方法中表现最好,findbugs次之,而PMD较差。造成该现象的原因有一部分与测试用例集的选择有关,但从总体上看,基于java字节码分析的findsecbugs漏洞挖掘能力最强,能寻找出较多的缺陷或者潜在的性能问题。其次是findbugs和PMD。根据表6、7、8的数据,我们可以计算出每种工具在不同的测试用例下的检测能力并绘制检测能力对比柱状图,检测能力即检测出的正确的漏洞数除以实际漏洞数,如图10所示。从这些表和图10中可以看出findsecbugs的检测能力最强,但其假阳性漏洞数也最高。其次是findbugs,具有一定的检测能力,也有假阳性数。此外PMD无法检测出任何漏洞,可能是PMD的检测规则无法适用给定的测试用例集。表6findbugs测试结果
表7PMD测试结果
表8findsecbugs测试结果
以上所述仅用于清楚表述本发明具体实施例,并不用于限定保护范围,在不违背本发明实质内容和精神前提下,所作任何修改、润饰等都将落入本发明保护范围内。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示意性实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。

Claims (8)

1.一种漏洞挖掘技术测试模型及测试方法,其特征在于,包括如下步骤:
步骤1,基于现有静态和动态漏洞挖掘方法,构建自适应的漏洞挖掘运行环境;
步骤2,根据不同的漏洞类型、漏洞语言及漏洞触发方式,构建并配置测试用例集;
步骤3,执行漏洞挖掘测试方法,并监控挖掘测试状态,同时输出测试分析报告和统计测试结果;
步骤4,基于漏洞挖掘测试过程模型设计并实现一个集成测试平台,进一步验证漏洞测试模型的可行性和有效性。
2.根据权利要求1所述的一种漏洞挖掘技术测试模型及测试方法,其特征在于,所述步骤1的具体实现包括如下步骤:
步骤1.1,选择确定所需要配置的测试方法类型为静态测试方法或者动态测试方法;
步骤1.2,对应静态测试方法,选择配置语言类型为C++/C或者Java;对应动态测试方法,选择配置运行平台为Windows或者Linux;
步骤1.3,对应静态测试方法的Java语言,选择配置漏洞挖掘方法包括有FindBugs、FindSecBugs、PMD一些方法;对应静态测试方法的C++/C语言,选择配置漏洞挖掘方法包括有FlawFinder、SPLINT、CppCheck一些方法;对应动态测试方法,选择配置漏洞挖掘方法有MiniFuzz、WinAfl、PinTool一些方法;
步骤1.4,选择在测试结果报告中输出的评价指标,包括误报率,准确率,时间代价,资源开销,利用效果这五个指标。
3.根据权利要求1所述的一种漏洞挖掘技术测试模型及测试方法,其特征在于,所述步骤2的具体实现包括如下步骤:
步骤2.1,以漏洞挖掘方法评估为目标,设计一个具备有源代码软件、无源代码软件的测试集框架,为了方便测试评估,测试集框架中每个测试用例属性需要包括输入类型、运行平台、漏洞类型、漏洞触发条件、漏洞发生位置范围信息;
步骤2.2,配置静态测试用例集,针对Java测试平台,基于一些开源的漏洞代码网站,收集抓取Java漏洞测试用例集;针对C++/C测试平台,同样基于一些开源的漏洞代码网站,收集抓取C++/C漏洞测试用例集;由于静态测试用例样本完全独立并且满足漏洞测试集框架,按照漏洞分类信息直接将其加入测试集中;此外,由于Java和C++/C测试用例在测试用例集样本大小的不足,还需要收集一些公开漏洞的开源软件进行弥补,尝试将开源代码剥离出来并按照框架改写测试用例,按照漏洞类型将其加入测试集,最后将每个测试用例映射到该漏洞对应的CWE编号;
步骤2.3,配置动态测试用例集,由于动态漏洞挖掘需要基于二进制可执行文件在程序执行的过程中发现程序的异常,因此需要对测试集进行扩展;通过对静态测试用例集代码进行修改编译生成待测试的二进制文件,进而形成二进制文件的测试用例集并按照漏洞分类信息将其加入测试集;
步骤2.4,测试集收集和扩展完成后,为了方便管理平台使用,利用数据库对构造的漏洞方法测试集进行索引、整理。
4.根据权利要求1所述的一种漏洞挖掘技术测试模型及测试方法,其特征在于,所述步骤3的具体实现包括如下步骤:
步骤3.1,根据步骤1中构建好的漏洞挖掘运行环境以及步骤2中配置好的测试用例集,选择测试对象是单个测试用例,或是测试用例集,或是真实源代码程序,执行漏洞挖掘测试方法;
步骤3.2,对漏洞挖掘测试方法执行状态进行实时监控,通过对挖掘状态的监测分析输出测试分析报告,测试分析报告中包括所配置挖掘方法的版本信息,测试对象的文件位置及文件名,其中对于静态测试方法还包含了发现的漏洞数,代码行数,漏洞危险级别以及执行时间这些信息,对于动态测试方法还包含了是否检测到异常,异常信息,导致异常或者崩溃的测试集以及寄存器信息这些信息;
步骤3.3,针对测试分析报告的结果分别计算误报率、准确率、时间代价、资源开销、利用效果这五个评价指标的得分以及最终的总得分;
步骤3.4,根据步骤1.4所选择的评价指标生成一份最终的统计结果报告,用以对漏洞挖掘方法实现定量的评价以及对不同的漏洞挖掘方法进行对比评价。
5.根据权利要求1所述的一种漏洞挖掘技术测试模型及测试方法,其特征在于,所述步骤4的具体实现包括如下步骤:
步骤4.1,基于漏洞挖掘测试过程模型设计并实现一个漏洞挖掘方法集成测试平台VMATP,所述测试平台主界面包括12个部分:测试类型,测试对象,语言,测试用例集平台,方法/工具,脆弱性类型,子类型,测试用例,行为,信息,评价细则及报告;
步骤4.2,针对不同的测试方法类型以及不同语言下的测试工具和方法,选取相对应的测试用例进行对比实验,记录下测试结果;
步骤4.3,根据测试结果,针对不同的测试工具绘制实验对比结果的表格,其中数据包括工具名,测试用例集,实际漏洞数,发现漏洞数,假阳性数和检测出的正确的漏洞数,根据实验对比结果计算出每种工具在不同的测试用例下的检测能力绘制检测能力对比柱状图,检测能力即检测出的正确的漏洞数除以实际漏洞数。
6.根据权利要求3所述的一种漏洞挖掘技术测试模型及测试方法,其特征在于,所述步骤2.1中,有源代码软件主要包含关键数据代码和逻辑分析代码,关键数据代码指漏洞触发相关的变量、常量数据的代码;逻辑分析处理代码指对关键数据进行分析、处理的代码;所述无源代码软件首先读取输入数据,然后对输入信息进行提取,将进行数据处理,在提取和处理过程时可能执行漏洞代码。
7.根据权利要求4所述的一种漏洞挖掘技术测试模型及测试方法,其特征在于,所述步骤3.3中,
误报率的计算通过公式:检测出的错误漏洞数量/检测出的总漏洞数量;
准确率的计算通过公式:检测出的正确的漏洞数量/存在的总的漏洞数量;
时间代价的计算通过公式:(挖掘方法执行结束时间-开始时间)/挖掘方法所用的最大时间;
资源开销的计算通过公式:内存占用率*50%+CPU占用率*50%;
利用效果的计算通过公式:(实际漏洞CVSS总分/个数)/10;
最终得分的计算通过公式:{(1-误报率)*30%+准确率*30%+(1-时间代价)*10%+(1-资源开销)*10%+利用效果*20%}/选择指标权重和。
8.根据权利要求5所述的一种漏洞挖掘技术测试模型及测试方法,其特征在于,所述步骤4.1中,
测试类型:选择测试类型为静态测试或者动态测试,不同的测试对应着不同的测试方法和测试用例的选择;测试对象:可选择对单个测试用例测试,选择测试用例集进行批处理,还可以选择正是源代码程序;测试用例:针对不同的环境配置选择不同类型的漏洞类型,每个子类型对应了CWE编号;行为:配置完挖掘环境和测试用例后,选择执行漏洞挖掘或进行重置操作;信息:对漏洞挖掘测试方法执行状态进行实时监控,通过对挖掘状态的监测分析输出测试分析报告;评价细则:可选择误报率、准确率、时间代价、资源开销、利用效果这五个评价指标的定量计算;报告:程序执行结束之后,可以根据所选择的评价指标输出具体的评价结果和最终的评价得分。
CN201710609538.6A 2017-07-25 2017-07-25 一种漏洞挖掘技术测试模型的测试方法 Active CN107368417B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710609538.6A CN107368417B (zh) 2017-07-25 2017-07-25 一种漏洞挖掘技术测试模型的测试方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710609538.6A CN107368417B (zh) 2017-07-25 2017-07-25 一种漏洞挖掘技术测试模型的测试方法

Publications (2)

Publication Number Publication Date
CN107368417A true CN107368417A (zh) 2017-11-21
CN107368417B CN107368417B (zh) 2020-10-23

Family

ID=60307606

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710609538.6A Active CN107368417B (zh) 2017-07-25 2017-07-25 一种漏洞挖掘技术测试模型的测试方法

Country Status (1)

Country Link
CN (1) CN107368417B (zh)

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108197476A (zh) * 2017-12-27 2018-06-22 中国信息通信研究院 一种智能终端设备的漏洞检测方法及装置
CN108512859A (zh) * 2018-04-16 2018-09-07 贵州大学 一种Web应用安全漏洞挖掘方法和装置
CN109086606A (zh) * 2018-07-16 2018-12-25 腾讯科技(深圳)有限公司 一种程序漏洞挖掘方法、装置、终端及存储介质
CN109992503A (zh) * 2019-01-25 2019-07-09 北京丁牛科技有限公司 自动化测试方法及装置
CN110162977A (zh) * 2019-04-24 2019-08-23 北京邮电大学 一种Android车载终端系统漏洞检测系统及方法
CN110196815A (zh) * 2019-07-26 2019-09-03 中国人民解放军国防科技大学 一种软件模糊测试方法
CN110221978A (zh) * 2019-06-03 2019-09-10 北京丁牛科技有限公司 测试用例生成方法及装置
CN110365678A (zh) * 2019-07-15 2019-10-22 北京工业大学 一种基于反样本的工控网络协议漏洞挖掘方法
CN111222138A (zh) * 2019-12-31 2020-06-02 阿尔法云计算(深圳)有限公司 算法校验方法、算法确权方法及装置
CN111259402A (zh) * 2018-12-03 2020-06-09 中国信息通信研究院 一种漏洞挖掘方法和装置
CN111428247A (zh) * 2020-04-23 2020-07-17 南京大学 一种对计算机漏洞库进行改进的方法
CN111523121A (zh) * 2019-12-24 2020-08-11 国网天津市电力公司 一种指引二进制漏洞挖掘路径的方法及其应用
CN111695119A (zh) * 2020-05-13 2020-09-22 国家电网有限公司 一种基于细粒度静态污点分析与符号执行的web漏洞检测方法
CN112257077A (zh) * 2020-11-11 2021-01-22 福建奇点时空数字科技有限公司 一种基于深度学习的自动化漏洞挖掘方法
CN112668025A (zh) * 2020-12-30 2021-04-16 北京永信至诚科技股份有限公司 一种漏洞挖掘管理方法、系统、设备及可读存储介质
CN113221108A (zh) * 2021-05-28 2021-08-06 西安热工研究院有限公司 一种工控系统漏洞扫描工具综合评价方法
CN114896606A (zh) * 2022-07-13 2022-08-12 苏州知微安全科技有限公司 一种基于静态表达的漏洞数据动态处理方法及装置
CN117574393A (zh) * 2024-01-16 2024-02-20 国网浙江省电力有限公司 一种信息终端漏洞挖掘方法、装置、设备及存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101814053B (zh) * 2010-03-29 2013-03-13 中国人民解放军信息工程大学 一种基于功能模型的二进制代码漏洞发现方法
CN102360334B (zh) * 2011-10-17 2015-04-15 中国人民解放军信息工程大学 一种动静态结合的软件安全性测试方法
CN102622558B (zh) * 2012-03-01 2014-10-08 北京邮电大学 一种二进制程序漏洞的挖掘装置和方法
CN103389939B (zh) * 2013-07-03 2015-11-25 清华大学 一种针对堆可控分配漏洞的检测方法及系统
CN106656657A (zh) * 2016-11-11 2017-05-10 北京匡恩网络科技有限责任公司 基于工控协议的自适应漏洞挖掘框架

Cited By (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108197476A (zh) * 2017-12-27 2018-06-22 中国信息通信研究院 一种智能终端设备的漏洞检测方法及装置
CN108197476B (zh) * 2017-12-27 2020-12-08 中国信息通信研究院 一种智能终端设备的漏洞检测方法及装置
CN108512859A (zh) * 2018-04-16 2018-09-07 贵州大学 一种Web应用安全漏洞挖掘方法和装置
CN109086606A (zh) * 2018-07-16 2018-12-25 腾讯科技(深圳)有限公司 一种程序漏洞挖掘方法、装置、终端及存储介质
CN111259402A (zh) * 2018-12-03 2020-06-09 中国信息通信研究院 一种漏洞挖掘方法和装置
CN109992503A (zh) * 2019-01-25 2019-07-09 北京丁牛科技有限公司 自动化测试方法及装置
CN109992503B (zh) * 2019-01-25 2022-10-11 北京丁牛科技有限公司 自动化测试方法及装置
CN110162977A (zh) * 2019-04-24 2019-08-23 北京邮电大学 一种Android车载终端系统漏洞检测系统及方法
CN110221978A (zh) * 2019-06-03 2019-09-10 北京丁牛科技有限公司 测试用例生成方法及装置
CN110365678A (zh) * 2019-07-15 2019-10-22 北京工业大学 一种基于反样本的工控网络协议漏洞挖掘方法
CN110196815A (zh) * 2019-07-26 2019-09-03 中国人民解放军国防科技大学 一种软件模糊测试方法
CN110196815B (zh) * 2019-07-26 2019-11-01 中国人民解放军国防科技大学 一种软件模糊测试方法
CN111523121A (zh) * 2019-12-24 2020-08-11 国网天津市电力公司 一种指引二进制漏洞挖掘路径的方法及其应用
CN111523121B (zh) * 2019-12-24 2023-08-29 国网天津市电力公司 一种指引二进制漏洞挖掘路径的方法及其应用
CN111222138A (zh) * 2019-12-31 2020-06-02 阿尔法云计算(深圳)有限公司 算法校验方法、算法确权方法及装置
CN111428247B (zh) * 2020-04-23 2023-04-04 南京大学 一种对计算机漏洞库进行改进的方法
CN111428247A (zh) * 2020-04-23 2020-07-17 南京大学 一种对计算机漏洞库进行改进的方法
CN111695119A (zh) * 2020-05-13 2020-09-22 国家电网有限公司 一种基于细粒度静态污点分析与符号执行的web漏洞检测方法
CN111695119B (zh) * 2020-05-13 2023-08-01 国家电网有限公司 一种基于细粒度静态污点分析与符号执行的web漏洞检测方法
CN112257077A (zh) * 2020-11-11 2021-01-22 福建奇点时空数字科技有限公司 一种基于深度学习的自动化漏洞挖掘方法
CN112668025A (zh) * 2020-12-30 2021-04-16 北京永信至诚科技股份有限公司 一种漏洞挖掘管理方法、系统、设备及可读存储介质
CN113221108A (zh) * 2021-05-28 2021-08-06 西安热工研究院有限公司 一种工控系统漏洞扫描工具综合评价方法
CN113221108B (zh) * 2021-05-28 2023-02-07 西安热工研究院有限公司 一种工控系统漏洞扫描工具综合评价方法
CN114896606A (zh) * 2022-07-13 2022-08-12 苏州知微安全科技有限公司 一种基于静态表达的漏洞数据动态处理方法及装置
CN114896606B (zh) * 2022-07-13 2022-11-01 苏州知微安全科技有限公司 一种基于静态表达的漏洞数据动态处理方法及装置
CN117574393A (zh) * 2024-01-16 2024-02-20 国网浙江省电力有限公司 一种信息终端漏洞挖掘方法、装置、设备及存储介质
CN117574393B (zh) * 2024-01-16 2024-03-29 国网浙江省电力有限公司 一种信息终端漏洞挖掘方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN107368417B (zh) 2020-10-23

Similar Documents

Publication Publication Date Title
CN107368417A (zh) 一种漏洞挖掘技术测试模型及测试方法
CN104077531B (zh) 基于开放漏洞评估语言的系统漏洞评估方法、装置和系统
CN103984900B (zh) Android应用漏洞检测方法及系统
CN104715195B (zh) 基于动态插桩的恶意代码检测系统及方法
CN102468985B (zh) 针对网络安全设备进行渗透测试的方法和系统
CN110266669A (zh) 一种Java Web框架漏洞攻击通用检测与定位的方法及系统
Jimenez et al. Vulnerability prediction models: A case study on the linux kernel
Jiang et al. Pdiff: Semantic-based patch presence testing for downstream kernels
CN109583200A (zh) 一种基于动态污点传播的程序异常分析方法
Fontana et al. Impact of refactoring on quality code evaluation
CN104520871A (zh) 漏洞矢量信息分析
CN103699844B (zh) 安全保护系统及方法
US20180114026A1 (en) Method and system automatic buffer overflow warning inspection and bug repair
CN112182588A (zh) 基于威胁情报的操作系统漏洞分析检测方法及系统
CN113158197B (zh) 一种基于主动iast的sql注入漏洞检测方法、系统
CN106570399A (zh) 一种跨App组件间隐私泄露的检测方法
CN110414222A (zh) 一种基于组件关联的应用隐私泄露问题检测方法和装置
Kashyap et al. Automated customized bug-benchmark generation
CN113158251B (zh) 应用程序隐私泄露检测方法、系统、终端及介质
CN107563205A (zh) 典型智能设备漏洞检测方法及渗透装置
CN107169360A (zh) 一种源代码安全漏洞的检测方法及系统
CN110290114A (zh) 一种基于预警信息的漏洞自动化防护方法及系统
Sultana et al. Correlation analysis among java nano-patterns and software vulnerabilities
Autili et al. Software engineering techniques for statically analyzing mobile apps: research trends, characteristics, and potential for industrial adoption
CN111611590B (zh) 涉及应用程序的数据安全的方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant