CN117494105A - 软件安全测试方法、装置、计算机设备、存储介质和产品 - Google Patents

软件安全测试方法、装置、计算机设备、存储介质和产品 Download PDF

Info

Publication number
CN117494105A
CN117494105A CN202311566875.3A CN202311566875A CN117494105A CN 117494105 A CN117494105 A CN 117494105A CN 202311566875 A CN202311566875 A CN 202311566875A CN 117494105 A CN117494105 A CN 117494105A
Authority
CN
China
Prior art keywords
tested
program
file
data
software security
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.)
Pending
Application number
CN202311566875.3A
Other languages
English (en)
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.)
Industrial and Commercial Bank of China Ltd ICBC
Original Assignee
Industrial and Commercial Bank of China Ltd ICBC
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 Industrial and Commercial Bank of China Ltd ICBC filed Critical Industrial and Commercial Bank of China Ltd ICBC
Priority to CN202311566875.3A priority Critical patent/CN117494105A/zh
Publication of CN117494105A publication Critical patent/CN117494105A/zh
Pending legal-status Critical Current

Links

Classifications

    • 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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • 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/556Detecting local intrusion or implementing counter-measures involving covert channels, i.e. data leakage between processes
    • 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

Abstract

本申请涉及一种软件安全测试方法、装置、计算机设备、存储介质和计算机程序产品,通过符号执行引擎生成待测文件,在通过待测程序对待测文件进行符号执行的过程中,获取待测程序的路径约束条件,在确定待测程序出现栈溢出错误、且待测文件不满足链表触发条件的情况下,获取待测程序的溢出数据约束条件,基于路径约束条件和溢出数据约束条件,对待测文件进行求解,得到目标文件,并基于目标文件进行软件安全测试,能够准确分析待测程序中的栈溢出问题,提高代码测试效率。

Description

