CN102306098A - 一种隐式污点传播系统及其方案 - Google Patents

一种隐式污点传播系统及其方案 Download PDF

Info

Publication number
CN102306098A
CN102306098A CN201110237712A CN201110237712A CN102306098A CN 102306098 A CN102306098 A CN 102306098A CN 201110237712 A CN201110237712 A CN 201110237712A CN 201110237712 A CN201110237712 A CN 201110237712A CN 102306098 A CN102306098 A CN 102306098A
Authority
CN
China
Prior art keywords
stain
application program
control flow
taint
statement
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201110237712A
Other languages
English (en)
Inventor
陈厅
张小松
郭世泽
王为尉
牛伟
戴卫国
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
No54 Inst Headquarters Of General Staff P L A
University of Electronic Science and Technology of China
Original Assignee
University of Electronic Science and Technology of China
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by University of Electronic Science and Technology of China filed Critical University of Electronic Science and Technology of China
Priority to CN201110237712A priority Critical patent/CN102306098A/zh
Publication of CN102306098A publication Critical patent/CN102306098A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种隐式污点传播系统及其方案,系统包括控制流图生成装置,用于对输入的被测试应用程序进行处理生成该应用程序的控制流图;立即后支配树生成装置,用于对输入的被测试应用程序的控制流图进行处理输出该被测试应用程序的立即后支配树;程序执行监控装置,用于执行被测试应用程序,并动态监控该被测试应用程序的执行情况;污点控制流定位装置,用于定位导致污点传播的控制流,所述污点控制流为有某个或某些操作数是污点的分支语句;污点控制数据识别装置,用于识别受到污点控制流影响的数据,所述污点控制数据为污点控制流节点到其立即后支配节点之间的所有语句的目的数据;污点标记装置,用于对污点控制数据打上污点标志。

Description

