一种二进制代码污点分析系统及方法与流程

文档序号:34112057发布日期:2023-05-10 22:34阅读:98来源:国知局
一种二进制代码污点分析系统及方法与流程

本发明涉及代码污点分析领域,特别是涉及一种二进制代码污点分析系统及方法。


背景技术:

1、研究代码插桩技术,动态追踪污染数据,对外部攻击进行预警并记录污点传播路径的具体算法。其中,程序插桩是在保证被测程序原有逻辑完整性的基础上在程序中插入一些探针(又称为“探测仪”,本质上就是进行信息采集的代码段,可以是赋值语句或采集覆盖信息的函数调用),通过探针的执行并抛出程序运行的特征数据,通过对这些数据的分析,可以获得程序的控制流和数据流信息,进而得到逻辑覆盖等动态信息,从而实现测试目的的方法。污点分析技术,又被称作信息流跟踪技术),是信息流分析技术的一种实践方法,该技术通过对系统中敏感数据进行标记,继而跟踪标记数据在程序中的传播,以检测系统安全问题。

2、现有的静态分析技术能够分析漏洞,但是只报告漏洞的列表,不能提供给动态以充分的制导信息。另外,由于静态分析的不可判定性,如果通过静态分析保证安全的漏洞检测,分析必须尽可能保守,会带来较大数量的漏报。例如,在保证安全性的基于静态分析的检测与修复工具leakfix中,仅检测出约30%的漏洞。而如果进行较为激进的分析,则会产生大量的误报,产生过多报错,不利于后续的人工检测。


技术实现思路

1、本发明的目的是提供一种二进制代码污点分析系统及方法,可提高漏洞检测的准确性。

2、为实现上述目的,本发明提供了如下方案:

3、一种二进制代码污点分析系统,包括:gui分析测试模组、in-memory fuzz模组以及污点分析模组;

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

5、所述in-memoryfuzz模组用于对目标函数进行指向性的模糊测试;

6、所述污点分析模组用于对模糊测试结果进行污点分析,展示bug的污点传播路径,进而进行展示和生成对应的报告。

7、可选地,所述gui分析测试模组包括:trace模组以及gui测试模组;

8、所述trace模组用于分离gui逻辑与程序的业务逻辑以及收集用户使用gui程序时产生的trace;

9、所述gui测试模组用于根据程序的业务逻辑输出由gui触发的业务逻辑函数序列。

10、可选地,所述gui分析测试模组基于的框架为qt框架。

11、可选地,所述in-memoryfuzz模组包括:forkserver功能模组和fuzz driver功能模组;

12、所述forkserver功能模组用于利用linux的fork系统调用,在待测程序执行到目标函数之前的地方插桩forkserver,保留待测程序执行前的程序状态,反复测试目标函数;

13、所述fuzzdriver功能模组用于对目标函数抽离出一个fuzzdriver来驱动测试的进行。

14、可选地,所述污点分析模组包括:分析模组和结果展示与报告生成模组;

15、所述分析模组利用跨函数定义使用关系分析技术、值依赖模型优化技术以及污染数据传播图构建技术对模糊测试结果进行污点分析,展示bug的污点传播路径;

16、所述结果展示与报告生成模组用于进行展示和生成对应的报告。

17、一种二进制代码污点分析方法,包括:

18、分离待测程序的gui逻辑与程序的业务逻辑;同时对gui进行操作,记录程序执行trace;在剥离gui逻辑之后,将用户感兴趣的包含在trace里的业务逻辑函数作为目标函数;

19、对目标函数进行指向性的模糊测试;

20、对模糊测试结果进行污点分析,展示bug的污点传播路径,进而进行展示和生成对应的报告。

21、可选地,所述对目标函数进行指向性的模糊测试,具体包括:

22、判断待测程序的的应用系统;

23、若所述应用系统为linux系统,则利用linux的fork系统调用,在待测程序执行到目标函数之前的地方插桩forkserver,保留待测程序执行前的程序状态,反复测试目标函数;

24、若所述应用系统为windows系统,则对目标函数抽离出一个fuzzdriver来驱动测试的进行。

25、可选地,所述污点分析包括:跨函数定义使用关系分析技术、值依赖模型优化技术以及污染数据传播图构建技术。

26、根据本发明提供的具体实施例,本发明公开了以下技术效果:

27、本发明所提供的一种二进制代码污点分析系统及方法,gui分析测试模组以及in-memoryfuzz模组得益于其动态测试的本质,提高检测的准确性。,3个模组相互耦合度极低,而组件内部的功能聚合度极高。从trace到针对目标函数的in-memoryfuzz,工具保障了用户选择目标函数的自由度,同时通过对gui与业务逻辑的自动分析分离,减少了用户的负担。



技术特征:

1.一种二进制代码污点分析系统,其特征在于,包括:gui分析测试模组、in-memoryfuzz模组以及污点分析模组;

2.根据权利要求1所述的一种二进制代码污点分析系统,其特征在于,所述gui分析测试模组包括:trace模组以及gui测试模组;

3.根据权利要求1或2所述的一种二进制代码污点分析系统,其特征在于,所述gui分析测试模组基于的框架为qt框架。

4.根据权利要求1所述的一种二进制代码污点分析系统,其特征在于,所述in-memoryfuzz模组包括:forkserver功能模组和fuzzdriver功能模组;

5.根据权利要求1所述的一种二进制代码污点分析系统,其特征在于,所述污点分析模组包括:分析模组和结果展示与报告生成模组;

6.一种二进制代码污点分析方法,其特征在于,包括:

7.根据权利要求6所述的一种二进制代码污点分析方法,其特征在于,所述对目标函数进行指向性的模糊测试,具体包括:

8.根据权利要求6所述的一种二进制代码污点分析方法,其特征在于,所述污点分析包括:跨函数定义使用关系分析技术、值依赖模型优化技术以及污染数据传播图构建技术。


技术总结
本发明公开一种二进制代码污点分析系统及方法,涉及代码污点分析领域,该系统中GUI分析测试模组用于分离GUI逻辑与程序的业务逻辑;同时对GUI进行操作,记录程序执行trace;在剥离GUI逻辑之后,将用户感兴趣的包含在trace里的业务逻辑函数作为目标函数;所述In‑MemoryFuzz模组用于对目标函数进行指向性的模糊测试;所述污点分析模组用于对模糊测试结果进行污点分析,展示bug的污点传播路径,进而进行展示和生成对应的报告。本发明可提高漏洞检测的准确性。

技术研发人员:于盟,张勇,程曦,贾晨宇,李珣
受保护的技术使用者:国家工业信息安全发展研究中心
技术研发日:
技术公布日:2024/1/12
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1