[发明专利]一种隐式污点传播系统及其方案无效
申请号: | 201110237712.1 | 申请日: | 2011-08-18 |
公开(公告)号: | CN102306098A | 公开(公告)日: | 2012-01-04 |
发明(设计)人: | 陈厅;张小松;郭世泽;王为尉;牛伟;戴卫国 | 申请(专利权)人: | 电子科技大学 |
主分类号: | G06F9/44 | 分类号: | G06F9/44 |
代理公司: | 成都华典专利事务所(普通合伙) 51223 | 代理人: | 杨保刚;徐丰 |
地址: | 611731 四川省成*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 污点 传播 系统 及其 方案 | ||
技术领域
本发明涉及一种污点数据分析技术,尤其涉及污点数据的传播系统和方案。
背景技术
污点分析技术是最近几年提出的新技术,目前在软件行为分析、软件缺陷分析、漏洞利用代码的自动生成、漏洞特征码的自动生成等领域都有应用。污点数据是指由用户指定的不可信的输入数据,例如:键盘鼠标输入、文件输入、网络输入等。在编程过程中,通常使用1位存储空间来标示某个内存区域或寄存器是否是污点数据:如果标识为1则表示是污点数据,如果为0则表示不是污点数据。
污点分析技术包含三个主要的功能模块:污点标记模块、污点传播模块和策略模块。污点标记模块的主要功能是将不可信输入打上标记,例如:程序读入一个文件后,将文件所在的内存区域都标识为污点。污点传播模块的主要功能是监视程序执行情况,传播污点信息,例如:一条语句int target=source+10;如果source是污点数据,那么这条语句执行后target也会变为污点数据。策略模块的主要功能动态监视程序执行情况是否与策略相符,并调用相应的处理流程,例如:函数调用strcpy(target,source);如果source是污点数据,那么就产生警报。
然而,现有的污点分析技术并不是完美的,现有的污点传播都是针对数据流传播进行监控。比如int target=source+10;source是数据,target也是数据,这条语句执行后target是否是污点直接由source是否是污点决定。本文中将这种污点传播方式称为显式污点传播。除此以外,控制流同样会导致污点传播,由以下的例1进行说明:
1 void func(int source) {
2 int target, other;
3 if(source == 20)
4 target = 1;
5 else
6 target = 2;
7 other = 3;
8 print(target);
9 print(other);
10 }
例1中,source为污点数据,程序执行完成后,target只能为1或者2,由于1和2是立即数,则必然不是污点数据,所以按照显式污点传播方案,target不是污点数据。但从程序语义上看,target究竟取1还是2是由source的值决定的,而source本身是污点数据,所以正确的结论是target是污点数据。可以看出,污点信息没有通过数据流进行传播,而是通过if…else…这样的控制流进行传播。本文中将这种通过控制流进行污点传播的方式称为隐式污点传播。
现有的污点分析技术只能对显式污点传播进行处理,这使得一些应该被标记为污点的数据没有被标记,最终使得策略模块在处理时,一些应该产生报警的情况没有产生报警。换句话说,现有污点分析技术无法处理隐式污点传播,因此整体漏报率偏高。
发明内容
针对上述现有技术,本发明要解决的技术问题是提供一种在污点分析技术中,能够对隐式污点传播进行处理,便于后续的策略模块处理的隐式污点传播系统。
为了解决上述技术问题,本发明采用如下技术方案:一种隐式污点传播系统,包括:
控制流图生成装置,用于对输入的被测试应用程序进行处理生成该应用程序的控制流图;
立即后支配树生成装置,用于对输入的被测试应用程序的控制流图进行处理输出该被测试应用程序的立即后支配树;
程序执行监控装置,用于执行被测试应用程序,并动态监控该被测试应用程序的执行情况;
污点控制流定位装置,用于定位导致污点传播的控制流,所述污点控制流为有某个或某些操作数是污点的分支语句;
污点控制数据识别装置,用于识别受到污点控制流影响的数据,所述污点控制数据为污点控制流节点到其立即后支配节点之间的所有语句的目的数据;
污点标记装置,用于对污点控制数据打上污点标志。
进一步地,所述程序执行监控装置能够获得被测试应用程序运行的当前指令、当前寄存器值、当前内存值、函数调用情况。
一种隐式污点传播方案,包括如下步骤:
(1)利用控制流图绘制软件获得被测试应用程序的控制流图;
(2)利用算法或函数库获得被测试应用程序的立即后支配树;
(3)利用程序执行监控装置将被测试程序运行起来,同时设置一个集合S为空集;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于电子科技大学,未经电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110237712.1/2.html,转载请声明来源钻瓜专利网。
- 上一篇:普适性车辆智能监控系统
- 下一篇:一种磨损原位测量的摩擦磨损试验机