【技术实现步骤摘要】
一种基于字节敏感能量分配的漏洞类型导向模糊测试方法和系统
[0001]本专利技术涉及软件模糊测试
,尤其涉及一种基于字节敏感能量分配的漏洞类型导向模糊测试方法和系统。
技术介绍
[0002]随着互联网技术的蓬勃发展,计算机软件被广泛应用于日常生活、企业生产、商务运营以及政府管理。然而,在互联网技术极大促进经济社会发展的同时,也带来了相当多的风险挑战。相对突出的问题表现在高危零日漏洞以及高级可持续威胁攻击的数量日益增长,信息系统面临的漏洞威胁形势更加严峻,而计算机系统安全防护意识仍然相对薄弱。软件安全问题已成为互联网蓬勃发展背后涌动的暗流,如何快速且高效地发现软件漏洞已成为互联网相关行业亟需解决的一大难题。
[0003]为定位软件漏洞,传统的静态代码分析技术往往依赖于专家经验,根据对漏洞的现有认知总结确定漏洞规则/模式,进一步基于总结的漏洞规则在词法分析、语法分析、语义分析等编译层次上进行测试代码的错误审核与排查。考虑到专家经验的局限性,静态代码分析技术存在漏洞检测误报率高、漏洞定位不准确等问题。为高效识别软件中可能存在的漏洞,自动化漏洞挖掘技术在学术界与工业界备受关注。其中,一种被广泛应用的模糊测试方法是“基于输入突变的灰盒模糊测试”。基于输入突变的灰盒模糊测试工具通过特定的变异操作生成大量的目标程序测试用例,将测试用例作为目标程序输入,执行目标程序并监控运行状态,并将触发了目标程序异常行为的测试用例保存到本地以供后续人工分析,此外,其将触发了新的代码执行路径的测试用例添加到保存的样例集合,根据设定的能
【技术保护点】
【技术特征摘要】
1.一种基于字节敏感能量分配的漏洞类型导向模糊测试方法,其特征在于,包括以下步骤:(1)对目标程序进行静态分析,获取不同类型的可疑漏洞的行号信息,用于为后续的编译时插桩做初步准备工作;(2)在编译目标程序的同时,依照步骤(1)获取的行号信息,跟踪并定位不同类型的可疑漏洞对应的基本块,根据漏洞类型展开不同形式的插桩,用于为后续模糊测试的能量分配提供指导信息;(3)建立若干特定于漏洞类型的种子文件队列,并对每个种子文件队列中的测试用例顺序展开模糊测试,记录测试用例执行完成后对应不同漏洞类型的插桩所返回的指导信息,按照漏洞类型分别计算每个测试用例对应的潜在性能分数;(4)依照步骤(3)中计算得到的测试用例的潜在性能分数,对各个特定漏洞类型的种子文件队列进行更新,更新方式为:针对各个特定漏洞类型,将测试用例的潜在性能分数从高到低进行排序,优先执行潜在性能分数高的测试用例;在更新后的当前种子文件队列中,为排序靠前的测试用例分配更高的能量;(5)在种子变异阶段,字节变异后产生的新测试用例如果能够在对应的漏洞类型上产生更高的潜在性能分数,则为对应字节分配更高的权重;(6)重复步骤(3)
‑
(5),直至模糊测试结束。2.根据权利要求1所述的基于字节敏感能量分配的漏洞类型导向模糊测试方法,其特征在于,所述的步骤(1)中通过静态分析收集的信息包括:缓冲区溢出所在行号、释放后重用中“定义
‑
释放
‑
重用”所在的三个行号位置、重复释放中“释放
‑
再释放”所在的两个行号位置。3.根据权利要求1所述的基于字节敏感能量分配的漏洞类型导向模糊测试方法,其特征在于,所述的步骤(2)中针对不同漏洞类型的插桩方式如下:(2
‑
1)针对缓冲区溢出漏洞,判断是否满足:对应行号的基本块为循环所在的基本块,且该基本块内存在内存写操作,且内存写操作的目标地址依赖于变化的指针值/偏移;若满足,以插桩的形式记录该基本块的循环次数;(2
‑
2)针对释放后重用漏洞,根据步骤(1)的静态分析结果得到一系列<定义
‑
释放
‑
重用>对;按照先后顺序进行排序标号,针对每一个<定义
‑
释放
‑
重用>对,在三个行号对应的基本块位置插桩,用于标记当前序号对应的<定义
‑
释放
‑
重用>对中被测试用例触及到的部分;(2
‑
3)针对重复释放漏洞,根据步骤(1)的静态分析结果得到一系列<释放
‑
再释放>对;按照先后顺序进行排序标号,针对每一个<释放
‑
再释放>对,在两个行号对应的基本块位置插桩,用于标记当前序号对应的<释放
‑
再释放>对中被测试用例触及到的部分。4.根据权利要求1所述的基于字节敏感能量分配的漏洞类型导向模糊测试方法其特征在于,所述的步骤(3)包括:对原始的特定于漏洞类型的种子文件队列顺序展开模糊测试,依照种子执行完成后插桩所返回的引导信息,得到当前种子在各项漏洞类型上的潜在性能分数;针对释放后重用漏洞,潜在性能分数需要满足的条件为:针对给定的<定义
‑
释放
‑
重用>对,考虑到触发释...
【专利技术属性】
技术研发人员:纪守领,张凌铭,张旭鸿,陈建海,
申请(专利权)人:尚蝉浙江科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。