System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种面向堆内存资源耗尽的软件漏洞挖掘方法技术_技高网

一种面向堆内存资源耗尽的软件漏洞挖掘方法技术

技术编号:40656184 阅读:3 留言:0更新日期:2024-03-13 21:33
本发明专利技术属于网络空间安全技术领域,尤其涉及一种面向堆内存资源耗尽的软件漏洞挖掘方法。本发明专利技术通过对目标程序的静态语义解析,基于数据流语义依赖实现高效标定堆内存消耗的代码区的位置并以集合的方式进行记录,将该代码体集合作为优先导向进行漏洞挖掘,优先挖掘内存消耗型漏洞,在漏洞挖掘过程中,纳入考虑其他类型漏洞的挖掘需求,形成漏洞的优先序,兼顾所需与通用型漏洞的挖掘。本发明专利技术可有效解决堆内存消耗型漏洞难以触发的难题,不仅弥补已有技术成果的在堆消耗型漏洞适用性短板,而且对数字主权空间的软件安全稳定运行方面具有重大意义。

【技术实现步骤摘要】

本专利技术属于网络空间安全,尤其涉及一种面向堆内存资源耗尽的软件漏洞挖掘方法


技术介绍

1、随着网络技术的高速发展与数字化时代进程的推进,网络攻击也变得越来越普遍,新的攻击机理、新的攻击技术使得网络空间的安全威胁态势进一步趋向严峻。随着攻击技术与防御手段的纠缠迭代演进,攻击者越发依赖目标系统漏洞的获取,特别是加大投入对未知漏洞的挖掘,更加追求0day漏洞的发现与利用,因此有价值的未知漏洞亦然成为攻防双方占有优势地位的重要保障因素。从防御者视角看,作为软件的研发方,尽早发现漏洞,则可以针对性的开发安全补丁并下发软件的使用方,捍卫研发方的安全可用性;作为软件的部署使用角色,尽早发现漏洞,则可以及时建立应对处置策略,降低潜在的经济损失和确保企业数字资产的安全性。从以上攻防两个维度,都充分说明了研究软件漏洞挖掘方法的现实重要意义、必要性、紧迫性。

2、软件漏洞挖掘是通过研究测试样本的种子生成策略和畸变策略,连续形成大量畸形测试样本作为目标软件的输入,捕获目标软件的异常为最终目的,由此发现目标软件的潜在未知漏洞。近年来,研究人员对软件的漏洞挖掘技术进行了大量研究,并提出实现软件漏洞挖掘的方法,又可分为协议漏洞挖掘和软件漏洞挖掘两大类。

3、其中,已有的专注于软件漏洞挖掘方法,例如:专利申请名称为“一种基于强化学习的漏洞挖掘技术”,专利申请号为cn202011507774.5,申请公布号为cn114647566a,该申请运用强化学习的方法来优化变异的策略,以多摇臂赌博机问题为模型,记录不同变异方式产生的输入在目标程序中的执行效果,利用探索-利用算法自适应地学习变异操作结果的概率分布情况,智能地进行变异操作策略调整。

4、再如:专利申请名称为“一种漏洞挖掘方法及系统”,专利申请号为2017112132838,申请公布号为cn107835189a,该申请通过事先采集工业控制系统中特定对象的图像,以图像对比为核心。在向被测系统发送测试用例后,采集监控对象的状态图像,与预存的正常状态下的对象图像进行比对,判断出工业控制系统是否存在异常状态以及异常原因。

5、再如:专利名称为“基于大数据漏洞挖掘的对象输出方法及大数据挖掘系统”,专利号为2021110141044,授权公告号为cn113688400b,该专利技术通过获取第一大数据漏洞挖掘网络挖掘的漏洞挖掘分布,在第二大数据漏洞挖掘网络时,将漏洞挖掘分布添加到临时漏洞分布输出队列,并基于临时漏洞分布输出队列中添加的漏洞挖掘分布,与用于存储漏洞挖掘分布对应的中转输出存储区中存储的漏洞挖掘分布,确定指定挖掘路径对应的目标输出漏洞挖掘分布。

6、再如:专利名称为“基于错误场景生成的物联网固件漏洞挖掘方法及系统”,专利号为2021100592146,授权公告号为cn112380542b,该专利技术采用二进制固件安全薄弱点定位方法识别出待测固件的程序中与偶发异常事件相关的函数,定位待测固件中的待测试点,动态地生成测试样例,以期触发安全薄弱点代码的执行。

