System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及计算机安全,特别是涉及一种软件安全测试方法、装置、计算机设备、存储介质和计算机程序产品。
技术介绍
1、栈溢出是一种常见的软件漏洞,它发生在程序在栈(stack)内存区域中分配数据时,由于输入数据的长度超过了栈缓冲区的预留空间,导致数据溢出到相邻的内存区域。
2、传统方法中,主要是通过构造模糊测试工具,通过向编写的模糊测试工具输入一些随机的数据,观察目标程序对输入数据的相应,从而发现代码的问题。
3、然而,模糊测试方法在出现异常时,需要测试人员人工对造成异常的数据包进行分析,测试效率较低。
技术实现思路
1、基于此,有必要针对上述技术问题,提供一种能够提高代码测试效率的软件安全测试方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
2、第一方面,本申请提供了一种软件安全测试方法,包括:
3、通过符号执行引擎生成待测文件;
4、在通过待测程序对待测文件进行符号执行的过程中,获取待测程序的路径约束条件;
5、在确定待测程序出现栈溢出错误、且待测文件不满足链表触发条件的情况下,获取待测程序的溢出数据约束条件;
6、基于路径约束条件和溢出数据约束条件,对待测文件进行求解,得到目标文件,并基于目标文件进行软件安全测试。
7、在其中一个实施例中,通过待测程序对待测文件进行符号执行的过程,包括:
8、将待测文件中的数据标记为污点数据,得到符号化种子文件;
9
10、在其中一个实施例中,获取待测程序的路径约束条件的步骤,包括:
11、获取污点区域对应的传播路径,并将传播路径对应的路径约束条件,作为待测程序的路径约束条件。
12、在其中一个实施例中,通过待测程序对符号化种子文件进行动态符号执行之后,包括:
13、获取待测程序的栈堆内存布局;
14、确定待测程序中的关键指针数据;
15、对关键指针数据进行符号化检查,得到指针可控性约束条件;
16、根据指针可控性约束条件,对栈堆内存布局进行更新。
17、在其中一个实施例中,确定待测程序出现栈溢出错误的步骤,包括:
18、确定更新后的栈堆内存布局中的符号区域和写入对象区域;
19、分别获取符号区域相应的第一地址长度和写入对象区域相应的第二地址长度;
20、在第一地址长度大于第二地址长度的情况下,确定待测程序出现栈溢出错误。
21、在其中一个实施例中,基于目标文件进行软件安全测试的步骤,包括:
22、在运行待测程序的过程中,通过目标文件对待测程序进行攻击,并根据攻击的结果,得到待测程序的软件安全测试报告。
23、第二方面,本申请还提供了一种软件安全测试装置,包括:
24、测试文件生成模块,用于通过符号执行引擎生成待测文件;
25、路径约束获取模块,用于在通过待测程序对待测文件进行符号执行的过程中,获取待测程序的路径约束条件;
26、数据约束获取模块,用于在确定待测程序出现栈溢出错误、且待测文件不满足链表触发条件的情况下,获取待测程序的溢出数据约束条件;
27、软件安全测试模块,用于基于路径约束条件和溢出数据约束条件,对待测文件进行求解,得到目标文件,并基于目标文件进行软件安全测试。
28、第三方面,本申请还提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现第一方面中任意一项的方法步骤。
29、第四方面,本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现第一方面中任意一项的方法步骤。
30、第五方面,本申请还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现第一方面中任意一项的方法步骤。
31、上述软件安全测试方法、装置、计算机设备、存储介质和计算机程序产品,通过符号执行引擎生成待测文件,在通过待测程序对待测文件进行符号执行的过程中,获取待测程序的路径约束条件,在确定待测程序出现栈溢出错误、且待测文件不满足链表触发条件的情况下,获取待测程序的溢出数据约束条件,基于路径约束条件和溢出数据约束条件,对待测文件进行求解,得到目标文件,并基于目标文件进行软件安全测试,能够准确分析待测程序中的栈溢出问题,提高代码测试效率。
本文档来自技高网...【技术保护点】
1.一种软件安全测试方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,通过待测程序对所述待测文件进行符号执行的过程,包括:
3.根据权利要求2所述的方法,其特征在于,所述获取所述待测程序的路径约束条件,包括:
4.根据权利要求2所述的方法,其特征在于,所述通过待测程序对所述符号化种子文件进行动态符号执行之后,包括:
5.根据权利要求4所述的方法,其特征在于,确定所述待测程序出现栈溢出错误的步骤,包括:
6.根据权利要求1所述的方法,其特征在于,所述基于所述目标文件进行软件安全测试,包括:
7.一种软件安全测试装置,其特征在于,所述装置包括:
8.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述的方法的步骤。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
10.一种计算机程序
...【技术特征摘要】
1.一种软件安全测试方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,通过待测程序对所述待测文件进行符号执行的过程,包括:
3.根据权利要求2所述的方法,其特征在于,所述获取所述待测程序的路径约束条件,包括:
4.根据权利要求2所述的方法,其特征在于,所述通过待测程序对所述符号化种子文件进行动态符号执行之后,包括:
5.根据权利要求4所述的方法,其特征在于,确定所述待测程序出现栈溢出错误的步骤,包括:
6.根据权利要求1所述的方法,其特征在于,所述基于所述目标...
【专利技术属性】
技术研发人员:庄沃霖,曾炜,李艺枫,陈美伶,
申请(专利权)人:中国工商银行股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。