一种隐式污点传播系统及其方案
技术领域
本发明涉及一种污点数据分析技术,尤其涉及污点数据的传播系统和方案。
背景技术
污点分析技术是最近几年提出的新技术,目前在软件行为分析、软件缺陷分析、漏洞利用代码的自动生成、漏洞特征码的自动生成等领域都有应用。污点数据是指由用户指定的不可信的输入数据,例如:键盘鼠标输入、文件输入、网络输入等。在编程过程中,通常使用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为空集;
(4)获得被测试应用程序的当前语句;
(5)如果当前语句是污点控制流,则把当前语句的标号加入集合S,如果集合S不为空,将当前语句的目的数据标记为污点数据,如果当前语句是集合S中某个语句的直接后支配节点,则将该语句标号从S中删除,如果程序执行完毕,则转到下一步骤(6),否则继续执行程序,转到步骤(4);
(6)结束。
进一步地,所述控制流图绘制软件为IDA Pro。
进一步地,所述函数库为boost graph library。
进一步地,所述程序执行监控装置采用调试或插桩方法实现。
进一步地,所述插桩工具为Pin。
与现有技术相比,本发明具有以下有益效果:能够识别污点控制流并在此基础上实现对污点控制数据的标记,解决污点分析中的隐式污点传播问题,便于后续的策略模块处理,避免一些应该产生报警的情况没有产生报警的情况出现,降低漏报率。
附图说明
图1为本发明实施例的控制流图;
图2为本发明实施例的立即后支配树。
具体实施方式
下面将结合附图及具体实施方式对本发明作进一步的描述。
一种隐式污点传播系统,包括如下装置:
1.控制流图生成装置;
本装置的功能是生成被测试应用程序的控制流图,本实施例生成背景技术中例1的控制流图。其中,程序的控制流图G = (N, E, entry, exit),N是控制流图G中的节点结合,控制流图中的一个节点代表程序中的一个基本块。基本块是程序中的语句序列,在一个基本块中,程序只能从第一条语句逐条执行到最后一条语句,基本块的最后一条语句完成从当前基本块到下一个基本块的控制流转移。E是有向边的集合,每一条边代表了一个控制流转移;entry是程序的第一个基本块;exit是程序的最后一个基本块。图1是例1的控制流图。
如图1中所示,语句1是整个控制流图的entry节点;语句3处有控制流转移,如果语句3为真,则执行语句4,如果为假则执行语句6;之后顺序执行,到语句10(exit节点)时退出。
控制流图是程序分析的基础,有大量的算法可以绘制程序的控制流图,此外还有一些成熟的工具可以绘制控制流图。在本实施例中,采用商业软件IDA Pro来绘制控制流图。
2.立即后支配树生成装置
本装置的功能是生成被测试程序的立即后支配树,本装置的输入是程序的控制流图,输出是程序的立即后支配树。其中,在控制流图G = (N, E, entry, exit)中,一条从节点n 1到节点nv 的路径被定义为有向边的序列(n 1, n 2), (n 2, n 3), …, (nv -1, nv ), "1≤i<v, v≥1, (ni -1, ni ) ÎE。一个节点w后支配一个节点v,当且仅当所有从vexit的路径都经过w。节点m立即后支配节点n,当且仅当节点m支配n并且不存在节点o满足n后支配oo后支配m
立即后支配树是一颗具有根节点的树,必须满足下面三点:(1)立即后支配树的节点和控制流图的节点完全一致;(2)立即后支配树的根节点是控制流图的exit结点;(3)立即后支配树中每一个节点立即后支配它的直接后代。一个节点n 1n 2的直接后代当且仅当(n 2, n 1) ÎE。图2是例1的立即后支配树。
立即后支配树是很多研究领域的基础,有大量的算法能够计算程序的立即后支配树,也能够找到现成的函数库对计算立即后支配树提供支持。在本实施例中,采用boost graph library,该库采用的是一种高效的算法计算立即后支配树。
3.程序执行监控装置。
本装置能够将被分析程序运行起来,并且能够对被分析程序的执行情况进行监控。例如,本装置能够获得程序运行的当前指令、当前寄存器值、当前内存值、函数调用情况等,这些信息是完成污点分析技术必须的信息。同时,这些信息也是污点控制流定位装置和污点控制数据识别装置所必须的。有多种方式可以实现对程序执行情况进行监视,比较常见的有调试、插桩等。在本实施例中,采用的是Intel公司的插桩工具Pin。
4.污点控制流定位装置。
本装置的功能是定位那些能够导致污点传播的控制流。界定污点控制流和非污点控制流的标准是:有某个或某些操作数是污点的分支语句是污点控制流,其他的则是非污点控制流。以例1为例,如果source是污点,那么语句3就是污点控制流,反之则不是污点控制流。
5.污点控制数据识别装置。
本装置的功能是识别那些受到污点控制流影响的数据。其核心思想是:污点控制流节点到其立即后支配节点之间的所有语句的目的数据都是污点控制数据。以例1为例,如果source是污点,语句3则是污点控制流,语句7是语句3的立即后支配节点,所以语句3到语句7之间所有语句,即:语句4和语句6的目的数据target是污点控制数据,而语句7的目的数据other则不是污点控制数据。
6.污点标记模块。
本装置的功能是将污点控制数据打上污点标志。本实施例用1位信息来标识污点信息。对于寄存器而言,每个寄存器都对应一个污点标志位,当标志位为1则表示该寄存器是污点数据,反之则不是污点数据。对于内存而言,每个字节都对应一个污点标志位,当标志位为1则表示该内存字节是污点数据,反之则不是污点数据。
上述的隐式污点传播方案,包括以下步骤:
(1)利用Ida Pro获得被测试程序的控制流图;
(2)利用boost graph library获得被测试程序的立即后支配树;
(3)利用Pin将被测试程序运行起来,设置一个集合S为空集;
(4)获得被测试应用程序的当前语句;
(5)如果当前语句是污点控制流,则把当前语句的标号加入集合S,如果集合S不为空,将当前语句的目的数据标记为污点数据,如果当前语句是集合S中某个语句的直接后支配节点,则将该语句标号从S中删除,如果程序执行完毕,则转到步骤(6),否则继续执行程序,转到步骤(4);
(6)结束。
结合例1,对上述实现步骤进行说明。第一步,通过Ida Pro获得例1的控制流图(如图1)。第二步,获得例1的立即后支配树(如图2)。第三步,用Pin把例1运行起来,集合S为空集。第四步,获得当前语句为语句1。第五步,语句1不是污点控制流且集合S为空,所以执行语句2,转到第四步。语句2的处理情况和语句1相同,之后执行语句3。由于语句3是污点控制流,将{3}加入集合S。随后执行语句4(或者语句5,语句3为真则执行语句4,否则执行语句5)。
由于S不为空,语句4(或者语句5)的目的数据target被标记为污点。随后执行语句7,由于语句7是语句3的立即后支配节点,因此将{3}从S中删除,此时S为空。由于S为空,语句7的目的数据other不会被打上污点标记。语句8、9的处理情况和语句1、2相同。语句10执行后,整个程序运行完毕。
本发明的保护范围不仅仅局限于上述实施例所述的方式,凡是采用本发明思想的实施方式都在本发明的保护范围内。

Claims (7)