7、再如:专利申请名称为“一种跨平台固件二进制代码漏洞挖掘的方法”,专利申请号为2021116239690,申请公布号为cn114329487a,该申请对固件二进制代码反汇编后,提取汇编代码的特征描述;将所述特征描述作为聚类算法的输入,判断所述特征描述是否属于任一已知簇;若是,则更新所有已知簇的聚类中心点;若否,则形成新的簇以及新的簇对应的聚类中心点;根据所有簇的聚类中心点间的距离变化,确定所述固件的漏洞类型。

8、再如:专利申请名称为“一种基于强化学习的scada软件漏洞挖掘方法”,专利申请号为cn202211332080.1,申请公布号为cn115687114a,该申请基于强化学习的测试用例生成、算法多参数可调的scada软件的漏洞挖掘方法。

9、再如:专利申请名称为“一种漏洞挖掘方法,装置及电子设备”,专利申请号为cn202111280197.5,申请公布号为cn114117442a,该申请获取应用程序中的多个数据处理模块,根据数据处理模块确定数据传输链路对数据传输链路中的数据处理模块进行模块漏洞检测,得到模块漏洞检测结果,根据模块漏洞检测结果确定针对数据传输链路的链路漏洞检测结果。

10、然而,软件的漏洞挖掘方法是一种持续不断演进的技术,攻防两方的研究人员仍需不断追求更高效的挖掘策略和专注具体技术细节的优化。

11、经上述分析发现,现有的软件漏洞挖掘方法存在以下几方面的技术缺点:

12、(1)上述现有方法都是全类型漏洞的挖掘方法,并非是针对某一具体类型的漏洞。

13、(2)针对特定类型的漏洞需求,未考虑优先性,因此现有漏洞挖掘方法对特定所需漏洞的挖掘效率相对较低。

14、(3)堆内存资源消耗型漏洞的触发及其困难,因为非大量堆内存泄漏则无法触发,即轻量级的堆资源分配无法触发,所以现有漏洞挖掘方法对该类型漏洞的挖掘效率极低。


技术实现思路

1、针对上述现有技术中存在的不足之处,本专利技术提供了一种面向堆内存资源耗尽的软件漏洞挖掘方法。其目的是为了实现优先定位挖掘软件中堆分配操作热点代码区块的内存耗尽型漏洞,补足当前漏洞挖掘方法在此点的触发短板,在该型漏洞挖掘过程中,纳入考虑其他类型漏洞的挖掘需求,形成漏洞的优先序,兼顾所需与通用型漏洞的挖掘的专利技术目的。

2、本专利技术为实现上述目的所采用的技术方案如下:

3、一种面向堆内存资源耗尽的软件漏洞挖掘方法,包括以下步骤:

4、步骤1.对目标程序进行静态分析,基于cpg图中的数据依赖标定疑似堆内存消耗型代码区块的位置;

5、步骤2.对疑似堆内存消耗型代码区块的热点函数位置进行插桩,以便运行时输出状态信息;

6、步骤3.初始测试样本集,抽取输入样本作为样本种子;

7、步骤4.利用样本种子的随机畸变生成测试样本集;

8、步骤5.利用目标程序处理输入样本;

9、步骤6.目标程序依次处理输入样本,监视目标程序在处理中是否产生崩溃;

10、步骤7:检测本轮测试样本集是否还有待测试样本;

11、步骤8,检测如下条件是否满足任何一个:疑似代码区未测完、发现新路径、预置时间未到;如果是,则转步骤4;如果否,则输出lib库。

12、更进一步的,所述目标程序依次处理输入样本,监视目标程序在处理中是否产生崩溃;

13、如果是,则该输入样本入库lib,转步骤5继续测试剩余的输入样本;如果否,根据第5步骤记录的执行信息,对当前输入样本以堆操作为优先考虑因素进行评价测算,并以评价值在本轮已测试样本中进行排序,构成有序的测试样本集;

14、所述检测本轮测试样本集是否还有待测试样本;如果是,转步骤5;如果否,将步骤6排序好的测试样本集合的前n个测试样本抽取,作为新的样本种子,转步骤8。

15、一种面向堆内存资源耗尽的软件漏洞挖掘装本文档来自技高网...

【技术保护点】

1.一种面向堆内存资源耗尽的软件漏洞挖掘方法,其特征是:包括以下步骤:

2.根据权利要求1所述的一种面向堆内存资源耗尽的软件漏洞挖掘方法,其特征是:所述目标程序依次处理输入样本,监视目标程序在处理中是否产生崩溃;

3.一种面向堆内存资源耗尽的软件漏洞挖掘装置,其特征是:包括:

