CN112181833B - 一种智能化模糊测试方法、装置及系统 - Google Patents
一种智能化模糊测试方法、装置及系统 Download PDFInfo
- Publication number
- CN112181833B CN112181833B CN202011046778.8A CN202011046778A CN112181833B CN 112181833 B CN112181833 B CN 112181833B CN 202011046778 A CN202011046778 A CN 202011046778A CN 112181833 B CN112181833 B CN 112181833B
- Authority
- CN
- China
- Prior art keywords
- test
- test case
- execution
- data
- path
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/3668—Testing of software
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/3668—Testing of software
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种智能化模糊测试方法、装置及系统,涉及计算机技术领域,所述方法包括:通过符号执行将被测目标的输入变量转换为符号化表达式;对多路输入变量的所述符号化表达式进行执行路径约束;根据约束后的执行路径生成测试用例;执行所述测试用例,并获取所述测试用例的执行状态及测试数据。本发明实施例能够解决现有模糊测试存在检测效率低下的问题。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种智能化模糊测试方法、装置及系统。
背景技术
由于电力系统中设计漏洞和软件漏洞的存在,从信息侧实施的针对电力信息物理系统(电力CPS)的恶意攻击很有可能突破防护措施,引起更大规模的扰动和故障。因此,发掘当前电力CPS的协议及系统的漏洞,对于电力CPS的防护是极为必要的。
当前物联网的安全漏洞检测手段已趋于成熟,其中的各项技术同样也可用于电力CPS的漏洞检测中,其漏洞检测技术主要分为静态分析和动态分析,静态分析的对象主要是目标源代码;动态分析的对象主要是可执行的二进制文件,其中,动态二进制分析方案主要采用模糊测试,模糊测试的原理是将大量的畸形数据输入到目标程序中,通过监测被测程序的异常来发现被测程序中可能存在的安全漏洞,它是一个典型的自动或半自动的过程。
传统的模糊测试虽能检测出程序漏洞,但是目前在电力物联网方面基于模糊测试的漏洞挖掘,均属于黑箱测试,即监视协议服务器端和客户端的测试过程和返回结果,该过程会产生大量无效样本,且该方法并没有搜集任何程序在处理输入过程中内部的执行控制流和数据流信息,造成代码覆盖率低。较低的代码覆盖率和大量的无效样本会导致测试效率低下。
发明内容
有鉴于此,本发明实施例提供了一种智能化模糊测试方法、装置及系统,以解决现有模糊测试存在检测效率低下的问题。
根据第一方面,本发明实施例提供了一种智能化模糊测试方法,所述方法包括:通过符号执行将被测目标的输入变量转换为符号化表达式;对多路输入变量的所述符号化表达式进行执行路径约束;根据约束后的执行路径生成测试用例;执行所述测试用例,并获取所述测试用例的执行状态及测试数据。
可选地,所述通过符号执行将被测目标的输入变量转换为符号化表达式,包括:利用S2E平台记录被测目标的软件内部污点数据流和程序指令控制流,获取输入污点变量;通过符号执行得到执行路径上的输入污点变量的符号化表达式。
可选地,所述对多路输入变量的所述符号化表达式进行执行路径约束,包括:根据多路输入变量的所述符号化表达式生成畸形化约束条件;根据所述畸形化约束条件,对输入污点变量进行路径约束求解,得到指定代码路径。
可选地,所述智能化模糊测试方法还包括:利用测试用例知识库提供测试用例模板,基于所述测试用例模板生成测试用例,所述测试用例知识库包括畸变数据库和测试用例模板库;所述畸变数据库用于提供畸变数据,从而生成畸形化约束条件;所述测试用例模板库用于提供测试用例模板,从而生成测试用例。
可选地,所述智能化模糊测试方法还包括:在测试用例的执行过程中,采用漏洞检测算法对安全漏洞进行检测,进行检测的过程包括:检测在测试用例执行过程中,被释放的堆内存指针是否被重用;如果被释放的堆内存指针被重用,则判定存在安全漏洞。
可选地,检测被释放的堆内存指针是否被重用之前,所述方法还包括:拦截堆管理API,监控堆内存的分配和释放;跟踪指针的传播,匹配指针和所述堆内存的映射关系;在堆内存被释放时把与所述堆内存对应的所有指针清零置空。
根据第二方面,本发明实施例提供了一种智能化模糊测试装置,所述装置包括:变量处理模块,用于通过符号执行将被测目标的输入变量转换为符号化表达式;路径约束模块,用于根据所述符号化表达式对所述被测目标的执行路径进行路径约束;测试用例生成模块,用于根据约束后的执行路径生成测试用例;综合处理模块,用于执行所述测试用例,并获取所述测试用例的执行状态及测试数据。
根据第三方面,本发明实施例提供了一种智能化模糊测试系统,所述系统包括:综合管理分系统,用于根据被测目标建立模糊测试任务;测试用例知识库,用于提供畸变数据和测试用例模板;测试用例生成分系统,用于根据所述测试用例模板生成测试用例,所述测试用例生成分系统包括:变量处理模块,用于通过符号执行将被测目标的输入变量转换为符号化表达式;路径约束模块,用于根据所述符号化表达式对所述被测目标的执行路径进行路径约束;测试用例生成模块,用于根据约束后的执行路径生成测试用例;综合处理模块,用于执行所述测试用例,并获取所述测试用例的执行状态及测试数据;模糊测试引擎,用于解析测试用例,并利用S2E选择性符号执行平台执行解析后的测试用例;测试管控分系统,用于对所述测试用例的执行过程进行管控,获取所述测试用例的执行状态及测试数据;异常验证分系统,用于分析测试数据中的软件异常,分析异常触发机理;基础服务平台,用于创建虚拟机集群,利用物理机资源执行所述模糊测试任务。
根据第四方面,本发明实施例提供了一种电子设备,包括:存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行第一方面以及第一方面任一实施例的智能化模糊测试方法。
根据第五方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机执行第一方面以及第一方面任一实施例的智能化模糊测试方法。
本发明实施例至少存在以下优点:
本实施例利用符号执行将被测目标的输入变量转换为符号化表达式,再进行约束条件求解,指定测试代码的执行路径,采用基于路径约束的策略指导生成测试用例,能够避免符号执行过程中发生路径爆炸,减少需要符号化的数据,提高代码覆盖率,从而提高漏洞检测效率。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本发明实施例提供的一种智能化模糊测试方法流程图;
图2是根据本发明实施例的测试用例生成过程流程图;
图3是根据本发明实施例的S2E架构图;
图4是根据本发明实施例将电力系统通信协议抽象为协议结构的过程示意图;
图5是根据本发明实施例的一种智能化模糊测试装置结构示意图;
图6是根据本发明实施例的一种智能化模糊测试系统架构图;
图7是本发明实施例提供的S2E插件的示例分布架构图;
图8是本发明实施例提供的基础服务平台的物理机架构图。
图9是本发明实施例提供的电子设备的硬件结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
所谓符号执行,即是用符号值代替真实值执行,是一种重要的形式化方法和软件分析技术,其主要平台是Selective Symbolic Execution,S2E平台,通过使用符号执行技术,将程序中变量的值表示为符号值和常量组成的计算表达式,程序计算的输出被表示为输入符号值的函数,其在软件测试和程序验证中发挥着重要作用。基于此,本实施例提供一种智能化模糊测试方法,该方法采用符号执行来进行模糊测试,具体的方法包括根据被测目标软件建立测试任务、根据被测目标的数据类型或协议来选择测试用例生成模板、根据测试用例生成模板生成测试用例、执行该测试用例并对测试用例的执行过程进行数据管控。
其中,由于当前的软件都具有很大的代码量,在进行模糊测试时,相应的执行路径以及状态数量会呈指数型的增长,为了避免符号执行过程中发生路径爆炸,减少需要符号化的数据,参考图1所示,本实施例的智能化模糊测试方法包括以下步骤:
步骤S1:通过符号执行将被测目标的输入变量转换为符号化表达式;
具体地,例如是可利用S2E平台记录被测目标的软件内部污点数据流和程序指令控制流,获取输入污点变量;通过符号执行得到执行路径上的输入污点变量的符号化表达式。
其中,对污点数据流的记录可以表示为记录被测目标的软件的程序执行路径的详细信息(如寄存器、内存、变量、指令等),使用符号执行和向前污点传播技术对该执行轨迹中的敏感路径信息和敏感数据的传播信息进行收集,根据敏感数据的传播信息获取污点变量。
该步骤通过多被测目标的输入变量进行符号化计算,并通过记录被测目标的软件内部污点数据流和程序指令控制流,来提高漏洞检测的效率。
步骤S2:对多路输入变量的符号化表达式进行执行路径约束;
获取多路步骤S1中转换为符号表达式的输入变量,根据多路输入变量的符号化表达式生成畸形化约束条件;根据畸形化约束条件,对输入污点变量进行路径约束求解,得到指定代码路径。即通过对多条执行路径进行畸形化约束,使其按照指定的代码路径去执行测试用例生成任务,也就是采用基于污点变量约束求解的策略指导测试用例的生成,能够减少需要符号化的数据,避免发生路径爆炸。
步骤S3:根据约束后的执行路径生成测试用例;
具体地,测试用例的生成需要根据测试用例模板来实现,本实施例利用测试用例知识库提供测试用例模板,基于测试用例模板生成测试用例,测试用例知识库包括畸变数据库和测试用例模板库;畸变数据库用于提供畸变数据,从而生成畸形化约束条件;测试用例模板库用于提供测试用例模板,从而生成测试用例。
在实际应用中,测试人员可以根据被测目标输入数据格式或者协议的不同,选择生成不同的模板,并通过XML格式的脚本样式定义软件测试的状态模型、数据模型及不同的畸变库并配置对应的生成策略来自动生成批量的测试用例。针对数据格式的测试用例包含文件输入和数据包输入两个大类,其中文件输入模板包含doc、xls、ppt、pdf、jpg、png、wmv、MP3等常见文档、视频、图像文件的格式,针对网络协议类测试用例的输入模板支持UDP、TCP、HTTPS、FTP、SMTP/POP3、DNS主流的通信协议。根据每种测试模板对应的畸变库所包含的畸变方式,并配置与该畸变方式对应的测试用例生成策略来自动生成批量的测试用例。
可选地,还可以根据基于变异的测试用例生成策略或基于生成的测试用例生成策略或基于自反馈的测试用例生成策略生成测试用例,或者上述基于变异的测试用例生成策略、基于生成的测试用例生成策略、基于自反馈的测试用例生成策略其中的两两组合,或同时利用三者来生成测试用例。基于变异的测试用例生成策略是根据已知数据样本通过变异的方法生成新的测试用例;基于生成的测试用例生成策略是根据已知的协议或接口规范进行建模,从而生成测试用例;基于自反馈的测试用例生成策略是指利用测试过程的指令执行路径信息,使用遗传算法优化输入数据的生成,使其尽可能覆盖真个程序。
详细的测试用例生成过程参考图2,由S2E平台对符号执行的结果进行路径约束求解,得到指定执行路径,按照指定执行路径,利用测试用例模板自动生成多个测试用例,也就是根据基于污点变量约束求解的策略指导测试用例的生成。可选地,也可以由基于变异、基于生成和基于自反馈的测试用例生成策略生成测试用例,再将测试用例输入S2E平台构建的QEMU测试环境中执行。
步骤S4:执行测试用例,并获取测试用例的执行状态及测试数据。
测试用例生成之后,需要对测试用例的内容进行解析,并设置相关测试参数,再将解析后的测试用例发送到S2E构建的Qemu测试环境中执行,其中,S2E架构如图3所示,S2E平台使用了QEMU虚拟机、符号执行引擎KLEE,以及LLVM符号链进行符号数据访问,通过S2E选择接口和S2E分析接口进行数据连接,采用插件的形式来指定目标代码和对目标代码进行分析。具体地,被测目标应用程序运行在QEMU虚拟机中,通过调用库函数,利用操作系统内核进行驱动,并通过动态二进制翻译器对被测试程序进行动态二进制翻译,对翻译好的TCG中间语言进行执行,包括具体模式和符号模式,执行具体模式时,将TCG中间语言转换成主机器码,并利用主机CPU执行具体模式数据;执行符号模式时,将TCG中间语言转换成LLVM字节码,并利用KLEE符号执行引擎执行符号数据;同时,通过将QEMU和KLEE执行引擎中的读写操作重定向到共用的虚拟机内存状态、虚拟CPU状态以及虚拟设备的状态,来实现状态的共享,使得S2E可以在具体执行和符号执行间进行数据转换,并且为不同执行路径提供不同的状态备份。
以挖掘电力系统通信协议漏洞为实例,模糊测试对象为:电力工控系统及终端中的通信协议解析模块,目的是测试被测对象对电力系统通信协议的实现是否存在漏洞,其挖掘过程如下:
将电力系统通信协议抽象为协议结构,如图4所示,描述协议结构识别的过程主要包括:采用类型匹配,提取本地历史网络流量中的不同网络流量数据文件(PCAP)中同类型的报文序列,并将其作为一个报文组;多序列比对报文组合,并分离不变域和可变域,以初步划分报文域;报文区域识别,进一步得到ANSII字符串域,从而生成较准确的报文格式和测试数据,利用模糊测试工具以及较准确的报文格式和测试数据对被测目标进行模糊测试。具体地,测试人员根据上述抽象出的协议结构描述,来选择相应的数据模板,并通过XML风格的脚本样式定义软件测试的状态模型、数据模型及不同的畸变库并配置不同的生成策略来自动生成批量的测试用例,并执行上述测试用例。
另外,在测试用例的执行过程中,本实施例提供一种内存释放重用漏洞、整数溢出漏洞、缓存区溢出漏洞等常见漏洞类型的检测算法,具体的采用漏洞检测算法对安全漏洞进行检测的过程包括:
检测在测试用例执行过程中,被释放的堆内存指针是否被重用,如果被释放的堆内存指针被重用,则判定存在安全漏洞,从而检测出可能存在的安全漏洞。
以内存释放重用漏洞为例,检测方法包括:对堆管理API进行拦截,监控堆内存的分配和释放;跟踪指针的传播,匹配指针和所述堆内存的映射关系;在堆内存被释放时把与堆内存对应的所有指针清零置空,如果在测试用例执行过程中,发生被释放的堆内存指针即悬浮指针重用的情况,则表明当前测试用例能够触发安全漏洞。
本实施例利用符号执行将被测目标的输入变量转换为符号化表达式,再进行约束条件求解,指定测试代码的执行路径,采用基于路径约束的策略指导生成测试用例,能够避免符号执行过程中发生路径爆炸,减少需要符号化的数据,提高代码覆盖率。
进一步地,本实施例提供一种智能化模糊测试装置,参考图5,该装置包括:
变量处理模块01,用于通过符号执行将被测目标的输入变量转换为符号化表达式;此模块执行上述实施例中的步骤S1所描述的方法,在此不再赘述。
路径约束模块02,用于根据所述符号化表达式对所述被测目标的执行路径进行路径约束;此模块执行上述实施例中的步骤S2所描述的方法,在此不再赘述。
测试用例生成模块03,用于根据约束后的执行路径生成测试用例;此模块执行上述实施例中的步骤S3所描述的方法,在此不再赘述。
综合处理模块04,用于执行所述测试用例,并获取所述测试用例的执行状态及测试数据,此模块执行上述实施例中的步骤S4所描述的方法,在此不再赘述。
需要说明的是,该综合处理模块包括下述实施例智能化模糊测试系统中的利用S2E构建的Qemu测试环境执行测试用例,以及测试管控分系统,用于获取所述测试用例的执行状态及测试数据。
本实施例利用符号执行将被测目标的输入变量转换为符号化表达式,再进行约束条件求解,指定测试代码的执行路径,采用基于路径约束的策略指导生成测试用例,能够避免符号执行过程中发生路径爆炸,减少需要符号化的数据,提高代码覆盖率。
进一步地,本实施例提供一种智能化模糊测试系统,参考图6,该系统包括:综合管理分系统05、测试用例知识库06、测试用例生成分系统07、模糊测试引擎08、测试管控分系统09、异常验证分系统10和基础服务平台11。
具体地,综合管理分系统05,用于根据被测目标建立模糊测试任务,综合管理分系统05包括测试管理模块12、配置管理模块13、运行管理模块14、用户管理模块15、知识库管理模块16和日志管理模块17,
上述测试管理模块12,用于管理模糊测试任务,建立测试任务,为测试任务分配内存、存储或CPU系统资源;
配置管理模块13,用于配置测试用例生成分系统,根据被测目标的特点,指定模糊测试的测试用例生成策略,配置模糊测试引擎来完成测试工作;
运行管理模块14,用于调度模糊测试任务,对正在运行的模糊测试的虚拟机进行暂停、挂起、快照、重启等运行管理,同时接收和收集测试管控分系统的装备内部运行状态、细粒度的运行信息状态的收集和展示工作;
用户管理模块15,用于管理和注册、注销分配管理员和普通用户账号;
知识库管理模块16,用于管理测试数据、模板的存储,存储畸变数据和测试用例模块;
日志管理模块17,用于记录和处理任务执行过程中的系统运行信息,并向用户展示。
具体地,测试用例知识库06,用于提供畸变数据和测试用例模板,尽可能地降低测试用例的冗余,提高代码覆盖率,从而提升模糊测试的效率。知识库主要包括畸变数据库和测试用例模板库。畸变数据库主要包括对字符串类型、整型数据类型、布尔型、浮点型、目录索引等常见类型污点变量的畸变数据集合。测试用例模板库包含主流文档、图片、视频的文件模板,主要有doc、ppt、xls、jpg、png、wmv等格式,支持主流通信协议的数据包格式模板,主要有UDP、TCP、HTTPS、FTP、SMTP/POP3、DNS等常见TCP/IP协议,并可支持对格式未知的通信协议进行自定义模板开展测试,支持Bit、Byte级别的细粒度定义,并支持在自定义模板内用常见的字段类型和类似校验和计算等,并且计算方法可定制。
具体地,测试用例生成分系统07用于根据测试用例模板生成测试用例,测试用例生成分系统包括上述的变量处理模块01、路径约束模块02和测试用例生成模块03。测试人员可以根据测试对象输入数据格式或者协议的不同,选择生成不同的模板,并通过XML风格的脚本样式定义软件测试的状态模型、数据模型及不同的畸变库并配置不同的生成策略来自动生成批量的测试用例。采用选择性符号执行来记录被测试软件内部污点数据流传播和程序指令控制流,从而可以指导测试用例生成,进行智能化的模糊测试。
具体地,模糊测试引擎08用于接受测试用例生成分系统生成的测试用例,并解析测试用例,利用S2E选择性符号执行平台执行解析后的测试用例;模糊测试引擎主要包括测试用例接受模块18、描述解析模块19、测试用例发送模块20和测试数据采集模块21。
上述测试用例接受模块18用于接收相关测试用例;
描述解析模块19用于解析测试用例内容、设置相关测试参数;
测试用例发送模块20用于将解析后的测试用例发送到S2E构建的Qemu测试环境中执行;
测试数据采集模块21用于以插件的形式提供异常状态发生时执行路径、状态、相关内存访问以及代码块执行数据的记录功能。
具体地,测试管控分系统09,用于对测试用例的执行过程进行管控,并收集、监控被试装备的执行状态,实现细粒度的测试管控,测试管控分系统09包括软件状态监控模块22、软件状态记录模块23和异常捕获模块24。
上述软件状态监控模块22:采用设置WindowsMonitor、LinuxMonitor、OSMonitorInterface、RawMonitor、ModuleExecutionDetector、StateManager等S2E操作系统事件监视器插件实现对软件模块加载、卸载等运行状态进行监控。
软件状态记录模块23:采用TranslationBlockTracer、InstructionCounter等S2E分析器插件实现对软件执行期间各类路径信息、代码块地址、CPU寄存器信息等数据的记录。
异常捕获模块24:采用ModuleTracer、Interceptor插件获取测试过程中debug信息;采用ExecutionTracer插件以及定制化的Annotation插件来捕获异常。
参考图7,利用多个选择器插件执行测试程序,同时利用多个S2E分析器插件、通用分析器和Windows专用分析器实现对软件执行期间各类路径信息、代码块地址、CPU寄存器信息等数据的记录,并采用多个操作系统事件监视器插件对软件状态进行监控。
具体地,异常验证分系统10,用于分析测试数据中的软件异常,分析异常触发机理,验证模糊测试中所触发异常的可利用性。异常验证分系统能够提供支撑环境和工具,用于提高异常分析的能力和效率,异常验证分系统10包括异常环境加载模块25、静态分析模块26、动态分析模块27和异常调试辅助工具28。
上述异常加载模块通过Qemu虚拟机实现,分为两个过程,能够涵盖操作系统异常和软件异常,首先通过Qemu虚拟机加载操作系统,并恢复到异常之前的系统镜像,然后在操作系统中加载被测试软件,并将产生异常的测试用例数据发送给被测试软件,重现软件异常,能够捕获异常触发点的指令位置,包括当前的程序指令上下文、调用堆栈、寄存器信息等。
静态分析模块由S2E提供Execution Profiler、Coverage Generator、TracePrinter等静态分析工具组成,实现对测试过程中执行的指令序列Trace获取能力、页面错误、TLB丢失、缓存描述等信息的分析处理能力,并提供对相关代码块覆盖率的分析报告和生成异常测试用例。
动态分析模包含S2E的ModuleTracer、Interceptor插件,提供对测试过程中debug调试代码信息获取的能力,包括获取执行路径的关键分支、插装分析代码等,可辅助进行异常调试。
异常调试辅助工具集由OllyDbg、Windbg、Immunity Debugger、GDB等通用调试器组成,可以分析Windows、Linux等主流操作系统的软件异常或系统异常,同时包含IDA等主流反汇编工具支撑静态逆向软件异常发生的关键位置。
基础服务平台11,用于创建虚拟机集群,利用物理机资源执行所述模糊测试任务。本实施例提供的基础服务平台使用服务器集群和服务器虚拟化技术,集群技术连接许多服务器以提高计算能力,虚拟化技术在一个单独的机器上创建多样的、独立的服务器环境。集群中的节点不再是真实的物理机节点而是虚拟机节点,这种由虚拟机构造的集群称之为虚拟集群,由于没有与物理设备精密的耦合,或者说透明于物理节点的虚拟集群可以被更快速地灵活配置,更高效、充分地利用物理资源,从而降低管理和使用的成本。从而可以更有效的利用有限的计算、存储资源来进行密集型的模糊测试,同时采用集群虚拟化资源池,同一个主机可以同时充当客户端和服务器,可使得系统的硬件资源可以很方便的进行弹性扩展。
接入基础服务平台的物理机架构图如图8所示,每个物理机上都通过通用的libvirtAPI接口来完成创建、编辑、引导或停止虚拟机;查看并控制每个QEMU虚拟机的控制台;查看每部虚拟机的性能以及使用率;查看每部正在运行中的虚拟机以及主控端的即时性能及使用率信息;本机或远程皆可使用KVM、Xen、QEMU的功能。图8中Libvirtd是用于管理虚拟化平台的开源的API,后台程序和管理工具,它可以用于管理KVM、Xen、VMware ESX,QEMU和其他虚拟化技术。
另外,本实施例开发了web service管理接口,使得可以使用浏览器远程管理虚拟机集群上的虚拟机,不论虚拟机处在关机还是运行状态,都可以通过web浏览器方便的进行开机、关机、重启、以及就通过浏览器操作远程桌面,并且可以极为方便的进行批量化管理。
本系统采用云计算和虚拟化集群技术,实现目标软件及系统环境的快速测试、状态动态恢复、资源远程管理,从而构建一个基于多引擎的多粒度智能化模糊测试虚拟化集群,可以充分满足对IP类攻击装备的模糊测试。
本实施例还提供一种电子设备,电子设备包括存储器处理器,存储器和所述处理器之间互相通信连接,存储器中存储有计算机指令,处理器通过执行所述计算机指令,从而执行一种智能化模糊测试方法。其中,处理器和存储器可以通过总线或者其他方式连接,图9中以通过总线连接为例。
处理器可以为中央处理器(Central Processing Unit,CPU)。处理器还可以为其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。
存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本发明实施例中的智能化模糊测试方法对应的程序指令/模块。处理器通过运行存储在存储器中的非暂态软件程序、指令以及模块,从而执行处理器的各种功能应用以及数据处理,即实现上述方法实施例中的一种智能化模糊测试方法。
存储器可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
与上述实施例对应的,本实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,计算机指令用于使所述计算机执行智能化模糊测试方法。其中,存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)、随机存储记忆体(RandomAccessMemory,RAM)、快闪存储器(Flash Memory)、硬盘(Hard Disk Drive,缩写:HDD)或固态硬盘(Solid-State Drive,SSD)等;所述存储介质还可以包括上述种类的存储器的组合。
虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下作出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
Claims (7)
1.一种智能化模糊测试方法,其特征在于,所述方法包括:
通过符号执行将被测目标的输入变量转换为符号化表达式;
对多路输入变量的所述符号化表达式进行执行路径约束;
根据约束后的执行路径生成测试用例;
执行所述测试用例,并获取所述测试用例的执行状态及测试数据;
所述对多路输入变量的所述符号化表达式进行执行路径约束,包括:
根据多路输入变量的所述符号化表达式生成畸形化约束条件;
根据所述畸形化约束条件,对输入污点变量进行路径约束求解,得到指定代码路径;
所述通过符号执行将被测目标的输入变量转换为符号化表达式,包括:
利用S2E平台记录被测目标的软件内部污点数据流和程序指令控制流,获取输入污点变量;对污点数据流的记录表示为记录被测目标的软件的程序执行路径的详细信息,使用符号执行和向前污点传播技术对执行轨迹中的敏感路径信息和敏感数据的传播信息进行收集,根据敏感数据的传播信息获取输入污点变量;
通过符号执行得到执行路径上的输入污点变量的符号化表达式;
所述智能化模糊测试方法还包括:
利用测试用例知识库提供测试用例模板,基于所述测试用例模板生成测试用例,所述测试用例知识库包括畸变数据库和测试用例模板库;
所述畸变数据库用于提供畸变数据,从而生成畸形化约束条件;
所述测试用例模板库用于提供测试用例模板,从而生成测试用例;根据被测目标输入数据格式或者协议的不同,选择不同的模板,并通过XML格式的脚本样式定义软件测试的状态模型、数据模型及不同的畸变库并配置对应的生成策略来自动生成批量的测试用例。
2.如权利要求1所述的智能化模糊测试方法,其特征在于,所述智能化模糊测试方法还包括:
在测试用例的执行过程中,采用漏洞检测算法对安全漏洞进行检测,进行检测的过程包括:
检测在测试用例执行过程中,被释放的堆内存指针是否被重用;
如果被释放的堆内存指针被重用,则判定存在安全漏洞。
3.根据权利要求2所述的智能化模糊测试方法,其特征在于,检测被释放的堆内存指针是否被重用之前,所述方法还包括:
拦截堆管理API,监控堆内存的分配和释放;
跟踪指针的传播,匹配指针和所述堆内存的映射关系;
在堆内存被释放时把与所述堆内存对应的所有指针清零置空。
4.一种智能化模糊测试装置,其特征在于,所述装置包括:
变量处理模块,用于通过符号执行将被测目标的输入变量转换为符号化表达式;
路径约束模块,用于根据所述符号化表达式对所述被测目标的执行路径进行路径约束;根据所述符号化表达式对所述被测目标的执行路径进行路径约束,包括:根据多路输入变量的所述符号化表达式生成畸形化约束条件;根据所述畸形化约束条件,对输入污点变量进行路径约束求解,得到指定代码路径;
测试用例生成模块,用于根据约束后的执行路径生成测试用例;
综合处理模块,用于执行所述测试用例,并获取所述测试用例的执行状态及测试数据;
所述通过符号执行将被测目标的输入变量转换为符号化表达式,包括:
利用S2E平台记录被测目标的软件内部污点数据流和程序指令控制流,获取输入污点变量;对污点数据流的记录表示为记录被测目标的软件的程序执行路径的详细信息,使用符号执行和向前污点传播技术对执行轨迹中的敏感路径信息和敏感数据的传播信息进行收集,根据敏感数据的传播信息获取输入污点变量;
通过符号执行得到执行路径上的输入污点变量的符号化表达式;
所述智能化模糊测试装置还用于:
利用测试用例知识库提供测试用例模板,基于所述测试用例模板生成测试用例,所述测试用例知识库包括畸变数据库和测试用例模板库;
所述畸变数据库用于提供畸变数据,从而生成畸形化约束条件;
所述测试用例模板库用于提供测试用例模板,从而生成测试用例;根据被测目标输入数据格式或者协议的不同,选择不同的模板,并通过XML格式的脚本样式定义软件测试的状态模型、数据模型及不同的畸变库并配置对应的生成策略来自动生成批量的测试用例。
5.一种智能化模糊测试系统,其特征在于,所述系统包括:
综合管理分系统,用于根据被测目标建立模糊测试任务;
测试用例知识库,用于提供畸变数据和测试用例模板;
测试用例生成分系统,用于根据所述测试用例模板生成测试用例,所述测试用例生成分系统包括:
变量处理模块,用于通过符号执行将被测目标的输入变量转换为符号化表达式;
路径约束模块,用于根据所述符号化表达式对所述被测目标的执行路径进行路径约束;对所述被测目标的执行路径进行路径约束,包括:根据多路输入变量的所述符号化表达式生成畸形化约束条件;根据所述畸形化约束条件,对输入污点变量进行路径约束求解,得到指定代码路径;
测试用例生成模块,用于根据约束后的执行路径生成测试用例;
综合处理模块,用于执行所述测试用例,并获取所述测试用例的执行状态及测试数据;
模糊测试引擎,用于解析测试用例,并利用S2E选择性符号执行平台执行解析后的测试用例;
测试管控分系统,用于对所述测试用例的执行过程进行管控,获取所述测试用例的执行状态及测试数据;
异常验证分系统,用于分析测试数据中的软件异常,分析异常触发机理;
基础服务平台,用于创建虚拟机集群,利用物理机资源执行所述模糊测试任务;
所述通过符号执行将被测目标的输入变量转换为符号化表达式,包括:
利用S2E平台记录被测目标的软件内部污点数据流和程序指令控制流,获取输入污点变量;对污点数据流的记录表示为记录被测目标的软件的程序执行路径的详细信息,使用符号执行和向前污点传播技术对执行轨迹中的敏感路径信息和敏感数据的传播信息进行收集,根据敏感数据的传播信息获取输入污点变量;
通过符号执行得到执行路径上的输入污点变量的符号化表达式;
所述智能化模糊测试系统还用于:
利用测试用例知识库提供测试用例模板,基于所述测试用例模板生成测试用例,所述测试用例知识库包括畸变数据库和测试用例模板库;
所述畸变数据库用于提供畸变数据,从而生成畸形化约束条件;
所述测试用例模板库用于提供测试用例模板,从而生成测试用例;根据被测目标输入数据格式或者协议的不同,选择不同的模板,并通过XML格式的脚本样式定义软件测试的状态模型、数据模型及不同的畸变库并配置对应的生成策略来自动生成批量的测试用例。
6.一种电子设备,其特征在于,包括:
存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行权利要求1-3任一项所述的智能化模糊测试方法。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机执行权利要求1-3任一项所述的智能化模糊测试方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011046778.8A CN112181833B (zh) | 2020-09-28 | 2020-09-28 | 一种智能化模糊测试方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011046778.8A CN112181833B (zh) | 2020-09-28 | 2020-09-28 | 一种智能化模糊测试方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112181833A CN112181833A (zh) | 2021-01-05 |
CN112181833B true CN112181833B (zh) | 2025-01-21 |
Family
ID=73946464
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011046778.8A Active CN112181833B (zh) | 2020-09-28 | 2020-09-28 | 一种智能化模糊测试方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112181833B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112948255B (zh) * | 2021-03-23 | 2024-05-14 | 三六零数字安全科技集团有限公司 | 分布式的内核模糊测试系统及方法 |
CN113434390B (zh) * | 2021-06-21 | 2022-11-08 | 北京理工大学 | 一种基于变异的fpga逻辑综合工具模糊测试方法 |
CN113836008B (zh) * | 2021-09-13 | 2023-10-27 | 支付宝(杭州)信息技术有限公司 | 针对虚拟机监视器进行模糊测试的方法和系统 |
CN114385487A (zh) * | 2021-12-17 | 2022-04-22 | 斑马网络技术有限公司 | 一种执行时间的处理方法、装置及存储介质 |
CN114896145B (zh) * | 2022-04-27 | 2024-09-20 | 北京轩宇信息技术有限公司 | 用于符号执行的复杂类型输入变量懒符号化方法及系统 |
CN115225551B (zh) * | 2022-07-14 | 2024-03-29 | 北京邮电大学 | 一种模糊测试方法、装置、设备及存储介质 |
CN115174441B (zh) * | 2022-09-06 | 2022-12-13 | 中国汽车技术研究中心有限公司 | 基于状态机的tcp模糊测试方法、设备和存储介质 |
CN115292206B (zh) * | 2022-10-08 | 2023-03-14 | 西安深信科创信息技术有限公司 | 软件漏洞检测方法、装置、电子设备及存储介质 |
CN116991681B (zh) * | 2023-09-27 | 2024-01-30 | 北京中科润宇环保科技股份有限公司 | 结合nlp的飞灰熔融处理系统异常报告识别方法及服务器 |
CN117156022A (zh) * | 2023-11-01 | 2023-12-01 | 中国电子科技集团公司第三十研究所 | 一种用于模糊测试的变异数据生成方法 |
CN117992340B (zh) * | 2024-01-09 | 2024-10-08 | 北京水木羽林科技有限公司 | 数据库集群模糊测试方法、系统、计算机设备和存储介质 |
CN118094572B (zh) * | 2024-04-26 | 2024-07-12 | 中国信息通信研究院 | 一种基于openstack的漏洞挖掘方法 |
CN118733476A (zh) * | 2024-09-04 | 2024-10-01 | 九科信息技术(深圳)有限公司 | 测试用例的生成方法、装置、终端设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103399780A (zh) * | 2013-07-03 | 2013-11-20 | 清华大学 | 一种基于虚拟机技术和动态符号执行的整数溢出检测方法 |
CN108268371A (zh) * | 2016-12-30 | 2018-07-10 | 南京理工大学 | 面向Android应用的智能模糊测试方法 |
CN110363004A (zh) * | 2018-04-10 | 2019-10-22 | 腾讯科技(深圳)有限公司 | 一种代码漏洞检测方法、装置、介质及设备 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6032095B2 (ja) * | 2013-03-27 | 2016-11-24 | 富士通株式会社 | テストケース生成方法、テストケース生成装置、およびテストケース生成プログラム |
CN104598383B (zh) * | 2015-02-06 | 2018-02-09 | 中国科学院软件研究所 | 一种基于模式的动态漏洞挖掘集成系统和方法 |
CN108595318B (zh) * | 2018-03-31 | 2021-05-14 | 西安电子科技大学 | Rfc制导的ssl/tls实现中数字证书验证模块的差异测试方法 |
CN109739755B (zh) * | 2018-12-27 | 2020-07-10 | 北京理工大学 | 一种基于程序追踪和混合执行的模糊测试系统 |
CN110196815B (zh) * | 2019-07-26 | 2019-11-01 | 中国人民解放军国防科技大学 | 一种软件模糊测试方法 |
CN111400165A (zh) * | 2020-02-11 | 2020-07-10 | 中国人民解放军战略支援部队信息工程大学 | 一种基于前向探针的离线符号执行路径搜索方法 |
CN111625833B (zh) * | 2020-04-13 | 2023-06-13 | 中国科学院软件研究所 | 一种高效的软件程序释放后重用漏洞判定方法和装置 |
CN111581106B (zh) * | 2020-05-12 | 2023-05-23 | 全球能源互联网研究院有限公司 | 二进制程序漏洞测试方法、装置及可读存储介质 |
-
2020
- 2020-09-28 CN CN202011046778.8A patent/CN112181833B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103399780A (zh) * | 2013-07-03 | 2013-11-20 | 清华大学 | 一种基于虚拟机技术和动态符号执行的整数溢出检测方法 |
CN108268371A (zh) * | 2016-12-30 | 2018-07-10 | 南京理工大学 | 面向Android应用的智能模糊测试方法 |
CN110363004A (zh) * | 2018-04-10 | 2019-10-22 | 腾讯科技(深圳)有限公司 | 一种代码漏洞检测方法、装置、介质及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN112181833A (zh) | 2021-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112181833B (zh) | 一种智能化模糊测试方法、装置及系统 | |
US9734005B2 (en) | Log analytics for problem diagnosis | |
US7962798B2 (en) | Methods, systems and media for software self-healing | |
US10380350B1 (en) | Efficient and comprehensive source code fuzzing | |
Saha et al. | Hector: Detecting resource-release omission faults in error-handling code for systems software | |
US20230161870A1 (en) | System and method for recursive inspection of workloads from configuration code to production environments | |
CN110728575A (zh) | 一种电力交易平台web安全深度监控方法 | |
Wang et al. | A combinatorial approach to detecting buffer overflow vulnerabilities | |
CN110851352A (zh) | 一种模糊测试系统及终端设备 | |
Kim et al. | FIRM-COV: High-coverage greybox fuzzing for IoT firmware via optimized process emulation | |
US11294653B2 (en) | Methods and systems of disassembling executable code | |
Shen et al. | A systematic review of fuzzy testing for information systems and applications | |
CN114036526A (zh) | 漏洞测试方法、装置、计算机设备和存储介质 | |
CN116414722A (zh) | 模糊测试处理方法、装置、模糊测试系统及存储介质 | |
US20220012161A1 (en) | Instrumentation trace capture technique | |
CN111796911B (zh) | 一种面向云平台虚拟设备的攻击检测方法及电子装置 | |
CN113032785A (zh) | 一种文档检测方法、装置、设备及存储介质 | |
Wang et al. | Cross-System Software Log-based Anomaly Detection Using Meta-Learning | |
Yu et al. | IoTaint: An Optimized Static Taint Analysis Method in Embedded Firmware | |
US11989296B2 (en) | Program execution anomaly detection for cybersecurity | |
US20250045418A1 (en) | System and method for automated exploitation generation | |
Moriconi | Improving software development life cycle using data-driven approaches | |
Liu et al. | Anatomist: Enhanced Firmware Vulnerability Discovery Based on Program State Abnormality Determination with Whole-System Replay | |
Liu et al. | Vulnerability Discovery Based on Program State Abnormality Determination with Whole-System Replay | |
US20240354410A1 (en) | Malware detection from approximate indicators |
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 |