一种二进制代码污点分析系统及方法技术方案

技术编号:37534254 阅读:8 留言:0更新日期:2023-05-12 16:01
本发明专利技术公开一种二进制代码污点分析系统及方法,涉及代码污点分析领域,该系统中GUI分析测试模组用于分离GUI逻辑与程序的业务逻辑;同时对GUI进行操作,记录程序执行trace;在剥离GUI逻辑之后,将用户感兴趣的包含在trace里的业务逻辑函数作为目标函数;所述In

【技术实现步骤摘要】
一种二进制代码污点分析系统及方法


[0001]本专利技术涉及代码污点分析领域,特别是涉及一种二进制代码污点分析系统及方法。

技术介绍

[0002]研究代码插桩技术,动态追踪污染数据,对外部攻击进行预警并记录污点传播路径的具体算法。其中,程序插桩是在保证被测程序原有逻辑完整性的基础上在程序中插入一些探针(又称为“探测仪”,本质上就是进行信息采集的代码段,可以是赋值语句或采集覆盖信息的函数调用),通过探针的执行并抛出程序运行的特征数据,通过对这些数据的分析,可以获得程序的控制流和数据流信息,进而得到逻辑覆盖等动态信息,从而实现测试目的的方法。污点分析技术,又被称作信息流跟踪技术),是信息流分析技术的一种实践方法,该技术通过对系统中敏感数据进行标记,继而跟踪标记数据在程序中的传播,以检测系统安全问题。
[0003]现有的静态分析技术能够分析漏洞,但是只报告漏洞的列表,不能提供给动态以充分的制导信息。另外,由于静态分析的不可判定性,如果通过静态分析保证安全的漏洞检测,分析必须尽可能保守,会带来较大数量的漏报。例如,在保证安全性的基于静态分析的检测与修复工具LeakFix中,仅检测出约30%的漏洞。而如果进行较为激进的分析,则会产生大量的误报,产生过多报错,不利于后续的人工检测。

技术实现思路

[0004]本专利技术的目的是提供一种二进制代码污点分析系统及方法,可提高漏洞检测的准确性。
[0005]为实现上述目的,本专利技术提供了如下方案:
[0006]一种二进制代码污点分析系统,包括:GUI分析测试模组、In

Memory Fuzz模组以及污点分析模组;
[0007]所述GUI分析测试模组用于分离GUI逻辑与程序的业务逻辑;同时对GUI进行操作,记录程序执行trace;在剥离GUI逻辑之后,将用户感兴趣的包含在trace里的业务逻辑函数作为目标函数;
[0008]所述In

MemoryFuzz模组用于对目标函数进行指向性的模糊测试;
[0009]所述污点分析模组用于对模糊测试结果进行污点分析,展示bug的污点传播路径,进而进行展示和生成对应的报告。
[0010]可选地,所述GUI分析测试模组包括:trace模组以及GUI测试模组;
[0011]所述trace模组用于分离GUI逻辑与程序的业务逻辑以及收集用户使用GUI程序时产生的trace;
[0012]所述GUI测试模组用于根据程序的业务逻辑输出由GUI触发的业务逻辑函数序列。
[0013]可选地,所述GUI分析测试模组基于的框架为QT框架。
[0014]可选地,所述In