4.根据权利要求3所述的一种面向堆内存资源耗尽的软件漏洞挖掘方法,其特征是:所述代码静态分析模块,基于分析工具输出代码属性图CPG,内涵调用图CG、流控图CFG和数据依赖图DDG,通过污点分析技术建立参数、堆操作函数参数之间的数据依赖和控制依赖,根据如上显示或隐式依赖,构建堆指针和堆指针之间的赋值等价关系,由此基于操作的数据语义解析,标定目标程序中疑似堆内存消耗型代码区块的位置。

5.根据权利要求3所述的一种面向堆内存资源耗尽的软件漏洞挖掘方法,其特征是:所述疑似热点代码插桩模块,在静态分析阶段,使用LLVM在疑似堆内存消耗型代码块内的函数,包括malloc堆内存分配函数、calloc堆内存分配函数、realloc堆内存分配函数、free堆内存释放函数、new堆内存分配函数、delete堆内存释放函数及其变体函数的调用点进行插桩,为后续在根据输入样本的执行态综合评测进行优秀样本终止的筛选。

6.根据权利要求3所述的一种面向堆内存资源耗尽的软件漏洞挖掘方法,其特征是:所述输入样本执行状态分析模块,根据插桩点注入的记录信息代码,包括:

7.根据权利要求3所述的一种面向堆内存资源耗尽的软件漏洞挖掘方法,其特征是:所述样本种子优化筛选模块,从当前一轮的测试样本中选择下一轮的测试种子,进行考量一是对消耗型堆操作的测试样本优先级提升,优先使之作为样本种子;二是保留其他类型的优秀种子,以保持对其他非堆内存消耗型种子筛选的兼顾性;包括:用于在状态分析模块得到的堆分配定量记录,分配的堆内存越大,该输入样本的优先级越高;

8.根据权利要求3所述的一种面向堆内存资源耗尽的软件漏洞挖掘方法,其特征是:所述样本种子随机畸变模块,利用样本种子的随机畸变生成测试样本集;由样本种子进行畸变生成大量的用于漏洞测试的输入样本,畸变策略包含bitflip位翻转、arithmetic简单算术、interest边界值、dictionary用特殊内容替换、havoc随机畸变和splice拼接,采用随机算法调用如上方法对样本种子进行畸变处理。

9.一种计算机设备,包括存储介质、处理器及存储在存储介质上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1-8中任一权利要求所述的一种面向堆内存资源耗尽的软件漏洞挖掘方法的步骤。

10.一种计算机存储介质,其特征是:所述计算机存储介质上存有计算机程序,所述计算机程序被处理器执行时实现权利要求1-8中任一权利要求所述的一种面向堆内存资源耗尽的软件漏洞挖掘方法的步骤。

...

【技术特征摘要】

1.一种面向堆内存资源耗尽的软件漏洞挖掘方法,其特征是:包括以下步骤:

2.根据权利要求1所述的一种面向堆内存资源耗尽的软件漏洞挖掘方法,其特征是:所述目标程序依次处理输入样本,监视目标程序在处理中是否产生崩溃;

3.一种面向堆内存资源耗尽的软件漏洞挖掘装置,其特征是:包括:

4.根据权利要求3所述的一种面向堆内存资源耗尽的软件漏洞挖掘方法,其特征是:所述代码静态分析模块,基于分析工具输出代码属性图cpg,内涵调用图cg、流控图cfg和数据依赖图ddg,通过污点分析技术建立参数、堆操作函数参数之间的数据依赖和控制依赖,根据如上显示或隐式依赖,构建堆指针和堆指针之间的赋值等价关系,由此基于操作的数据语义解析,标定目标程序中疑似堆内存消耗型代码区块的位置。

5.根据权利要求3所述的一种面向堆内存资源耗尽的软件漏洞挖掘方法,其特征是:所述疑似热点代码插桩模块,在静态分析阶段,使用llvm在疑似堆内存消耗型代码块内的函数,包括malloc堆内存分配函数、calloc堆内存分配函数、realloc堆内存分配函数、free堆内存释放函数、new堆内存分配函数、delete堆内存释放函数及其变体函数的调用点进行插桩,为后续在根据输入样本的执行态综合评测进行优秀样本终止的筛选。

6.根据权利要求3所述的一种面向堆内存资源耗尽的软件漏洞挖掘方法,其特征是:所述输入样本执行状态分析模块,根据插桩点注入...

【专利技术属性】
技术研发人员:王磊李桐杨超宋首友周小明雷振江吕秋瑞张鑫浩刘扬任帅阮强
申请(专利权)人:国网辽宁省电力有限公司电力科学研究院
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1