1.一种隐式污点传播系统,其特征在于,包括:
控制流图生成装置,用于对输入的被测试应用程序进行处理生成该应用程序的控制流图;
立即后支配树生成装置,用于对输入的被测试应用程序的控制流图进行处理输出该被测试应用程序的立即后支配树;
程序执行监控装置,用于执行被测试应用程序,并动态监控该被测试应用程序的执行情况;
污点控制流定位装置,用于定位导致污点传播的控制流,所述污点控制流为有某个或某些操作数是污点的分支语句;
污点控制数据识别装置,用于识别受到污点控制流影响的数据,所述污点控制数据为污点控制流节点到其立即后支配节点之间的所有语句的目的数据;
污点标记装置,用于对污点控制数据打上污点标志。
2.根据权利要求1所述的隐式污点传播系统,其特征在于:所述程序执行监控装置能够获得被测试应用程序运行的当前指令、当前寄存器值、当前内存值、函数调用情况。
3.一种权利要求1或2所述的隐式污点传播方案,其特征在于,包括如下步骤:
(1)利用控制流图绘制软件获得被测试应用程序的控制流图;
(2)利用算法或函数库获得被测试应用程序的立即后支配树;
(3)利用程序执行监控装置将被测试程序运行起来,同时设置一个集合S为空集;
(4)获得被测试应用程序的当前语句;
(5)如果当前语句是污点控制流,则把当前语句的标号加入集合S,如果集合S不为空,将当前语句的目的数据标记为污点数据,如果当前语句是集合S中某个语句的直接后支配节点,则将该语句标号从S中删除,如果程序执行完毕,则转到下一步骤(6),否则继续执行程序,转到步骤(4);
(6)结束。
4.根据权利要求3所述的隐式污点传播方案,其特征在于:所述控制流图绘制软件为IDA Pro。
5.根据权利要求3所述的隐式污点传播方案,其特征在于:所述函数库为boost graph library。
6.根据权利要求3所述的隐式污点传播方案,其特征在于:所述程序执行监控装置采用调试或插桩方法实现。
7.根据权利要求6所述的隐式污点传播方案,其特征在于:所述插桩工具为Pin。
CN201110237712A 2011-08-18 2011-08-18 一种隐式污点传播系统及其方案 Pending CN102306098A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110237712A CN102306098A (zh) 2011-08-18 2011-08-18 一种隐式污点传播系统及其方案

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110237712A CN102306098A (zh) 2011-08-18 2011-08-18 一种隐式污点传播系统及其方案

Publications (1)

Publication Number Publication Date
CN102306098A true CN102306098A (zh) 2012-01-04

Family

ID=45379964

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110237712A Pending CN102306098A (zh) 2011-08-18 2011-08-18 一种隐式污点传播系统及其方案

Country Status (1)