MemoryFuzz模组包括:Forkserver功能模组和fuzz driver功能模组;
[0015]所述Forkserver功能模组用于利用Linux的fork系统调用,在待测程序执行到目标函数之前的地方插桩forkserver,保留待测程序执行前的程序状态,反复测试目标函数;
[0016]所述fuzzdriver功能模组用于对目标函数抽离出一个fuzzdriver来驱动测试的进行。
[0017]可选地,所述污点分析模组包括:分析模组和结果展示与报告生成模组;
[0018]所述分析模组利用跨函数定义使用关系分析技术、值依赖模型优化技术以及污染数据传播图构建技术对模糊测试结果进行污点分析,展示bug的污点传播路径;
[0019]所述结果展示与报告生成模组用于进行展示和生成对应的报告。
[0020]一种二进制代码污点分析方法,包括:
[0021]分离待测程序的GUI逻辑与程序的业务逻辑;同时对GUI进行操作,记录程序执行trace;在剥离GUI逻辑之后,将用户感兴趣的包含在trace里的业务逻辑函数作为目标函数;
[0022]对目标函数进行指向性的模糊测试;
[0023]对模糊测试结果进行污点分析,展示bug的污点传播路径,进而进行展示和生成对应的报告。
[0024]可选地,所述对目标函数进行指向性的模糊测试,具体包括:
[0025]判断待测程序的的应用系统;
[0026]若所述应用系统为Linux系统,则利用Linux的fork系统调用,在待测程序执行到目标函数之前的地方插桩forkserver,保留待测程序执行前的程序状态,反复测试目标函数;
[0027]若所述应用系统为Windows系统,则对目标函数抽离出一个fuzzdriver来驱动测试的进行。
[0028]可选地,所述污点分析包括:跨函数定义使用关系分析技术、值依赖模型优化技术以及污染数据传播图构建技术。
[0029]根据本专利技术提供的具体实施例,本专利技术公开了以下技术效果:
[0030]本专利技术所提供的一种二进制代码污点分析系统及方法,GUI分析测试模组以及In

MemoryFuzz模组得益于其动态测试的本质,提高检测的准确性。,3个模组相互耦合度极低,而组件内部的功能聚合度极高。从trace到针对目标函数的In

MemoryFuzz,工具保障了用户选择目标函数的自由度,同时通过对GUI与业务逻辑的自动分析分离,减少了用户的负担。
附图说明
[0031]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0032]图1为本专利技术所提供的一种二进制代码污点分析系统结构示意图。
具体实施方式
[0033]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0034]本专利技术的目的是提供一种二进制代码污点分析系统及方法,可提高漏洞检测的准确性。
[0035]为使本专利技术的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本专利技术作进一步详细的说明。
[0036]如图1所示,本专利技术所提供的一种二进制代码污点分析系统,括:GUI分析测试模组、In

MemoryFuzz模组以及污点分析模组;
[0037]所述GUI分析测试模组用于分离GUI逻辑与程序的业务逻辑;同时对GUI进行操作,记录程序执行trace;在剥离GUI逻辑之后,将用户感兴趣的包含在trace里的业务逻辑函数作为目标函数;
[0038]所述In

MemoryFuzz模组用于对目标函数进行指向性的模糊测试;
[0039]所述污点分析模组用于对模糊测试结果进行污点分析,展示bug的污本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种二进制代码污点分析系统,其特征在于,包括:GUI分析测试模组、In

MemoryFuzz模组以及污点分析模组;所述GUI分析测试模组用于分离GUI逻辑与程序的业务逻辑;同时对GUI进行操作,记录程序执行trace;在剥离GUI逻辑之后,将用户感兴趣的包含在trace里的业务逻辑函数作为目标函数;所述In

MemoryFuzz模组用于对目标函数进行指向性的模糊测试;所述污点分析模组用于对模糊测试结果进行污点分析,展示bug的污点传播路径,进而进行展示和生成对应的报告。2.根据权利要求1所述的一种二进制代码污点分析系统,其特征在于,所述GUI分析测试模组包括:trace模组以及GUI测试模组;所述trace模组用于分离GUI逻辑与程序的业务逻辑以及收集用户使用GUI程序时产生的trace;所述GUI测试模组用于根据程序的业务逻辑输出由GUI触发的业务逻辑函数序列。3.根据权利要求1或2所述的一种二进制代码污点分析系统,其特征在于,所述GUI分析测试模组基于的框架为QT框架。4.根据权利要求1所述的一种二进制代码污点分析系统,其特征在于,所述In

MemoryFuzz模组包括:Forkserver功能模组和fuzzdriver功能模组;所述Forkserver功能模组用于利用Linux的fork系统调用,在待测程序执行到目标函数之前的地方插桩forkserver,保留待测程序执行前的程序状态,反复测试目标函数;所述fuzz...

【专利技术属性】
技术研发人员:于盟张勇程曦贾晨宇李珣
申请(专利权)人:国家工业信息安全发展研究中心
类型:发明
国别省市:

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

1