软件安全测试方法、装置、计算机设备、存储介质和产品
技术领域
本申请涉及计算机安全技术领域,特别是涉及一种软件安全测试方法、装置、计算机设备、存储介质和计算机程序产品。
背景技术
栈溢出是一种常见的软件漏洞,它发生在程序在栈(stack)内存区域中分配数据时,由于输入数据的长度超过了栈缓冲区的预留空间,导致数据溢出到相邻的内存区域。
传统方法中,主要是通过构造模糊测试工具,通过向编写的模糊测试工具输入一些随机的数据,观察目标程序对输入数据的相应,从而发现代码的问题。
然而,模糊测试方法在出现异常时,需要测试人员人工对造成异常的数据包进行分析,测试效率较低。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高代码测试效率的软件安全测试方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
第一方面,本申请提供了一种软件安全测试方法,包括:
通过符号执行引擎生成待测文件;
在通过待测程序对待测文件进行符号执行的过程中,获取待测程序的路径约束条件;
在确定待测程序出现栈溢出错误、且待测文件不满足链表触发条件的情况下,获取待测程序的溢出数据约束条件;
基于路径约束条件和溢出数据约束条件,对待测文件进行求解,得到目标文件,并基于目标文件进行软件安全测试。
在其中一个实施例中,通过待测程序对待测文件进行符号执行的过程,包括:
将待测文件中的数据标记为污点数据,得到符号化种子文件;
通过待测程序对符号化种子文件进行动态符号执行,以将待测文件中受到污点数据影响的内存区域标记为污点区域。
在其中一个实施例中,获取待测程序的路径约束条件的步骤,包括:
获取污点区域对应的传播路径,并将传播路径对应的路径约束条件,作为待测程序的路径约束条件。
在其中一个实施例中,通过待测程序对符号化种子文件进行动态符号执行之后,包括:
获取待测程序的栈堆内存布局;
确定待测程序中的关键指针数据;
对关键指针数据进行符号化检查,得到指针可控性约束条件;
根据指针可控性约束条件,对栈堆内存布局进行更新。
在其中一个实施例中,确定待测程序出现栈溢出错误的步骤,包括:
确定更新后的栈堆内存布局中的符号区域和写入对象区域;
分别获取符号区域相应的第一地址长度和写入对象区域相应的第二地址长度;
在第一地址长度大于第二地址长度的情况下,确定待测程序出现栈溢出错误。
在其中一个实施例中,基于目标文件进行软件安全测试的步骤,包括:
在运行待测程序的过程中,通过目标文件对待测程序进行攻击,并根据攻击的结果,得到待测程序的软件安全测试报告。
第二方面,本申请还提供了一种软件安全测试装置,包括:
测试文件生成模块,用于通过符号执行引擎生成待测文件;
路径约束获取模块,用于在通过待测程序对待测文件进行符号执行的过程中,获取待测程序的路径约束条件;
数据约束获取模块,用于在确定待测程序出现栈溢出错误、且待测文件不满足链表触发条件的情况下,获取待测程序的溢出数据约束条件;
软件安全测试模块,用于基于路径约束条件和溢出数据约束条件,对待测文件进行求解,得到目标文件,并基于目标文件进行软件安全测试。
第三方面,本申请还提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现第一方面中任意一项的方法步骤。
第四方面,本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现第一方面中任意一项的方法步骤。
第五方面,本申请还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现第一方面中任意一项的方法步骤。
上述软件安全测试方法、装置、计算机设备、存储介质和计算机程序产品,通过符号执行引擎生成待测文件,在通过待测程序对待测文件进行符号执行的过程中,获取待测程序的路径约束条件,在确定待测程序出现栈溢出错误、且待测文件不满足链表触发条件的情况下,获取待测程序的溢出数据约束条件,基于路径约束条件和溢出数据约束条件,对待测文件进行求解,得到目标文件,并基于目标文件进行软件安全测试,能够准确分析待测程序中的栈溢出问题,提高代码测试效率。
附图说明
为了更清楚地说明本申请实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为一个实施例中软件安全测试方法的应用环境图;
图2为一个实施例中软件安全测试方法的流程示意图;
图3为一个实施例中软件安全测试方法的流程示意图;
图4为一个实施例中软件安全测试装置的结构框图;
图5为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的软件安全测试方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。数据存储系统可以存储服务器104需要处理的数据。数据存储系统可以集成在服务器104上,也可以放在云上或其他网络服务器上。其中,终端102用于通过符号执行引擎生成待测文件,在通过待测程序对待测文件进行符号执行的过程中,获取待测程序的路径约束条件,在确定待测程序出现栈溢出错误、且待测文件不满足链表触发条件的情况下,获取待测程序的溢出数据约束条件,基于路径约束条件和溢出数据约束条件,对待测文件进行求解,得到目标文件,并基于目标文件进行软件安全测试,服务器104用于接收终端102发送的软件安全测试结果。其中,终端102可以但不限于是各种个人计算机、笔记本电脑等。服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个示例性的实施例中,如图2所示,提供了一种软件安全测试方法,以该方法应用于图1中的终端102为例进行说明,包括以下步骤202至步骤2068。
其中:
S202:通过符号执行引擎生成待测文件。
其中,符号执行是一种程序分析技术,可以自动地探索程序的所有可能路径,而不需要执行实际的程序代码。在符号执行引擎进行符号执行的过程中,程序的输入被视为符号变量,而不是具体的数值。当程序执行到某个分支语句时,符号执行器会生成两个不同的路径条件,每个路径条件对应于分支语句的两个可能结果。符号执行器会对这些路径条件进行求解,并生成一组满足这些路径条件的输入,这些输入可以用作程序的测试用例,具体地,终端通过符号执行引擎生成二进制输入文件,即待测文件,作为符号化种子文件输入至待测程序,通过待测程序进行动态符号执行。
S204:在通过待测程序对待测文件进行符号执行的过程中,获取待测程序的路径约束条件。
其中,在通过待测程序对待测文件进行符号执行的过程中,由于待测文件是被标记为符号化的污点数据,当污点数据被使用时,所有受到符号化输入影响的内存区域都被标记为污点区域,通过检查内存的符号化属性,可以进行污点数据的跟踪,确定污点数据在待测程序中的使用情况。同时,在动态符号执行的过程中,会收集待测程序动态运行过程中的运行路径,以获取待测程序的路径约束条件。
S206:在确定待测程序出现栈溢出错误、且待测文件不满足链表触发条件的情况下,获取待测程序的溢出数据约束条件。
其中,通过监测待测程序中内存的输入操作,以确定是否出现栈溢出错误,其中,栈溢出指的是待测程序存在不安全操作使得输入信息长度大于内存中数据区域长度,从而导致栈溢出,通过对比内存中符号区域与写入对象区域的地址长度,可以对栈帧进行栈溢出错误检测。
其中,在对待测程序进行安全检测时,通常是根据待测文件构造相应的虚拟攻击文件,在待测程序运行的过程中,通过虚拟攻击文件对待测程序进行攻击,从而检测待测程序中的错误位置,其中,在构造攻击文件时,为了实现“攻击”的效果,构建的虚拟攻击文件需要绕过待测程序中的部分检测,因此,只有在待测文件不满足链表触发条件的情况下,构建的数据是满足测试需求的。
进一步地,溢出数据约束条件指的是用于描述和限制数据溢出的约束条件,在待测程序出现栈溢出错误的情况下,通过对出现栈溢出错误的内存区进行缓冲区的大小限制,使得写入缓冲区的数据量不会超出缓冲区的边界,从而避免相应内存区的数据溢出。
S208:基于路径约束条件和溢出数据约束条件,对待测文件进行求解,得到目标文件,并基于目标文件进行软件安全测试。
其中,通过对路径约束条件和溢出数据约束条件进行合取,得到安全测试的目标数据约束条件,并通过约束求解器对目标数据约束条件进行求解,得到可以触发待测程序指定攻击的目标文件,即虚拟攻击文件,在待测程序运行的过程中,通过目标文件对待测程序进行攻击,以对待测程序进行软件安全测试。其中,目标文件通常用于触发待测程序的House of Spirit攻击,House of Spirit攻击通常通过利用程序中的漏洞进行入侵,是一种高级持续性威胁。
上述软件安全测试方法中,通过符号执行引擎生成待测文件,在通过待测程序对待测文件进行符号执行的过程中,获取待测程序的路径约束条件,在确定待测程序出现栈溢出错误、且待测文件不满足链表触发条件的情况下,获取待测程序的溢出数据约束条件,基于路径约束条件和溢出数据约束条件,对待测文件进行求解,得到目标文件,并基于目标文件进行软件安全测试,能够准确分析待测程序中的栈溢出问题,提高代码测试效率。
在一个示例性的实施例中,通过待测程序对待测文件进行符号执行的过程,包括:将待测文件中的数据标记为污点数据,得到符号化种子文件;通过待测程序对符号化种子文件进行动态符号执行,以将待测文件中受到污点数据影响的内存区域标记为污点区域。
其中,待测文件中的数据被标记为五点数据,作为符号化种子文件输入,通过驱动待测程度对符号化种子文件进行动态符号执行,在动态运行的过程中,所有收到符号化输入影响的内存区域都被标记为污点区域,通过检查内存的符号化属性,可以进行污点数据的跟踪分析与判断。
本实施例中,通过将待测文件中的数据标记为污点数据,得到符号化种子文件,通过待测程序对符号化种子文件进行动态符号执行,以将待测文件中受到污点数据影响的内存区域标记为污点区域,能够收集待测程序动态运行过程中的运行路径,从而准确定位栈溢出错误位置。
在一个示例性的实施例中,获取待测程序的路径约束条件的步骤,包括:获取污点区域对应的传播路径,并将传播路径对应的路径约束条件,作为待测程序的路径约束条件。
其中,路径约束条件用于限制栈溢出的路径,使得符号化数据输入所指向的确定路径,动态运行到存在栈溢出错误的位置。具体地,通过获取污点区域相应的传播路径,限制污点数据的运行路径,路径约束条件。
本实施例中,通过获取污点区域对应的传播路径,并将传播路径对应的路径约束条件,作为待测程序的路径约束条件,能够限制污点数据的运行路径,从而准确定位栈溢出错误的位置。
在一个示例性的实施例中,通过待测程序对符号化种子文件进行动态符号执行之后,包括:获取待测程序的栈堆内存布局;确定待测程序中的关键指针数据;对关键指针数据进行符号化检查,得到指针可控性约束条件;根据指针可控性约束条件,对栈堆内存布局进行更新。
其中,在发生栈溢出错误的情况下,会导致栈堆内存布局改变,在动态执行的过程中,通过对待测程序中的关键指针数据进行可控性约束,限制指针的取值范围,使得被攻击时指向指定的地址,确保指针指向预期的内存区域,具体地,通过对关键指针数据进行符号化检查,判断是否可控,得到指针可控性约束条件,并对栈堆内存布局进行更新。其中,栈堆内存布局指的是栈内存布局和堆内存布局,其中,栈是用于存储函数调用和局部变量的区域,堆是用于动态分配内存的区域。
本实施例中,通过获取待测程序的栈堆内存布局,确定待测程序中的关键指针数据,对关键指针数据进行符号化检查,得到指针可控性约束条件;根据指针可控性约束条件,对栈堆内存布局进行更新,能够具体化栈堆内存,使得关键指针数据可控。
在一个示例性的实施例中,确定待测程序出现栈溢出错误的步骤,包括:确定更新后的栈堆内存布局中的符号区域和写入对象区域;分别获取符号区域相应的第一地址长度和写入对象区域相应的第二地址长度;在第一地址长度大于第二地址长度的情况下,确定待测程序出现栈溢出错误。
其中,栈溢出错误指的是写入的数据长度超过内存区可以存储的数据长度,通过比较更新后栈堆内存布局中的符号区域和写入对象区域的地址长度,在符号区域的地址长度大于写入对象区域的地址长度的情况下,确定待测程序出现栈溢出错误,其中,符号区域指的是写入的符号化数据的区域,写入对象区域指的是保存写入对象的区域。
本实施例中,通过确定更新后的栈堆内存布局中的符号区域和写入对象区域,分别获取符号区域相应的第一地址长度和写入对象区域相应的第二地址长度,在第一地址长度大于第二地址长度的情况下,确定待测程序出现栈溢出错误,能够准确判断是否出现栈溢出错误。
在一个示例性的实施例中,基于目标文件进行软件安全测试的步骤,包括:在运行待测程序的过程中,通过目标文件对待测程序进行攻击,并根据攻击的结果,得到待测程序的软件安全测试报告。
其中,通过驱动待测程序,在运行待测程序的过程中,通过目标文件对待测程序进行模拟攻击测试,验证House of Spirit攻击是否成功,并获取待测程序的软件安全测试报告。
本实施例中,通过在运行待测程序的过程中,通过目标文件对待测程序进行攻击,并根据攻击的结果,得到待测程序的软件安全测试报告,能够准确分析待测程序中的栈溢出问题,提高代码测试效率。
在一个示例性的实施例中,如图3所示,提供了一种软件安全测试方法,该方法包括以下步骤:
通过符号执行引擎生成待测文件。
将待测文件中的数据标记为污点数据,得到符号化种子文件;在通过待测程序对符号化种子文件进行动态符号执行,以将待测文件中受到污点数据影响的内存区域标记为污点区域的过程中,获取污点区域对应的传播路径,并将传播路径对应的路径约束条件,作为待测程序的路径约束条件。
获取待测程序的栈堆内存布局;确定待测程序中的关键指针数据;对关键指针数据进行符号化检查,得到指针可控性约束条件;根据指针可控性约束条件,对栈堆内存布局进行更新。
确定更新后的栈堆内存布局中的符号区域和写入对象区域;分别获取符号区域相应的第一地址长度和写入对象区域相应的第二地址长度;在第一地址长度大于第二地址长度的情况下,确定待测程序出现栈溢出错误。
在确定待测程序出现栈溢出错误、且待测文件不满足链表触发条件的情况下,获取待测程序的溢出数据约束条件。
基于路径约束条件和溢出数据约束条件,对待测文件进行求解,得到目标文件,在运行待测程序的过程中,通过目标文件对待测程序进行攻击,并根据攻击的结果,得到待测程序的软件安全测试报告。
本实施例中,通过符号执行引擎生成待测文件,在通过待测程序对待测文件进行符号执行的过程中,获取待测程序的路径约束条件,在确定待测程序出现栈溢出错误、且待测文件不满足链表触发条件的情况下,获取待测程序的溢出数据约束条件,基于路径约束条件和溢出数据约束条件,对待测文件进行求解,得到目标文件,并基于目标文件进行软件安全测试,能够准确分析待测程序中的栈溢出问题,提高代码测试效率。
应该理解的是,虽然如上的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的软件安全测试方法的软件安全测试装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个软件安全测试装置实施例中的具体限定可以参见上文中对于软件安全测试方法的限定,在此不再赘述。
在一个示例性的实施例中,如图4所示,提供了一种软件安全测试装置,包括:测试文件生成模块10、路径约束获取模块20、数据约束获取模块30和软件安全测试模块40,其中:
测试文件生成模块10,用于通过符号执行引擎生成待测文件。
路径约束获取模块20,用于在通过待测程序对待测文件进行符号执行的过程中,获取待测程序的路径约束条件。
数据约束获取模块30,用于在确定待测程序出现栈溢出错误、且待测文件不满足链表触发条件的情况下,获取待测程序的溢出数据约束条件。
软件安全测试模块40,用于基于路径约束条件和溢出数据约束条件,对待测文件进行求解,得到目标文件,并基于目标文件进行软件安全测试。
在一个示例性的实施例中,路径约束获取模块20还用于将待测文件中的数据标记为污点数据,得到符号化种子文件;通过待测程序对符号化种子文件进行动态符号执行,以将待测文件中受到污点数据影响的内存区域标记为污点区域。
在一个示例性的实施例中,路径约束获取模块20还用于获取污点区域对应的传播路径,并将传播路径对应的路径约束条件,作为待测程序的路径约束条件。
在一个示例性的实施例中,路径约束获取模块20还用于获取待测程序的栈堆内存布局;确定待测程序中的关键指针数据;对关键指针数据进行符号化检查,得到指针可控性约束条件;根据指针可控性约束条件,对栈堆内存布局进行更新。
在一个示例性的实施例中,数据约束获取模块30还用于确定更新后的栈堆内存布局中的符号区域和写入对象区域;分别获取符号区域相应的第一地址长度和写入对象区域相应的第二地址长度;在第一地址长度大于第二地址长度的情况下,确定待测程序出现栈溢出错误。
在一个示例性的实施例中,软件安全测试模块40还用于在运行待测程序的过程中,通过目标文件对待测程序进行攻击,并根据攻击的结果,得到待测程序的软件安全测试报告。
上述软件安全测试装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个示例性的实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图5所示。该计算机设备包括处理器、存储器、输入/输出接口、通信接口、显示单元和输入装置。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口、显示单元和输入装置通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、移动蜂窝网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种软件安全测试方法。该计算机设备的显示单元用于形成视觉可见的画面,可以是显示屏、投影装置或虚拟现实成像装置。显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个示例性的实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:通过符号执行引擎生成待测文件;在通过待测程序对待测文件进行符号执行的过程中,获取待测程序的路径约束条件;在确定待测程序出现栈溢出错误、且待测文件不满足链表触发条件的情况下,获取待测程序的溢出数据约束条件;基于路径约束条件和溢出数据约束条件,对待测文件进行求解,得到目标文件,并基于目标文件进行软件安全测试。
在一个实施例中,处理器执行计算机程序时涉及的通过待测程序对待测文件进行符号执行的过程,包括:将待测文件中的数据标记为污点数据,得到符号化种子文件;通过待测程序对符号化种子文件进行动态符号执行,以将待测文件中受到污点数据影响的内存区域标记为污点区域。
在一个实施例中,处理器执行计算机程序时涉及的获取待测程序的路径约束条件,包括:获取污点区域对应的传播路径,并将传播路径对应的路径约束条件,作为待测程序的路径约束条件。
在一个实施例中,处理器执行计算机程序时涉及的通过待测程序对符号化种子文件进行动态符号执行之后,包括:获取待测程序的栈堆内存布局;确定待测程序中的关键指针数据;对关键指针数据进行符号化检查,得到指针可控性约束条件;根据指针可控性约束条件,对栈堆内存布局进行更新。
在一个实施例中,处理器执行计算机程序时涉及的确定待测程序出现栈溢出错误的步骤,包括:确定更新后的栈堆内存布局中的符号区域和写入对象区域;分别获取符号区域相应的第一地址长度和写入对象区域相应的第二地址长度;在第一地址长度大于第二地址长度的情况下,确定待测程序出现栈溢出错误。
在一个实施例中,处理器执行计算机程序时涉及的基于目标文件进行软件安全测试,包括:在运行待测程序的过程中,通过目标文件对待测程序进行攻击,并根据攻击的结果,得到待测程序的软件安全测试报告。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:通过符号执行引擎生成待测文件;在通过待测程序对待测文件进行符号执行的过程中,获取待测程序的路径约束条件;在确定待测程序出现栈溢出错误、且待测文件不满足链表触发条件的情况下,获取待测程序的溢出数据约束条件;基于路径约束条件和溢出数据约束条件,对待测文件进行求解,得到目标文件,并基于目标文件进行软件安全测试。
在一个实施例中,计算机程序被处理器执行时涉及的通过待测程序对待测文件进行符号执行的过程,包括:将待测文件中的数据标记为污点数据,得到符号化种子文件;通过待测程序对符号化种子文件进行动态符号执行,以将待测文件中受到污点数据影响的内存区域标记为污点区域。
在一个实施例中,计算机程序被处理器执行时涉及的获取待测程序的路径约束条件,包括:获取污点区域对应的传播路径,并将传播路径对应的路径约束条件,作为待测程序的路径约束条件。
在一个实施例中,计算机程序被处理器执行时涉及的通过待测程序对符号化种子文件进行动态符号执行之后,包括:获取待测程序的栈堆内存布局;确定待测程序中的关键指针数据;对关键指针数据进行符号化检查,得到指针可控性约束条件;根据指针可控性约束条件,对栈堆内存布局进行更新。
在一个实施例中,计算机程序被处理器执行时涉及的确定待测程序出现栈溢出错误的步骤,包括:确定更新后的栈堆内存布局中的符号区域和写入对象区域;分别获取符号区域相应的第一地址长度和写入对象区域相应的第二地址长度;在第一地址长度大于第二地址长度的情况下,确定待测程序出现栈溢出错误。
在一个实施例中,计算机程序被处理器执行时涉及的基于目标文件进行软件安全测试,包括:在运行待测程序的过程中,通过目标文件对待测程序进行攻击,并根据攻击的结果,得到待测程序的软件安全测试报告。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:通过符号执行引擎生成待测文件;在通过待测程序对待测文件进行符号执行的过程中,获取待测程序的路径约束条件;在确定待测程序出现栈溢出错误、且待测文件不满足链表触发条件的情况下,获取待测程序的溢出数据约束条件;基于路径约束条件和溢出数据约束条件,对待测文件进行求解,得到目标文件,并基于目标文件进行软件安全测试。
在一个实施例中,计算机程序被处理器执行时涉及的通过待测程序对待测文件进行符号执行的过程,包括:将待测文件中的数据标记为污点数据,得到符号化种子文件;通过待测程序对符号化种子文件进行动态符号执行,以将待测文件中受到污点数据影响的内存区域标记为污点区域。
在一个实施例中,计算机程序被处理器执行时涉及的获取待测程序的路径约束条件,包括:获取污点区域对应的传播路径,并将传播路径对应的路径约束条件,作为待测程序的路径约束条件。
在一个实施例中,计算机程序被处理器执行时涉及的通过待测程序对符号化种子文件进行动态符号执行之后,包括:获取待测程序的栈堆内存布局;确定待测程序中的关键指针数据;对关键指针数据进行符号化检查,得到指针可控性约束条件;根据指针可控性约束条件,对栈堆内存布局进行更新。
在一个实施例中,计算机程序被处理器执行时涉及的确定待测程序出现栈溢出错误的步骤,包括:确定更新后的栈堆内存布局中的符号区域和写入对象区域;分别获取符号区域相应的第一地址长度和写入对象区域相应的第二地址长度;在第一地址长度大于第二地址长度的情况下,确定待测程序出现栈溢出错误。
在一个实施例中,计算机程序被处理器执行时涉及的基于目标文件进行软件安全测试,包括:在运行待测程序的过程中,通过目标文件对待测程序进行攻击,并根据攻击的结果,得到待测程序的软件安全测试报告。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。