Country Link
CN (1) CN102306098A (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103995782A (zh) * 2014-06-17 2014-08-20 电子科技大学 一种基于污点不变集的污点分析方法
CN104104659A (zh) * 2013-04-07 2014-10-15 中国科学技术大学 一种通信指纹的提取方法以及装置
CN104765687A (zh) * 2015-04-10 2015-07-08 江西师范大学 基于对象跟踪和污点分析的j2ee程序漏洞检测方法
CN106326103A (zh) * 2015-07-06 2017-01-11 阿里巴巴集团控股有限公司 用于检测待检测应用的漏洞的方法及装置
CN104008329B (zh) * 2014-05-22 2017-02-15 中国科学院信息工程研究所 一种基于虚拟化技术的软件隐私泄露行为检测方法及系统
CN110084084A (zh) * 2018-01-25 2019-08-02 神盾股份有限公司 区别指纹特征点与非指纹特征点的方法与电子装置
CN111737357A (zh) * 2020-07-17 2020-10-02 支付宝(杭州)信息技术有限公司 一种智能合约污点追踪方法及装置
CN113220525A (zh) * 2021-04-28 2021-08-06 杭州孝道科技有限公司 一种跨应用的动态污点跟踪方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090183141A1 (en) * 2004-12-28 2009-07-16 International Business Machines Corporation Application program development assisting method, program, and information processing apparatus
CN101814053A (zh) * 2010-03-29 2010-08-25 中国人民解放军信息工程大学 一种基于功能模型的二进制代码漏洞发现方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090183141A1 (en) * 2004-12-28 2009-07-16 International Business Machines Corporation Application program development assisting method, program, and information processing apparatus
CN101814053A (zh) * 2010-03-29 2010-08-25 中国人民解放军信息工程大学 一种基于功能模型的二进制代码漏洞发现方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
周凌: "基于信息流的动态污点分析技术研究", 《中国优秀硕士学位论文全文数据库》 *

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104104659A (zh) * 2013-04-07 2014-10-15 中国科学技术大学 一种通信指纹的提取方法以及装置
CN104104659B (zh) * 2013-04-07 2017-02-08 中国科学技术大学 一种通信指纹的提取方法以及装置
CN104008329B (zh) * 2014-05-22 2017-02-15 中国科学院信息工程研究所 一种基于虚拟化技术的软件隐私泄露行为检测方法及系统
CN103995782A (zh) * 2014-06-17 2014-08-20 电子科技大学 一种基于污点不变集的污点分析方法
CN103995782B (zh) * 2014-06-17 2016-06-22 电子科技大学 一种基于污点不变集的污点分析方法
CN104765687A (zh) * 2015-04-10 2015-07-08 江西师范大学 基于对象跟踪和污点分析的j2ee程序漏洞检测方法
CN104765687B (zh) * 2015-04-10 2017-07-21 江西师范大学 基于对象跟踪和污点分析的j2ee程序漏洞检测方法
CN106326103A (zh) * 2015-07-06 2017-01-11 阿里巴巴集团控股有限公司 用于检测待检测应用的漏洞的方法及装置
CN106326103B (zh) * 2015-07-06 2019-01-04 阿里巴巴集团控股有限公司 用于检测待检测应用的漏洞的方法及装置
CN110084084A (zh) * 2018-01-25 2019-08-02 神盾股份有限公司 区别指纹特征点与非指纹特征点的方法与电子装置
CN111737357A (zh) * 2020-07-17 2020-10-02 支付宝(杭州)信息技术有限公司 一种智能合约污点追踪方法及装置
CN113220525A (zh) * 2021-04-28 2021-08-06 杭州孝道科技有限公司 一种跨应用的动态污点跟踪方法

Similar Documents

Publication Publication Date Title
CN102306098A (zh) 一种隐式污点传播系统及其方案
CN111125716B (zh) 一种以太坊智能合约漏洞检测方法及装置
Baresel et al. Fitness function design to improve evolutionary structural testing
US20120185731A1 (en) Precise fault localization
CN101833500A (zh) 一种基于Agent的嵌入式软件智能测试方法
CN102063328B (zh) 一种用于检测中断驱动型程序数据竞争的系统
Sarhan et al. A survey of challenges in spectrum-based software fault localization
CN101853200A (zh) 一种高效动态软件漏洞挖掘方法
US9501449B2 (en) Method, apparatus, and computer-readable medium for parallelization of a computer program on a plurality of computing cores
CN109101237A (zh) 代码的加密编译方法及装置
US20090265531A1 (en) Code Evaluation for In-Order Processing
US8887160B2 (en) Mapping tasks to execution threads
US10740211B2 (en) Methods and systems to tag tokens in log messages
US20150378868A1 (en) Technologies for determining binary loop trip count using dynamic binary instrumentation
CN114491566B (zh) 一种基于代码相似性的模糊测试方法、装置及存储介质
CN112765031A (zh) 一种群智化漏洞挖掘任务的分解方法
CN113780367A (zh) 分类模型训练和数据分类方法、装置、电子设备
CN112905184A (zh) 一种基于插桩的基本块粒度下工控协议语法逆向分析方法
CN112965838B (zh) 并发程序的数据竞争检查方法及装置
JP5440287B2 (ja) シンボリック実行支援プログラム、方法及び装置
CN110162472A (zh) 一种基于fuzzing测试的测试用例生成方法
CN109002723B (zh) 一种分段式符号执行方法
WO2014142876A1 (en) Kernel functionality checker
CN107977304B (zh) 一种系统调试方法和装置
Qian et al. A strategy for multi-target paths coverage by improving individual information sharing

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: NO.54 INST., THE HEADQUARTERS OF THE GENERAL STAFF

Effective date: 20130827

C41 Transfer of patent application or patent right or utility model
C53 Correction of patent of invention or patent application
CB03 Change of inventor or designer information

Inventor after: Zhang Xiaosong

Inventor after: Chen Ting

Inventor after: Guo Shize

Inventor after: Wang Weiwei

Inventor after: Niu Wei

Inventor after: Dai Weiguo

Inventor before: Chen Ting

Inventor before: Zhang Xiaosong

Inventor before: Guo Shize

Inventor before: Wang Weiwei

Inventor before: Niu Wei

Inventor before: Dai Weiguo

COR Change of bibliographic data

Free format text: CORRECT: INVENTOR; FROM: CHEN TING ZHANG XIAOSONG GUO SHIZE WANG WEIWEI NIU WEI DAI WEIGUO TO: ZHANG XIAOSONG CHEN TING GUO SHIZE WANG WEIWEI NIU WEI DAI WEIGUO

TA01 Transfer of patent application right

Effective date of registration: 20130827

Address after: 611731 Chengdu province high tech Zone (West) West source Avenue, No. 2006

Applicant after: University of Electronic Science and Technology of China

Applicant after: No.54 Inst., The Headquarters of the General Staff, P. L. A.

Address before: 611731 Chengdu province high tech Zone (West) West source Avenue, No. 2006

Applicant before: University of Electronic Science and Technology of China

C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20120104