CN117648696A - 一种软件安全性测试方法及装置 - Google Patents
一种软件安全性测试方法及装置 Download PDFInfo
- Publication number
- CN117648696A CN117648696A CN202311595589.XA CN202311595589A CN117648696A CN 117648696 A CN117648696 A CN 117648696A CN 202311595589 A CN202311595589 A CN 202311595589A CN 117648696 A CN117648696 A CN 117648696A
- Authority
- CN
- China
- Prior art keywords
- information
- test
- tested
- result
- software
- 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
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 392
- 238000000034 method Methods 0.000 claims abstract description 32
- 230000006870 function Effects 0.000 claims description 27
- 230000008569 process Effects 0.000 claims description 24
- 238000013101 initial test Methods 0.000 claims description 22
- 238000013507 mapping Methods 0.000 claims description 21
- 238000004364 calculation method Methods 0.000 claims description 5
- 238000010998 test method Methods 0.000 claims description 4
- 238000012163 sequencing technique Methods 0.000 claims description 2
- 230000002411 adverse Effects 0.000 abstract description 19
- 230000000694 effects Effects 0.000 abstract description 19
- 230000009286 beneficial effect Effects 0.000 abstract description 18
- 238000004590 computer program Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种软件安全性测试方法及装置,该方法包括:获取待测试软件代码信息;基于待测试软件代码信息,确定出目标待测试代码信息;对目标待测试代码信息进行软件安全性测试,得到软件安全性测试结果信息;软件安全性测试结果信息包括第一测试结果信息和测试覆盖率信息;判断软件安全性测试结果信息是否满足测试终止条件,得到终止判断结果;当终止判断结果为否时,触发执行基于待测试软件代码信息,确定出目标待测试代码信息;当终止判断结果为是时,基于软件安全性测试结果信息,确定出目标测试结果信息。可见,本申请有利于提高软件安全性测试效率和准确性,进而避免代码漏洞对系统的不良影响和潜在的漏洞利用,提高系统安全性和稳定性。
Description
技术领域
本发明涉及软件技术领域,尤其涉及一种软件安全性测试方法及装置。
背景技术
内核空间代码是操作系统内核的核心部分,负责管理系统资源、执行系统调用和处理核心功能。由于内核空间代码的复杂性和特权级别,其中可能存在各种漏洞和安全问题,如内存溢出、缓冲区溢出、整数溢出等。这些漏洞可能导致系统崩溃、拒绝服务、提权或信息泄露等安全风险。然而,内核空间代码测试相对于用户空间程序模糊测试具有一些特殊的挑战和难点。因此,提供一种软件安全性测试方法及装置,以提高软件安全性测试效率和准确性,进而避免代码漏洞对系统的不良影响和潜在的漏洞利用,提高系统安全性和稳定性。
发明内容
本发明所要解决的技术问题在于,提供一种软件安全性测试方法及装置有利于提高软件安全性测试效率和准确性,进而避免代码漏洞对系统的不良影响和潜在的漏洞利用,提高系统安全性和稳定性。
为了解决上述技术问题,本发明实施例第一方面公开了一种软件安全性测试方法,所述方法包括:
获取待测试软件代码信息;所述待测试软件代码信息包括若干个有序排列的软件代码信息;
基于所述待测试软件代码信息,确定出目标待测试代码信息;
对所述目标待测试代码信息进行软件安全性测试,得到软件安全性测试结果信息;所述软件安全性测试结果信息包括第一测试结果信息和测试覆盖率信息;
判断所述软件安全性测试结果信息是否满足测试终止条件,得到终止判断结果;
当所述终止判断结果为否时,触发执行所述基于所述待测试软件代码信息,确定出目标待测试代码信息;
当所述终止判断结果为是时,基于所述软件安全性测试结果信息,确定出目标测试结果信息。
作为一种可选的实施方式,在本发明实施例第一方面中,所述对所述目标待测试代码信息进行软件安全性测试,得到软件安全性测试结果信息,包括:
对所述目标待测试代码信息进行测试处理,得到所述第一测试结果信息;
对所述目标待测试代码信息和所述待测试软件代码信息进行计算处理,得到所述测试覆盖率信息。
作为一种可选的实施方式,在本发明实施例第一方面中,所述对所述目标待测试代码信息进行测试处理,得到所述第一测试结果信息,包括:
响应于用户的地址输入操作,得到测试地址信息;
基于所述测试地址信息和虚拟机对所述目标待测试代码信息进行测试;
判断测试过程是否检测到目标函数断点,得到断点判断结果;
当所述断点判断结果为否时,判断是否检测到测试终止信号,得到第一信号判断结果;
当所述第一信号判断结果为否时,触发执行所述基于所述测试地址信息和虚拟机对所述目标待测试代码信息进行测试;
当所述第一信号判断结果为是时,在所述用户指定的寄存器中确定出初始测试结果信息;
当所述断点判断结果为是时,基于所述目标函数断点对应的内存地址信息,确定出映射测试结果信息;所述映射测试结果信息包括强制终止信号,和/或,继续测试信号;
基于所述映射测试结果信息和所述初始测试结果信息,确定出所述第一测试结果信息。
作为一种可选的实施方式,在本发明实施例第一方面中,所述基于所述目标函数断点对应的内存地址信息,确定出映射测试结果信息,包括:
判断所述目标函数断点对应的内存地址信息是否为有效内存信息,得到内存判断结果;
当所述内存判断结果为否时,生成所述强制终止信号;所述强制终止信号用于终止所述目标待测试代码信息的测试过程;
当所述内存判断结果为是时,生成所述继续测试信号。
作为一种可选的实施方式,在本发明实施例第一方面中,所述基于所述映射测试结果信息和所述初始测试结果信息,确定出所述第一测试结果信息,包括:
判断所述映射测试结果信息是否为所述强制终止信号,得到第二信号判断结果;
当所述第二信号判断结果为否时,判断所述寄存器中是否存在所述初始测试结果信息,得到存在判断结果;
当所述存在判断结果为否时,利用所述继续测试信号对所述目标待测试代码信息进行更新,并触发执行所述基于所述测试地址信息和虚拟机对所述目标待测试代码信息进行测试;
当所述存在判断结果为是时,确定所述初始测试结果信息为所述第一测试结果信息;
当所述第二信号判断结果为是时,终止所述目标待测试代码信息的测试过程,并确定所述强制终止信号为所述第一测试结果信息。
作为一种可选的实施方式,在本发明实施例第一方面中,所述对所述目标待测试代码信息和所述待测试软件代码信息进行计算处理,得到所述测试覆盖率信息,包括:
利用所述目标待测试代码信息对应的代码行数与所述目标待测试代码信息对应的代码行数进行除差计算,得到第一代码覆盖率信息;
判断所述目标待测试代码信息是否为所述目标待测试代码信息中排序第一的所述软件代码信息,得到排序判断结果;
当所述排序判断结果为是时,确定所述第一代码覆盖率信息为所述测试覆盖率信息;
当所述排序判断结果为否时,获取历史测试覆盖率信息;
对所述历史测试覆盖率信息和所述第一代码覆盖率信息进行求和计算,得到第二代码覆盖率信息;
确定所述第二代码覆盖率信息为所述测试覆盖率信息。
作为一种可选的实施方式,在本发明实施例第一方面中,所述判断所述软件安全性测试结果信息是否满足测试终止条件,得到终止判断结果,包括:
判断所述第一测试结果信息中是否包含所述强制终止信号,得到第一测试判断结果;
当所述第一测试判断结果为是时,确定终止判断结果为是;
当所述第一测试判断结果为否时,判断所述测试覆盖率信息对应的测试覆盖率是否大于等于覆盖率阈值,得到第二测试判断结果;
当所述第二测试判断结果为是时,确定所述终止判断结果为是;
当所述第二测试判断结果为否时,判断所述第一测试结果信息对应的测试时长是否大于等于时长阈值,得到第三测试判断结果;
当所述第三判断结果为是时,确定所述终止判断结果为是;
当所述第三判断结果为否时,确定所述终止判断结果为否。
本发明实施例第二方面公开了一种软件安全性测试装置,装置包括:
获取模块,用于获取待测试软件代码信息;所述待测试软件代码信息包括若干个有序排列的软件代码信息;
第一确定模块,用于基于所述待测试软件代码信息,确定出目标待测试代码信息;
测试模块,用于对所述目标待测试代码信息进行软件安全性测试,得到软件安全性测试结果信息;所述软件安全性测试结果信息包括第一测试结果信息和测试覆盖率信息;
判断模块,用于判断所述软件安全性测试结果信息是否满足测试终止条件,得到终止判断结果;
触发执行模块,用于当所述终止判断结果为否时,触发执行所述基于所述待测试软件代码信息,确定出目标待测试代码信息;
第二确定模块,用于当所述终止判断结果为是时,基于所述软件安全性测试结果信息,确定出目标测试结果信息。
本发明第三方面公开了另一种软件安全性测试装置,所述装置包括:
存储有可执行程序代码的存储器;
与所述存储器耦合的处理器;
所述处理器调用所述存储器中存储的所述可执行程序代码,执行本发明实施例第一方面公开的软件安全性测试方法中的部分或全部步骤。
本发明第四方面公开了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令被调用时,用于执行本发明实施例第一方面公开的软件安全性测试方法中的部分或全部步骤。
与现有技术相比,本发明实施例具有以下有益效果:
本发明实施例中,获取待测试软件代码信息;待测试软件代码信息包括若干个有序排列的软件代码信息;基于待测试软件代码信息,确定出目标待测试代码信息;对目标待测试代码信息进行软件安全性测试,得到软件安全性测试结果信息;软件安全性测试结果信息包括第一测试结果信息和测试覆盖率信息;判断软件安全性测试结果信息是否满足测试终止条件,得到终止判断结果;当终止判断结果为否时,触发执行基于待测试软件代码信息,确定出目标待测试代码信息;当终止判断结果为是时,基于软件安全性测试结果信息,确定出目标测试结果信息。可见,本申请有利于提高软件安全性测试效率和准确性,进而避免代码漏洞对系统的不良影响和潜在的漏洞利用,提高系统安全性和稳定性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例公开的一种软件安全性测试方法的流程示意图;
图2是本发明实施例公开的一种软件安全性测试装置的结构示意图;
图3是本发明实施例公开的另一种软件安全性测试装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、装置、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
本发明公开了一种软件安全性测试方法及装置有利于提高软件安全性测试效率和准确性,进而避免代码漏洞对系统的不良影响和潜在的漏洞利用,提高系统安全性和稳定性。以下分别进行详细说明。
实施例一
请参阅图1,图1是本发明实施例公开的一种软件安全性测试方法的流程示意图。其中,图1所描述的软件安全性测试方法应用于软件安全性测试系统中,如用于软件安全性测试管理的本地服务器或云端服务器等,本发明实施例不做限定。如图1所示,该软件安全性测试方法可以包括以下操作:
101、获取待测试软件代码信息。
本发明实施例中,该测试软件代码信息包括若干个有序排列的软件代码信息。
102、基于待测试软件代码信息,确定出目标待测试代码信息。
103、对目标待测试代码信息进行软件安全性测试,得到软件安全性测试结果信息。
本发明实施例中,软件安全性测试结果信息包括第一测试结果信息和测试覆盖率信息。
104、判断软件安全性测试结果信息是否满足测试终止条件,得到终止判断结果。
105、当终止判断结果为否时,触发执行基于待测试软件代码信息,确定出目标待测试代码信息。
106、当终止判断结果为是时,基于软件安全性测试结果信息,确定出目标测试结果信息。
需要说明的是,上述基于待测试软件代码信息,确定出目标待测试代码信息可以是按软件代码信息的排列顺序依次确定的,也可以是先优选出若干个软件代码信息,再通过种子变异形式确定出最终的软件安全性测试结果信息,本发明实施例不做限定。
需要说明的是,采用本申请的软件安全性测试方法能够在内核代码的任意位置启动软件安全性测试,并且支持没有源代码的二进制代码以及多个架构,这是目前所有其他软件安全性测试方法无法比拟的优点。本申请的软件安全性测试方法可以模拟多种处理器架构,只要能为测试系统编写探测封装器,就可以轻松地模糊测试这些处理器的内核,本申请的软件安全性测试方法在执行时,无需多处理器协调,即可完成所有操作。
在该可选的实施例中,作为一种可选的实施方式,上述基于软件安全性测试结果信息,确定出目标测试结果信息,包括:
判断软件安全性测试结果信息是否存在强制终止信号,得到目标测试判断结果;
当目标测试结果为是时,确定目标测试结果信息为代码存在漏洞;
当目标测试结果为否时,确定软件安全性测试结果信息和历史软件安全性测试结果信息为目标测试结果信息。
需要说明的是,上述历史软件安全性测试结果信息是已进行了软件安全性测试的软件代码信息对应的软件安全性测试结果信息。
可见,实施本发明实施例所描述的软件安全性测试方法有利于提高软件安全性测试效率和准确性,进而避免代码漏洞对系统的不良影响和潜在的漏洞利用,提高系统安全性和稳定性。
在一个可选的实施例中,上述对目标待测试代码信息进行软件安全性测试,得到软件安全性测试结果信息,包括:
对目标待测试代码信息进行测试处理,得到第一测试结果信息;
对目标待测试代码信息和待测试软件代码信息进行计算处理,得到测试覆盖率信息。
可见,实施本发明实施例所描述的软件安全性测试方法有利于提高软件安全性测试效率和准确性,进而避免代码漏洞对系统的不良影响和潜在的漏洞利用,提高系统安全性和稳定性。
在另一个可选的实施例中,对目标待测试代码信息进行测试处理,得到第一测试结果信息,包括:
响应于用户的地址输入操作,得到测试地址信息;
基于测试地址信息和虚拟机对目标待测试代码信息进行测试;
判断测试过程是否检测到目标函数断点,得到断点判断结果;
当断点判断结果为否时,判断是否检测到测试终止信号,得到第一信号判断结果;
当第一信号判断结果为否时,触发执行基于测试地址信息和虚拟机对目标待测试代码信息进行测试;
当第一信号判断结果为是时,在用户指定的寄存器中确定出初始测试结果信息;
当断点判断结果为是时,基于目标函数断点对应的内存地址信息,确定出映射测试结果信息;映射测试结果信息包括强制终止信号,和/或,继续测试信号;
基于映射测试结果信息和初始测试结果信息,确定出第一测试结果信息。
需要说明的是,上述目标函数断点是由用户设定的。
需要说明的是,上述初始测试结果信息包括测试时长、测试耗费资源等数据信息,本发明实施例不做限定。进一步的,上述在用户指定的寄存器中确定出初始测试结果信息是通过在测试地址信息对应的IP地址获取虚拟机对目标待测试代码信息测试过程产生的测试数据信息。
进一步的,上述目标待测试代码信息中软件代码所缓冲的内存地址信息、测试地址信息和寄存器所在的IP地址信息都是不相一致的。
在该可选的实施例中,作为一种可选的实施方式,上述基于测试地址信息和虚拟机对目标待测试代码信息进行测试,包括:
加载初始内核内存;
将目标待测试代码信息缓冲至初始内核内存;
响应于用户的输入操作,设定寄存器;
在测试地址信息启动新的进程服务;
在进程服务启动虚拟机对缓冲至初始内核内存的目标待测试代码信息进行模糊测试。
需要说明的是,上述进程服务包括fork进程和其对应的父进程。进一步的,父进程用于缓冲或翻译由fork进程反馈过来的需要新内存区域或翻译新块。
需要说明的是,上述虚拟机(模拟器)的模糊测试通过利用avatar2框架与gdbstub进行交互,以实现代码在对真实设备的仿真测试。
可见,实施本发明实施例所描述的软件安全性测试方法有利于提高软件安全性测试效率和准确性,进而避免代码漏洞对系统的不良影响和潜在的漏洞利用,提高系统安全性和稳定性。
在又一个可选的实施例中,基于目标函数断点对应的内存地址信息,确定出映射测试结果信息,包括:
判断目标函数断点对应的内存地址信息是否为有效内存信息,得到内存判断结果;
当内存判断结果为否时,生成强制终止信号;强制终止信号用于终止目标待测试代码信息的测试过程;
当内存判断结果为是时,生成继续测试信号。
需要说明的是,上述判断目标函数断点对应的内存地址信息是否为有效内存信息是通过尝试访问目标函数断点对应的内存地址信息,若访问成功,表明目标函数断点对应的内存地址信息是有效内存信息,当拒绝访问时,表明目标函数断点对应的内存地址信息不是有效内存信息。
进一步的,上述强制终止信号和继续测试信号由在对目标函数断点对应的内存地址信息是否为有效内存信息进行判断之后由软件安全性测试系统自动生成的,本发明实施例不做限定。
可见,实施本发明实施例所描述的软件安全性测试方法有利于提高软件安全性测试效率和准确性,进而避免代码漏洞对系统的不良影响和潜在的漏洞利用,提高系统安全性和稳定性。
在又一个可选的实施例中,基于映射测试结果信息和初始测试结果信息,确定出第一测试结果信息,包括:
判断映射测试结果信息是否为强制终止信号,得到第二信号判断结果;
当第二信号判断结果为否时,判断寄存器中是否存在初始测试结果信息,得到存在判断结果;
当存在判断结果为否时,利用继续测试信号对目标待测试代码信息进行更新,并触发执行基于测试地址信息和虚拟机对目标待测试代码信息进行测试;
当存在判断结果为是时,确定初始测试结果信息为第一测试结果信息;
当第二信号判断结果为是时,终止目标待测试代码信息的测试过程,并确定强制终止信号为第一测试结果信息。
在该可选的实施例中,作为一种可选的实施方式,上述利用继续测试信号对目标待测试代码信息进行更新,包括:
当检测到继续测试信号时,判断目标待测试代码信息对应的历史访问内存信息是否存在与目标函数断点对应的内存地址信息相一致的历史内存地址信息,得到内存地址判断结果;
当内存地址判断结果为是时,确定与目标函数断点对应的内存地址信息相一致的历史内存地址信息为目标更新内部地址信息;
当内存地址判断结果为否时,确定目标函数断点对应的内存地址信息为目标更新内部地址信息;
将目标更新内部地址信息替换更新目标函数断点在目标待测试代码信息对应位置的数据信息,以对目标待测试代码信息进行更新。
需要说明的是,上述对目标待测试代码信息进行更新后,将会将目标更新内部地址信息缓冲至初始内核内存。
可见,实施本发明实施例所描述的软件安全性测试方法有利于提高软件安全性测试效率和准确性,进而避免代码漏洞对系统的不良影响和潜在的漏洞利用,提高系统安全性和稳定性。
在一个可选的实施例中,上述对目标待测试代码信息和待测试软件代码信息进行计算处理,得到测试覆盖率信息,包括:
利用目标待测试代码信息对应的代码行数与目标待测试代码信息对应的代码行数进行除差计算,得到第一代码覆盖率信息;
判断目标待测试代码信息是否为目标待测试代码信息中排序第一的软件代码信息,得到排序判断结果;
当排序判断结果为是时,确定第一代码覆盖率信息为测试覆盖率信息;
当排序判断结果为否时,获取历史测试覆盖率信息;
对历史测试覆盖率信息和第一代码覆盖率信息进行求和计算,得到第二代码覆盖率信息;
确定第二代码覆盖率信息为测试覆盖率信息。
需要说明的是,上述历史测试覆盖率信息是所有的测试覆盖率信息对应的测试覆盖率之和。
可见,实施本发明实施例所描述的软件安全性测试方法有利于提高软件安全性测试效率和准确性,进而避免代码漏洞对系统的不良影响和潜在的漏洞利用,提高系统安全性和稳定性。
在另一个可选的实施例中,判断软件安全性测试结果信息是否满足测试终止条件,得到终止判断结果,包括:
判断第一测试结果信息中是否包含强制终止信号,得到第一测试判断结果;
当第一测试判断结果为是时,确定终止判断结果为是;
当第一测试判断结果为否时,判断测试覆盖率信息对应的测试覆盖率是否大于等于覆盖率阈值,得到第二测试判断结果;
当第二测试判断结果为是时,确定终止判断结果为是;
当第二测试判断结果为否时,判断第一测试结果信息对应的测试时长是否大于等于时长阈值,得到第三测试判断结果;
当第三判断结果为是时,确定终止判断结果为是;
当第三判断结果为否时,确定终止判断结果为否。
需要说明的是,上述覆盖率阈值、时长阈值可以是根据历史数据信息确定的,也可以是用户设定的,本发明实施例不做限定。
可见,实施本发明实施例所描述的软件安全性测试方法有利于提高软件安全性测试效率和准确性,进而避免代码漏洞对系统的不良影响和潜在的漏洞利用,提高系统安全性和稳定性。
实施例二
请参阅图2,图2是本发明实施例公开的一种软件安全性测试装置的结构示意图。其中,图2所描述的装置能够应用于软件安全性测试系统中,如用于软件安全性测试管理的本地服务器或云端服务器等,本发明实施例不做限定。如图2所示,该装置可以包括:
获取模块201,用于获取测试软件代码信息;待测试软件代码信息包括若干个有序排列的软件代码信息;
第一确定模块202,用于基于待测试软件代码信息,确定出目标待测试代码信息;
测试模块203,用于对目标待测试代码信息进行软件安全性测试,得到软件安全性测试结果信息;软件安全性测试结果信息包括第一测试结果信息和测试覆盖率信息;
判断模块204,用于判断软件安全性测试结果信息是否满足测试终止条件,得到终止判断结果;
触发执行模块205,用于当终止判断结果为否时,触发执行基于待测试软件代码信息,确定出目标待测试代码信息;
第二确定模块206,用于当终止判断结果为是时,基于软件安全性测试结果信息,确定出目标测试结果信息。
可见,实施图2所描述的软件安全性测试装置有利于提高软件安全性测试效率和准确性,进而避免代码漏洞对系统的不良影响和潜在的漏洞利用,提高系统安全性和稳定性。
在另一个可选的实施例中,如图2所示,测试模块203对目标待测试代码信息进行软件安全性测试,得到软件安全性测试结果信息,包括:
对目标待测试代码信息进行测试处理,得到第一测试结果信息;
对目标待测试代码信息和待测试软件代码信息进行计算处理,得到测试覆盖率信息。
可见,实施图2所描述的软件安全性测试装置有利于提高软件安全性测试效率和准确性,进而避免代码漏洞对系统的不良影响和潜在的漏洞利用,提高系统安全性和稳定性。
在又一个可选的实施例中,如图2所示,测试模块203对目标待测试代码信息进行测试处理,得到第一测试结果信息,包括:
响应于用户的地址输入操作,得到测试地址信息;
基于测试地址信息和虚拟机对目标待测试代码信息进行测试;
判断测试过程是否检测到目标函数断点,得到断点判断结果;
当断点判断结果为否时,判断是否检测到测试终止信号,得到第一信号判断结果;
当第一信号判断结果为否时,触发执行基于测试地址信息和虚拟机对目标待测试代码信息进行测试;
当第一信号判断结果为是时,在用户指定的寄存器中确定出初始测试结果信息;
当断点判断结果为是时,基于目标函数断点对应的内存地址信息,确定出映射测试结果信息;映射测试结果信息包括强制终止信号,和/或,继续测试信号;
基于映射测试结果信息和初始测试结果信息,确定出第一测试结果信息。
可见,实施图2所描述的软件安全性测试装置有利于提高软件安全性测试效率和准确性,进而避免代码漏洞对系统的不良影响和潜在的漏洞利用,提高系统安全性和稳定性。
在又一个可选的实施例中,如图2所示,测试模块203基于目标函数断点对应的内存地址信息,确定出映射测试结果信息,包括:
判断目标函数断点对应的内存地址信息是否为有效内存信息,得到内存判断结果;
当内存判断结果为否时,生成强制终止信号;强制终止信号用于终止目标待测试代码信息的测试过程;
当内存判断结果为是时,生成继续测试信号。
可见,实施图2所描述的软件安全性测试装置有利于提高软件安全性测试效率和准确性,进而避免代码漏洞对系统的不良影响和潜在的漏洞利用,提高系统安全性和稳定性。
在又一个可选的实施例中,如图2所示,测试模块203基于映射测试结果信息和初始测试结果信息,确定出第一测试结果信息,包括:
判断映射测试结果信息是否为强制终止信号,得到第二信号判断结果;
当第二信号判断结果为否时,判断寄存器中是否存在初始测试结果信息,得到存在判断结果;
当存在判断结果为否时,利用继续测试信号对目标待测试代码信息进行更新,并触发执行基于测试地址信息和虚拟机对目标待测试代码信息进行测试;
当存在判断结果为是时,确定初始测试结果信息为第一测试结果信息;
当第二信号判断结果为是时,终止目标待测试代码信息的测试过程,并确定强制终止信号为第一测试结果信息。
可见,实施图2所描述的软件安全性测试装置有利于提高软件安全性测试效率和准确性,进而避免代码漏洞对系统的不良影响和潜在的漏洞利用,提高系统安全性和稳定性。
在又一个可选的实施例中,如图2所示,测试模块203对目标待测试代码信息和待测试软件代码信息进行计算处理,得到测试覆盖率信息,包括:
利用目标待测试代码信息对应的代码行数与目标待测试代码信息对应的代码行数进行除差计算,得到第一代码覆盖率信息;
判断目标待测试代码信息是否为目标待测试代码信息中排序第一的软件代码信息,得到排序判断结果;
当排序判断结果为是时,确定第一代码覆盖率信息为测试覆盖率信息;
当排序判断结果为否时,获取历史测试覆盖率信息;
对历史测试覆盖率信息和第一代码覆盖率信息进行求和计算,得到第二代码覆盖率信息;
确定第二代码覆盖率信息为测试覆盖率信息。
可见,实施图2所描述的软件安全性测试装置有利于提高软件安全性测试效率和准确性,进而避免代码漏洞对系统的不良影响和潜在的漏洞利用,提高系统安全性和稳定性。
在又一个可选的实施例中,如图2所示,判断模块204判断软件安全性测试结果信息是否满足测试终止条件,得到终止判断结果,包括:
判断第一测试结果信息中是否包含强制终止信号,得到第一测试判断结果;
当第一测试判断结果为是时,确定终止判断结果为是;
当第一测试判断结果为否时,判断测试覆盖率信息对应的测试覆盖率是否大于等于覆盖率阈值,得到第二测试判断结果;
当第二测试判断结果为是时,确定终止判断结果为是;
当第二测试判断结果为否时,判断第一测试结果信息对应的测试时长是否大于等于时长阈值,得到第三测试判断结果;
当第三判断结果为是时,确定终止判断结果为是;
当第三判断结果为否时,确定终止判断结果为否。
可见,实施图2所描述的软件安全性测试装置有利于提高软件安全性测试效率和准确性,进而避免代码漏洞对系统的不良影响和潜在的漏洞利用,提高系统安全性和稳定性。
实施例三
请参阅图3,图3是本发明实施例公开的又一种软件安全性测试装置的结构示意图。其中,图3所描述的装置能够应用于软件安全性测试系统中,如用于软件安全性测试管理的本地服务器或云端服务器等,本发明实施例不做限定。如图3所示,该装置可以包括:
存储有可执行程序代码的存储器301;
与存储器301耦合的处理器302;
处理器302调用存储器301中存储的可执行程序代码,用于执行实施例一所描述的软件安全性测试方法中的步骤。
实施例四
本发明实施例公开了一种计算机可读读存储介质,其存储用于电子数据交换的计算机程序,其中,该计算机程序使得计算机执行实施例一所描述的软件安全性测试方法中的步骤。
实施例五
本发明实施例公开了一种计算机程序产品,该计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,且该计算机程序可操作来使计算机执行实施例一所描述的软件安全性测试方法中的步骤。
以上所描述的装置实施例仅是示意性的,其中作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施例的具体描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,存储介质包括只读存储器(Read-Only Memory,ROM)、随机存储器(Random Access Memory,RAM)、可编程只读存储器(Programmable Read-only Memory,PROM)、可擦除可编程只读存储器(ErasableProgrammable Read Only Memory,EPROM)、一次可编程只读存储器(One-timeProgrammable Read-Only Memory,OTPROM)、电子抹除式可复写只读存储器(Electrically-Erasable Programmable Read-Only Memory,EEPROM)、只读光盘(CompactDisc Read-Only Memory,CD-ROM)或其他光盘存储器、磁盘存储器、磁带存储器、或者能够用于携带或存储数据的计算机可读的任何其他介质。
最后应说明的是:本发明实施例公开的一种软件安全性测试方法及装置所揭露的仅为本发明较佳实施例而已,仅用于说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解;其依然可以对前述各项实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或替换,并不使相应的技术方案的本质脱离本发明各项实施例技术方案的精神和范围。
Claims (10)
1.一种软件安全性测试方法,其特征在于,所述方法包括:
获取待测试软件代码信息;所述待测试软件代码信息包括若干个有序排列的软件代码信息;
基于所述待测试软件代码信息,确定出目标待测试代码信息;
对所述目标待测试代码信息进行软件安全性测试,得到软件安全性测试结果信息;所述软件安全性测试结果信息包括第一测试结果信息和测试覆盖率信息;
判断所述软件安全性测试结果信息是否满足测试终止条件,得到终止判断结果;
当所述终止判断结果为否时,触发执行所述基于所述待测试软件代码信息,确定出目标待测试代码信息;
当所述终止判断结果为是时,基于所述软件安全性测试结果信息,确定出目标测试结果信息。
2.根据权利要求1所述的软件安全性测试方法,其特征在于,所述对所述目标待测试代码信息进行软件安全性测试,得到软件安全性测试结果信息,包括:
对所述目标待测试代码信息进行测试处理,得到所述第一测试结果信息;
对所述目标待测试代码信息和所述待测试软件代码信息进行计算处理,得到所述测试覆盖率信息。
3.根据权利要求2所述的软件安全性测试方法,其特征在于,所述对所述目标待测试代码信息进行测试处理,得到所述第一测试结果信息,包括:
响应于用户的地址输入操作,得到测试地址信息;
基于所述测试地址信息和虚拟机对所述目标待测试代码信息进行测试;
判断测试过程是否检测到目标函数断点,得到断点判断结果;
当所述断点判断结果为否时,判断是否检测到测试终止信号,得到第一信号判断结果;
当所述第一信号判断结果为否时,触发执行所述基于所述测试地址信息和虚拟机对所述目标待测试代码信息进行测试;
当所述第一信号判断结果为是时,在所述用户指定的寄存器中确定出初始测试结果信息;
当所述断点判断结果为是时,基于所述目标函数断点对应的内存地址信息,确定出映射测试结果信息;所述映射测试结果信息包括强制终止信号,和/或,继续测试信号;
基于所述映射测试结果信息和所述初始测试结果信息,确定出所述第一测试结果信息。
4.根据权利要求3所述的软件安全性测试方法,其特征在于,所述基于所述目标函数断点对应的内存地址信息,确定出映射测试结果信息,包括:
判断所述目标函数断点对应的内存地址信息是否为有效内存信息,得到内存判断结果;
当所述内存判断结果为否时,生成所述强制终止信号;所述强制终止信号用于终止所述目标待测试代码信息的测试过程;
当所述内存判断结果为是时,生成所述继续测试信号。
5.根据权利要求3所述的软件安全性测试方法,其特征在于,所述基于所述映射测试结果信息和所述初始测试结果信息,确定出所述第一测试结果信息,包括:
判断所述映射测试结果信息是否为所述强制终止信号,得到第二信号判断结果;
当所述第二信号判断结果为否时,判断所述寄存器中是否存在所述初始测试结果信息,得到存在判断结果;
当所述存在判断结果为否时,利用所述继续测试信号对所述目标待测试代码信息进行更新,并触发执行所述基于所述测试地址信息和虚拟机对所述目标待测试代码信息进行测试;
当所述存在判断结果为是时,确定所述初始测试结果信息为所述第一测试结果信息;
当所述第二信号判断结果为是时,终止所述目标待测试代码信息的测试过程,并确定所述强制终止信号为所述第一测试结果信息。
6.根据权利要求2所述的软件安全性测试方法,其特征在于,所述对所述目标待测试代码信息和所述待测试软件代码信息进行计算处理,得到所述测试覆盖率信息,包括:
利用所述目标待测试代码信息对应的代码行数与所述目标待测试代码信息对应的代码行数进行除差计算,得到第一代码覆盖率信息;
判断所述目标待测试代码信息是否为所述目标待测试代码信息中排序第一的所述软件代码信息,得到排序判断结果;
当所述排序判断结果为是时,确定所述第一代码覆盖率信息为所述测试覆盖率信息;
当所述排序判断结果为否时,获取历史测试覆盖率信息;
对所述历史测试覆盖率信息和所述第一代码覆盖率信息进行求和计算,得到第二代码覆盖率信息;
确定所述第二代码覆盖率信息为所述测试覆盖率信息。
7.根据权利要求1所述的软件安全性测试方法,其特征在于,所述判断所述软件安全性测试结果信息是否满足测试终止条件,得到终止判断结果,包括:
判断所述第一测试结果信息中是否包含所述强制终止信号,得到第一测试判断结果;
当所述第一测试判断结果为是时,确定终止判断结果为是;
当所述第一测试判断结果为否时,判断所述测试覆盖率信息对应的测试覆盖率是否大于等于覆盖率阈值,得到第二测试判断结果;
当所述第二测试判断结果为是时,确定所述终止判断结果为是;
当所述第二测试判断结果为否时,判断所述第一测试结果信息对应的测试时长是否大于等于时长阈值,得到第三测试判断结果;
当所述第三判断结果为是时,确定所述终止判断结果为是;
当所述第三判断结果为否时,确定所述终止判断结果为否。
8.一种软件安全性测试装置,其特征在于,所述装置包括:
获取模块,用于获取待测试软件代码信息;所述待测试软件代码信息包括若干个有序排列的软件代码信息;
第一确定模块,用于基于所述待测试软件代码信息,确定出目标待测试代码信息;
测试模块,用于对所述目标待测试代码信息进行软件安全性测试,得到软件安全性测试结果信息;所述软件安全性测试结果信息包括第一测试结果信息和测试覆盖率信息;
判断模块,用于判断所述软件安全性测试结果信息是否满足测试终止条件,得到终止判断结果;
触发执行模块,用于当所述终止判断结果为否时,触发执行所述基于所述待测试软件代码信息,确定出目标待测试代码信息;
第二确定模块,用于当所述终止判断结果为是时,基于所述软件安全性测试结果信息,确定出目标测试结果信息。
9.一种软件安全性测试装置,其特征在于,所述装置包括:
存储有可执行程序代码的存储器;
与所述存储器耦合的处理器;
所述处理器调用所述存储器中存储的所述可执行程序代码,执行如权利要求1-7任一项所述的软件安全性测试方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令被调用时,用于执行如权利要求1-7任一项所述的软件安全性测试方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311595589.XA CN117648696B (zh) | 2023-11-27 | 2023-11-27 | 一种软件安全性测试方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311595589.XA CN117648696B (zh) | 2023-11-27 | 2023-11-27 | 一种软件安全性测试方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117648696A true CN117648696A (zh) | 2024-03-05 |
CN117648696B CN117648696B (zh) | 2024-06-04 |
Family
ID=90045897
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311595589.XA Active CN117648696B (zh) | 2023-11-27 | 2023-11-27 | 一种软件安全性测试方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117648696B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040073841A1 (en) * | 2002-10-11 | 2004-04-15 | Toros Zeynep M. | Command set for a software programmable verification tool having a built-in self test (BIST) for testing and debugging an embedded device under test (DUT) |
CN1949187A (zh) * | 2006-11-17 | 2007-04-18 | 深圳市领测科技有限公司 | 一种程序调测系统及方法 |
KR20080095527A (ko) * | 2007-04-25 | 2008-10-29 | 삼성전자주식회사 | 임베디드 소프트웨어의 인터페이스 자동 추출 장치 및 그방법 |
CN105608383A (zh) * | 2015-12-22 | 2016-05-25 | 工业和信息化部电子第五研究所 | ActiveX控件漏洞测试方法及系统 |
CN106959883A (zh) * | 2017-03-10 | 2017-07-18 | 深圳航天科技创新研究院 | 一种实现虚拟验证系统数据采集的方法 |
CN110764870A (zh) * | 2019-09-30 | 2020-02-07 | 腾讯科技(深圳)有限公司 | 一种虚拟机逃逸漏洞挖掘方法、装置、设备及介质 |
CN112527571A (zh) * | 2019-09-18 | 2021-03-19 | 珠海零边界集成电路有限公司 | 一种cpu指令集覆盖率计算方法及装置 |
CN115168229A (zh) * | 2022-07-27 | 2022-10-11 | 北京计算机技术及应用研究所 | 一种覆盖率驱动的嵌入式软件闭环测试平台和方法 |
CN115357513A (zh) * | 2022-09-06 | 2022-11-18 | 清华大学 | 程序模糊测试方法、装置、设备及存储介质 |
-
2023
- 2023-11-27 CN CN202311595589.XA patent/CN117648696B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040073841A1 (en) * | 2002-10-11 | 2004-04-15 | Toros Zeynep M. | Command set for a software programmable verification tool having a built-in self test (BIST) for testing and debugging an embedded device under test (DUT) |
CN1949187A (zh) * | 2006-11-17 | 2007-04-18 | 深圳市领测科技有限公司 | 一种程序调测系统及方法 |
KR20080095527A (ko) * | 2007-04-25 | 2008-10-29 | 삼성전자주식회사 | 임베디드 소프트웨어의 인터페이스 자동 추출 장치 및 그방법 |
CN105608383A (zh) * | 2015-12-22 | 2016-05-25 | 工业和信息化部电子第五研究所 | ActiveX控件漏洞测试方法及系统 |
CN106959883A (zh) * | 2017-03-10 | 2017-07-18 | 深圳航天科技创新研究院 | 一种实现虚拟验证系统数据采集的方法 |
CN112527571A (zh) * | 2019-09-18 | 2021-03-19 | 珠海零边界集成电路有限公司 | 一种cpu指令集覆盖率计算方法及装置 |
CN110764870A (zh) * | 2019-09-30 | 2020-02-07 | 腾讯科技(深圳)有限公司 | 一种虚拟机逃逸漏洞挖掘方法、装置、设备及介质 |
CN115168229A (zh) * | 2022-07-27 | 2022-10-11 | 北京计算机技术及应用研究所 | 一种覆盖率驱动的嵌入式软件闭环测试平台和方法 |
CN115357513A (zh) * | 2022-09-06 | 2022-11-18 | 清华大学 | 程序模糊测试方法、装置、设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
崔宝江;王福维;郭涛;柳本金;: "基于污点信息的函数内存模糊测试技术研究", 清华大学学报(自然科学版), no. 01, 15 January 2016 (2016-01-15), pages 7 - 13 * |
许鹏;郑金芳;: "嵌入式软件测试方法分类分析", 电子制作, no. 09, 15 May 2013 (2013-05-15), pages 73 * |
Also Published As
Publication number | Publication date |
---|---|
CN117648696B (zh) | 2024-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10318740B2 (en) | Security risk scoring of an application | |
CN110826071A (zh) | 软件漏洞风险预测方法、装置、设备及存储介质 | |
TW201941058A (zh) | 異常檢測方法及裝置 | |
CN107066390B (zh) | 一种动态内存泄漏检测方法及系统 | |
CN111683084B (zh) | 一种智能合约入侵检测方法、装置、终端设备及存储介质 | |
CN110708212A (zh) | 分布式系统中调用链路的追踪方法及装置 | |
CN107733710A (zh) | 链路调用关系的构建方法、装置、计算机设备及存储介质 | |
CN112363935A (zh) | 数据联调方法、装置、电子设备及存储介质 | |
CN107623693A (zh) | 域名解析防护方法及装置、系统、计算设备、存储介质 | |
CN110598419A (zh) | 一种区块链客户端漏洞挖掘方法、装置、设备及存储介质 | |
CN117648696B (zh) | 一种软件安全性测试方法及装置 | |
CN117076330A (zh) | 一种访存验证方法、系统、电子设备及可读存储介质 | |
CN112433936A (zh) | 测试方法、装置及存储介质 | |
CN110008698A (zh) | 病毒检测方法及装置 | |
CN112416733B (zh) | 一种内存检测方法、内存检测装置及智能设备 | |
CN110390463B (zh) | 风控数据处理方法、装置及终端设备 | |
CN115643044A (zh) | 数据处理方法、装置、服务器及存储介质 | |
CN110737509A (zh) | 热迁移处理方法及装置、存储介质和电子设备 | |
CN113468058B (zh) | 软件即服务平台的回归测试方法、装置及电子设备 | |
CN114978474A (zh) | 一种用户聊天风险等级自动处置方法及系统 | |
CN115022201A (zh) | 一种数据处理功能测试方法、装置、设备及存储介质 | |
CN108415849A (zh) | 用于测试应用的方法和装置 | |
CN114240476A (zh) | 异常用户确定方法、装置、设备及存储介质 | |
CN107168876A (zh) | 一种静态代码检测的方法及装置 | |
CN115437903A (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 |