Claims (10)

1.一种软件安全测试方法,其特征在于,所述方法包括:
通过符号执行引擎生成待测文件;
在通过待测程序对所述待测文件进行符号执行的过程中,获取所述待测程序的路径约束条件;
在确定所述待测程序出现栈溢出错误、且所述待测文件不满足链表触发条件的情况下,获取所述待测程序的溢出数据约束条件;
基于所述路径约束条件和所述溢出数据约束条件,对所述待测文件进行求解,得到目标文件,并基于所述目标文件进行软件安全测试。
2.根据权利要求1所述的方法,其特征在于,通过待测程序对所述待测文件进行符号执行的过程,包括:
将所述待测文件中的数据标记为污点数据,得到符号化种子文件;
通过待测程序对所述符号化种子文件进行动态符号执行,以将所述待测文件中受到所述污点数据影响的内存区域标记为污点区域。
3.根据权利要求2所述的方法,其特征在于,所述获取所述待测程序的路径约束条件,包括:
获取所述污点区域对应的传播路径,并将所述传播路径对应的路径约束条件,作为所述待测程序的路径约束条件。
4.根据权利要求2所述的方法,其特征在于,所述通过待测程序对所述符号化种子文件进行动态符号执行之后,包括:
获取所述待测程序的栈堆内存布局;
确定所述待测程序中的关键指针数据;
对所述关键指针数据进行符号化检查,得到指针可控性约束条件;
根据所述指针可控性约束条件,对所述栈堆内存布局进行更新。
5.根据权利要求4所述的方法,其特征在于,确定所述待测程序出现栈溢出错误的步骤,包括:
确定更新后的栈堆内存布局中的符号区域和写入对象区域;
分别获取所述符号区域相应的第一地址长度和所述写入对象区域相应的第二地址长度;
在所述第一地址长度大于所述第二地址长度的情况下,确定所述待测程序出现栈溢出错误。
6.根据权利要求1所述的方法,其特征在于,所述基于所述目标文件进行软件安全测试,包括:
在运行所述待测程序的过程中,通过所述目标文件对所述待测程序进行攻击,并根据攻击的结果,得到所述待测程序的软件安全测试报告。
7.一种软件安全测试装置,其特征在于,所述装置包括:
测试文件生成模块,用于通过符号执行引擎生成待测文件;
路径约束获取模块,用于在通过待测程序对所述待测文件进行符号执行的过程中,获取所述待测程序的路径约束条件;
数据约束获取模块,用于在确定所述待测程序出现栈溢出错误、且所述待测文件不满足链表触发条件的情况下,获取所述待测程序的溢出数据约束条件;
软件安全测试模块,用于基于所述路径约束条件和所述溢出数据约束条件,对所述待测文件进行求解,得到目标文件,并基于所述目标文件进行软件安全测试。
8.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述的方法的步骤。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
10.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
CN202311566875.3A 2023-11-22 2023-11-22 软件安全测试方法、装置、计算机设备、存储介质和产品 Pending CN117494105A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311566875.3A CN117494105A (zh) 2023-11-22 2023-11-22 软件安全测试方法、装置、计算机设备、存储介质和产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311566875.3A CN117494105A (zh) 2023-11-22 2023-11-22 软件安全测试方法、装置、计算机设备、存储介质和产品

Publications (1)

Publication Number Publication Date
CN117494105A true CN117494105A (zh) 2024-02-02

Family

ID=89679928

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311566875.3A Pending CN117494105A (zh) 2023-11-22 2023-11-22 软件安全测试方法、装置、计算机设备、存储介质和产品

Country Status (1)

Country Link
CN (1) CN117494105A (zh)

Similar Documents

Publication Publication Date Title
US10380349B2 (en) Security analysis using relational abstraction of data structures
CN110741354A (zh) 呈现代码实体调用之间的差异
CN110474900B (zh) 一种游戏协议测试方法及装置
US20190266332A1 (en) Ace: assurance, composed and explained
CN106201857A (zh) 测试用例的选取方法及装置
CN113946983A (zh) 产品可靠性薄弱环节评估方法、装置和计算机设备
CN111008311B (zh) 基于邻域弱连接的复杂网络节点重要性评估方法和装置
CN113535577A (zh) 基于知识图谱的应用测试方法、装置、电子设备和介质
CN117494105A (zh) 软件安全测试方法、装置、计算机设备、存储介质和产品
Khokhlov et al. Data security and quality evaluation framework: Implementation empirical study on android devices
CN117376114A (zh) 参数配置方法、装置、计算机设备和存储介质
CN114880637B (zh) 账户风险的验证方法、装置、计算机设备和存储介质
CN102929774B (zh) 一种基于可调对象分析的程序漏洞检测方法
CN117331590B (zh) 工艺设计工具包更新方法、装置、计算机设备和存储介质
CN115587805B (zh) 实验室环境试验项目确定方法及装置、环境综合试验评估方法及装置
JP2019144873A (ja) ブロック線図解析装置
CN117435478A (zh) 程序逻辑功能检测方法、装置、计算机设备和存储介质
CN117828873A (zh) 装备任务可靠性定量验证方法、装置、设备和存储介质
CN117221068A (zh) 网络管理方法、装置、计算机设备、存储介质和程序产品
CN117130881A (zh) 页面性能测试方法、装置、计算机设备和存储介质
CN114896590A (zh) 应用程序的检测方法、系统、装置和计算机设备
CN116881116A (zh) 接口测试方法、装置、计算机设备、存储介质和程序产品
CN117319022A (zh) 漏洞检测方法、装置、计算机设备和存储介质
CN115906076A (zh) 内存快照存储方法、装置、计算机设备和存储介质
CN116842526A (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