CN105955877A - 一种基于符号计算的动态并行程序污点分析方法 - Google Patents

一种基于符号计算的动态并行程序污点分析方法 Download PDF

Info

Publication number
CN105955877A
CN105955877A CN201610243975.6A CN201610243975A CN105955877A CN 105955877 A CN105955877 A CN 105955877A CN 201610243975 A CN201610243975 A CN 201610243975A CN 105955877 A CN105955877 A CN 105955877A
Authority
CN
China
Prior art keywords
thread
variable
constraint
event
pollution
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.)
Granted
Application number
CN201610243975.6A
Other languages
English (en)
Other versions
CN105955877B (zh
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.)
Xian Jiaotong University
Original Assignee
Xian Jiaotong University
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 Xian Jiaotong University filed Critical Xian Jiaotong University
Priority to CN201610243975.6A priority Critical patent/CN105955877B/zh
Publication of CN105955877A publication Critical patent/CN105955877A/zh
Priority to PCT/CN2016/102362 priority patent/WO2017181628A1/zh
Application granted granted Critical
Publication of CN105955877B publication Critical patent/CN105955877B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3644Software debugging by instrumenting at runtime
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/366Software debugging using diagnostics

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Debugging And Monitoring (AREA)

Abstract

一种基于符号计算的动态并行程序污点分析方法,根据并行程序的污染传播语义构建约束表达式,采用约束求解器验证该变量是否会在某种交织下被污染,并且生成被污染时的证据序列;首先,在给定的污染输入下执行程序,收集特定交织下的污染变量实例集合;其次,符号分析:根据并行程序污染传播语义,将执行路径转化为约束表达式以验证此路径是否新的被污染变量;然后,路径探索:利用此约束模型来验证是否存在分支可被取反,以寻找新路径;最后,继续验证新路径,符号分析与路径探索迭代进行,直至不再产生新路径;此方法的目标是给定输入下,验证特定调度下是否存在一些变量会在其他交织中被污染;且寻找新语句,以发现新的污染变量。

Description

一种基于符号计算的动态并行程序污点分析方法
技术领域
本发明属于可信软件及软件分析技术领域,特别涉及一种基于符号计算的动态并行程序污点分析方法。
背景技术
动态污点分析记录污染源与污染沉渍之间的关系,安全领域内被广泛应用,譬如数据泄露检测,软件攻击防范,恶意软件分析等等。正是由于其广泛的应用,在污点分析的精度与效率防范已有大量的工作。不幸的是,现有的动态污点分析方法在检测多线程程序时,都存在一定的under-taint问题。这主要是因为相比之于串行程序仅有输入不确定,多线程程序还有执行时序也不确定,给污点分析带来了巨大障碍。
然而,分析多线程程序存在一定的难度,难以重现并行错误。多线程程序具有以下几个特征:1)用户难以控制所有线程之间的执行顺序;2)在调试器中使用插装技术或者断点调试方法会产生副作用,导致某些错误消失;3)由于操作系统与运行时环境的原因,导致错误发生的序列很少再次发生;4)线程交织导致的空间状态爆炸,例如,对于有n个线程,每个线程执行k指令的程序,其交织序列数量可达(nk)!/(k!)n>=(n!)k。即使在可控制线程调度的假设下,程序员也无法人工穷举所有线程交织。
目前,已有大量动态污点分析方面的工作,但针对多线程程序的方法很少且存在很大的精度问题,因为其仅能对单一交织路径下的污点进行分析,无法其他交织下的污点,更不用谈同一输入下不同分支的污点。
发明内容
为了克服上述现有技术的缺点,本发明的目的在于提供一种基于符号计算的动态并行程序污点分析方法,根据多线程程序污染传播语义构建约束表达式,将污染验证问题转化为约束求解问题,采用约束求解器检测是否被污染,并生成说明被污染的反例执行路径。
为了实现上述目的,本发明采用的技术方案是:
一种基于符号计算的动态并行程序污点分析方法,包括如下步骤:
S1)执行待测程序,以记录程序的执行路径T;
S2)收集执行路径T上的污染变量,放入污染集合TS;
S3)计算执行路径T上的潜在污染变量,放入潜在污染集合PTS,所谓的潜在污染变量,即与被污染变量有数值依赖关系,但是又没有在执行路径T上被污染;
S4)根据多线程程序污染传播语义,将执行路径T构建为约束模型F,此模型为一阶逻辑表达式,且包括执行路径T上所有可能污染传播路径;
S5)构建潜在污染集合PTS内每一个变量pts的污染发生条件ρpts,在约束模型F上验证是否会被污染,利用约束求解器验证F∧ρpts,如果可解表示存在某种交织使得pts被污染,且将其放入集合TS;如果不可解,表示该变量在T的所有交织下都不会被污染;
S6)针对执行路径T上的任一分支b,构建其取反的条件Negate(b),利用约束求解器验证F∧Negate(b)是否有解。如果有解,根据求解结果指导程序执行出新路径Tnew;如果不可解,则验证下一分支。
S7)如果在给定输入下,取反分支之后已不再形成新路径,则停止算法。如果尚存在新路径,则继续迭代。
本发明进一步的改进在于:所述步骤S1)中,在符号执行工具KLEE平台内执行程序,以字节码的粒度收集序列化的多线程程序执行路径T。
本发明进一步的改进在于:所述步骤S2)中,将输入设定为污染源,对于一个语句,右边变量如果被污染,那么左边的变量就会被污染,被污染的变量则做上标记,此污染标记会随着并行程序在特定交织下执行而传播,收集被标记的变量,放入污染集合TS。
本发明进一步的改进在于:所述步骤S3)中,将程序中每一个线程中的全局变量访问点都作为污染源,并且做上伪污染标记,执行过程中,在各自线程内部传播这些伪污染标记。用S2)中得到的真实污染标记结果,替换伪污染标记,得到的集合为S,则潜在污染变量为在S中却不在TS中的变量,表示为PTS=S-TS。
本发明进一步的改进在于:所述步骤S4)中,约束模型F蕴含了执行路径T所有可能的交织序列,包括四种约束:程序语义约束、偏序关系约束、读写关系约束以及污染传播约束,定义分别如下:
1)程序语义约束:描述线程内部的定义-使用链,以及控制线程内部状态转换;
2)偏序关系约束:线程内部语句之间的关系,采用顺序一致性的语义;线程间语句的关系,按照create/join、wait/signal、lock/unlock的语义规定来构建;
3)交织匹配约束:定义线程间的定义-使用链,规定共享变量所读取到的值,必须来自初始值以及最近的写值;同时,当线程间有读写时,也要有对应污染传播。
4)污染传播约束:规定线程内部变量的污染状态,确定其数据是来自被污染变量还是未被污染变量;
其中,定义-使用链为:将每一个线程序列转化为SSA格式,对于每一个SSA格式的执行序列,除去共享访问点都是一个完整的定义-使用链。
本发明进一步的改进在于:所述步骤S4),约束模型F的构建方法包括以下操作:
1)计算程序语义约束Φps,以控制线程内部状态转移;
2)计算偏序关系约束Φpo,以构建线程间或线程内语句之间可能的时序关系;
3)计算交织匹配约束Φim,以建立线程间的定义-使用链以及污染传播的关系;
4)计算污染传播约束Φtp,以线程内部污染传播的流程;
最后,结合以上四种约束,构成约束模型F=Φps∧Φpo∧Φim∧Φtp
本发明进一步的改进在于:定义执行路径事件集合其中k为线程数量,Ti={e1,e2,…,en}作为线程i的执行序列,en表示Ti的第n个事件,O(en)表示事件en的顺序,n表示Ti的事件数量,则:
所述程序语义约束的计算方法:
将每一个线程序列转化为SSA格式,直接将SSA格式序列转化为路径表达式;
所述偏序关系约束为包括以下四种内存模型约束锁同步约束条件变量约束线程创建结束约束其各自计算方法为:
内存模型约束:采用顺序一致性模型,所有操作完全按程序的顺序执行,线程内的事件顺序符合约束:
其中ei与ei+1表示同一线程内连续的两个事件,τ表示所有线程序列;
锁同步约束:lock/unlock操作的目的为构建锁同步语义约束,要求在同一互斥锁的lock/unlock集合L中,对于任意两个lock/unlock事件对:li/ui与lk/uk,须满足公式:
其中,锁对li/ui要么发生在锁对lk/uk之前,要么发生在其后;
条件变量约束:wait/signal操作的目的是构建条件变量同步语义约束,要满足条件:每一个wait操作必须对应一个signal操作,而一个signal操作至多唤醒一个wait操作,对于同一条件变量cond,令WT作为在cond上所有wait操作的集合,令SG作为在cond上所有signal操作的集合,如要满足之上的条件,须有以下公式:
其中,ewt为WT中的任一元素,SGwt表示ewt可以匹配的signal操作的集合,esg为SGwt中任一signal操作事件,利用变量是否等于1来表示esg是否与ewt相匹配。子公式表示,对于每一个wait操作ewt必须有一个signal操作与之匹配;
线程创建结束约束:首先规定,如果事件创建一个线程,那么被创建线程的所有事件都要在此事件之后执行;如果事件执行线程终止操作,那么被终止线程的所有事件都要在此事件之前;令C为create/fork操作的事件集合,令J作为join操作的事件集合;给定约束:
其中,ec为线程创建事件,first(ec)为ec所创建的线程首个事件的顺序;ej为线程终止事件;last(ej)为ej所终止的线程末尾事件的顺序;
所述交织匹配约束的计算方法:
使共享变量的读来自于最近的写,对于同一共享变量v,令R作为所有对其进行读操作的事件集合,令W作为所有对其进行写操作的事件集合,给出以下公式:
其中,er为读事件,ew与ex为写事件,vr和vw为事件er与ew所操作的变量,公式所表达的意思是,如果事件er中的vr取值来自于事件ew中的vw,首先要满足er在ew之后,即O(ew)<O(er);然后要满足所有的写要么在ew之前,要么在er之后;如果er中的vr取值来自于事件ew中的vw,那么vw的污染标记也会传播给vr
所述污染传播约束的计算方法:
将每一个线程序列内每一个变量v的污染标记为v.tag,按照执行语句的句型直接转换为表达,譬如,v=a OP b;那么对应的污染传播表达式为v.tag=a.tag or b.tag;
最终将以上四种约束相与构成约束模型F。
本发明进一步的改进在于:所述步骤S5)中,对于PTS中任一变量pts,其污染标记为pts.tag,用pts.tag=1来表示pts被污染的情况,求解F∧pts.tag=1。;如果可解,表示pts可被污染;如果不可解,表示pts不可以被污染。
本发明进一步的改进在于:所述步骤S6)中利用现有约束模型寻找是否存在可取反的分支,因为在多线程程序执行过程中,有些分支会受到语句时序关系的影响。首先,从F中去除所有分支C对应的表达式,得到F′。然后,对于C中的每一个分支ci,求解如果可解,表示其可被取反。其中oi表示ci的时序。其中,表示取反当前的分支,∧cjcioj<oi→cj表示对于其他分支,如果发生在被取反分支之前,则必须保持不变。
本发明进一步的改进在于:所述步骤S7)中判断是否尚有新路径,如果存在,则回到S2)继续验证;否则,结束算法。
与现有技术相比,本发明的有益效果是:
(1)提出一种多线程程序污染传播约束模型,将多线程程序的变量污染验证问题转化为约束求解问题。此模型按照程序语义进行约束构建,所构建的表达式包含了所有可能的交织序列,利用约束求解器检查该变量是否会在某种交织下被污染。
(2)验证单条路径所有的交织情况下的污染变量。
(3)验证给定输入下所有路径的污染变量。
(4)给出每一个变量被污染的污染传播交织路径。
附图说明
图1为本发明方法整体流程图。
图2为多线程程序污染传播模型构建方法流程图。
具体实施方式
下面结合附图和实施例详细说明本发明的实施方式。
待测示例程序如下所示,x与z为共享变量,线程0在第3行与第4行创建了线程1与线程2,且设定argv[1]为污染源,且argv[1]初值为1。
如图1所示,一种基于符号计算的动态并行程序污点分析方法,包括如下步骤:
步骤S1):在输入argv[1]=1情况下随机执行示例程序,得到初始路径T={1,2,3,6,7,8F,4,10,5,11}.
步骤S2):根据路径T,收集其被污染的变量集合TS={a@L1,y@L2,m@L3,x@L6,z@L7,n@L4,x@L10},其中a@L1表示在line 1的变量a。
步骤S3):再分析路径T,如下所示,给每一个线程做一个伪标记,最后利用TS中的变量污染标记替换这些伪标记,即得到集合S={a@L1,y@L2,m@L3,x@L6,z@L7,n@L4,x@L10,z@L11},其潜在污染集合为PTS=S-TS={z@L11}。
步骤S4):根据多线程程序污点传播语义将执行路径中状态转移、污染传播、线程交织关系转化为无量词一阶逻辑表达式,构建执行路径T的约束模型F,包括程序语义约束、偏序关系约束、线程交织约束、污染传播约束。整个约束模型F蕴含了执行路径所有可能的污染传播序列。具体地,如图2所示,按照以下步骤生成对应的逻辑表达式:
S401):根据以下程序路径T的SSA格式,将每一句表达式相与,则得到程序语义约束。
其中,对于全局变量x与y的上角标表示读(r)或写(w),下角标区分不同的读或写操作。
S402):构建偏序关系约束:线程内部时序关系,遵守顺序一致性,如o1<o2表示line 1在line 2之前发生。线程间的关系,本示例中仅有线程创建关系,例如o3<op2表示line 3发生被其创建线程的第一条语句。
(o1<o2<o3<o4<o5)∧(op2<o6<o7<o8)∧
(op3<o10<o11)∧o3<op2∧o4<op3
S403):构建交织匹配约束,其如下所示:
S404):构建污染传播约束,按照左侧路径T的SSA格式,转换为右侧的污染传播表达式,将其相与,即得到污染传播约束。如下所示:
步骤S5):由S3)可知,z@L11为待验证变量,其被污染的条件表示为从F中去除分支语句的表达式求解表达式结果可解,从其解中得到序列{1,2,3,6,7,8F,4,10,11,5}。此序列即使得z@L11被污染。
步骤S6):从F中去除分支语句的表达式,即得到表达式F′。根据取反规定,求解结果可解,,从其解中得出一个部分路径调度序列S={1,2,3,6,7,4,5,8T}。按照此序列知道执行,得到新路径T′={1,2,3,6,7,4,5,8T,9,10,11}。对此路径从新验证,发现w@L9也会被污染。
步骤S7):由于Line 8的分支两侧都被遍历过,已不再存在新路径。则算法结束。
总结:本发明的方法,相比现有方法,在给定输入下,可以检测到其他交织下的污染变量,也可以检测到其他分支下的污染变量,在精度上有很明显的提高。

Claims (10)

1.一种基于符号计算的动态并行程序污点分析方法,其特征在于,包括如下步骤:
S1)执行待测程序,以记录程序的执行路径T;
S2)收集执行路径T上的污染变量,放入污染集合TS;
S3)计算执行路径T上的潜在污染变量,放入潜在污染集合PTS,所述潜在污染变量,即与被污染变量有数值依赖关系,但是又没有在执行路径T上被污染;
S4)根据多线程程序污染传播语义,将执行路径T构建为约束模型F,此模型为一阶逻辑表达式,且包括执行路径T上所有可能污染传播路径;
S5)构建潜在污染集合PTS内每一个变量pts的污染发生条件ρpts,在约束模型F上验证是否会被污染,利用约束求解器验证F∧ρpts,如果可解表示存在某种交织使得pts被污染,且将其放入污染集合TS;如果不可解,表示该变量在执行路径T的所有交织下都不会被污染;
S6)针对执行路径T上的任一分支b,构建其取反的条件Negate(b),利用约束求解器验证F∧Negate(b)是否有解,如果有解,根据求解结果指导程序执行出新路径Tnew;如果不可解,则验证下一分支;
S7)如果在给定输入下,取反分支之后已不再形成新路径,则停止算法,如果尚存在新路径,则继续迭代。
2.根据权利要求1所述基于符号计算的动态并行程序污点分析方法,其特征在于,所述步骤S1)中,在符号执行工具KLEE平台内执行待测程序,以字节码的粒度收集序列化的多线程程序执行路径T。
3.根据权利要求1所述基于符号计算的动态并行程序污点分析方法,其特征在于,所述步骤S2)中,将输入设定为污染源,对于一个语句,右边变量如果被污染,那么左边的变量就会被污染,被污染的变量做上标记,此污染标记会随着并行程序在特定交织下执行而传播,收集被标记的变量,放入污染集合TS。
4.根据权利要求3所述基于符号计算的动态并行程序污点分析方法,其特征在于,所述步骤S3)中,将程序中每一个线程中的全局变量访问点都作为污染源,并且做上伪污染标记,执行过程中,在各自线程内部传播这些伪污染标记,用步骤S2)中得到的真实污染标记结果,替换伪污染标记,得到的集合为S,则潜在污染变量为在S中却不在TS中的变量,表示为PTS=S-TS。
5.根据权利要求1所述基于符号计算的动态并行程序污点分析方法,其特征在于,所述步骤S4)中,约束模型F蕴含了执行路径T所有可能的交织序列,包括四种约束:程序语义约束、偏序关系约束、读写关系约束以及污染传播约束,定义分别如下:
1)程序语义约束:描述线程内部的定义-使用链,以及控制线程内部状态转换;
2)偏序关系约束:线程内部语句之间的关系,采用顺序一致性的语义;线程间语句的关系,按照create/join、wait/signal、lock/unlock的语义规定来构建;
3)交织匹配约束:定义线程间的定义-使用链,规定共享变量所读取到的值,必须来自初始值以及最近的写值;同时,当线程间有读写时,也要有对应污染传播。
4)污染传播约束:规定线程内部变量的污染状态,确定其数据是来自被污染变量还是未被污染变量;
其中,定义-使用链为:将每一个线程序列转化为SSA格式,对于每一个SSA格式的执行序列,除去共享访问点都是一个完整的定义-使用链。
6.根据权利要求5所述基于符号计算的动态并行程序污点分析方法,其特征在于,所述步骤S4)中,约束模型F的构建方法包括以下操作:
1)计算程序语义约束Φps,以控制线程内部状态转移;
2)计算偏序关系约束Φpo,以构建线程间或线程内语句之间可能的时序关系;
3)计算交织匹配约束Φim,以建立线程间的定义-使用链以及污染传播的关系;
4)计算污染传播约束Φtp,以线程内部污染传播的流程;
最后,结合以上四种约束,构成约束模型F=Φps∧Φpo∧Φim∧Φtp
7.根据权利要求6所述基于符号计算的动态并行程序污点分析方法,其特征在于,定义执行路径事件集合IEπ={Ti|0<i≤k},其中k为线程数量,Ti={e1,e2,…,en}作为线程i的执行序列,en表示Ti的第n个事件,O(en)表示事件en的顺序,n表示Ti的事件数量,则:
所述程序语义约束的计算方法:
将每一个线程序列转化为SSA格式,直接将SSA格式序列转化为路径表达式;
所述偏序关系约束为包括四种内存模型约束锁同步约束条件变量约束和线程创建结束约束其各自计算方法为:
内存模型约束:采用顺序一致性模型,所有操作完全按程序的顺序执行,线程内的事件顺序符合约束:
其中ei与ei+1表示同一线程内连续的两个事件,τ表示所有线程序列;
锁同步约束:lock/unlock操作的目的为构建锁同步语义约束,要求在同一互斥锁的lock/unlock集合L中,对于任意两个lock/unlock事件对:li/ui与lk/uk,须满足公式:
其中,锁对li/ui要么发生在锁对lk/uk之前,要么发生在其后;
条件变量约束:wait/signal操作的目的是构建条件变量同步语义约束,要满足条件:每一个wait操作必须对应一个signal操作,而一个signal操作至多唤醒一个wait操作,对于同一条件变量cond,令WT作为在cond上所有wait操作的集合,令SG作为在cond上所有signal操作的集合,如要满足之上的条件,须有以下公式:
其中,ewt为WT中的任一元素,SGwt表示ewt可以匹配的signal操作的集合,esg为SGwt中任一signal操作事件,利用变量是否等于1来表示esg是否与ewt相匹配,子公式表示,对于每一个wait操作ewt必须有一个signal操作与之匹配;
线程创建结束约束:首先规定,如果事件创建一个线程,那么被创建线程的所有事件都要在此事件之后执行;如果事件执行线程终止操作,那么被终止线程的所有事件都要在此事件之前;令C为create/fork操作的事件集合,令J作为join操作的事件集合;给定约束:
其中,ec为线程创建事件,first(ec)为ec所创建的线程首个事件的顺序;ej为线程终止事件;last(ej)为ej所终止的线程末尾事件的顺序;
所述交织匹配约束的计算方法:
使共享变量的读来自于最近的写,对于同一共享变量v,令R作为所有对其进行读操作的事件集合,令W作为所有对其进行写操作的事件集合,给出以下公式:
其中,er为读事件,ew与ex为写事件,vr和vw为事件er与ew所操作的变量,公式所表达的意思是,如果事件er中的vr取值来自于事件ew中的vw,首先要满足er在ew之后,即O(ew)<O(er);然后要满足所有的写要么在ew之前,要么在er之后;如果er中的vr取值来自于事件ew中的vw,那么vw的污染标记也会传播给vr
所述污染传播约束的计算方法:
将每一个线程序列内每一个变量v的污染标记为v.tag,按照执行语句的句型直接转换为表达,譬如,v=a OP b;那么对应的污染传播表达式为v.tag=a.tag or b.tag;
最终将以上四种约束相与构成约束模型F。
8.根据权利要求7所述基于符号计算的动态并行程序污点分析方法,其特征在于,所述步骤S5)中,对于潜在污染集合PTS中任一变量pts,其污染标记为pts.tag,则用pts.tag=1来表示pts被污染的情况,求解F∧pts.tag=1;如果可解,表示pts可被污染;如果不可解,表示pts不可以被污染。
9.根据权利要求1所述基于符号计算的动态并行程序污点分析方法,其特征在于,所述步骤S6)中利用现有约束模型寻找是否存在可取反的分支,首先,从约束模型F中去除所有分支C对应的表达式,得到F′,然后,对于C中的每一个分支ci,求解如果可解,表示其可被取反,其中oi表示ci的时序。
10.根据权利要求1所述基于符号计算的动态并行程序污点分析方法,其特征在于,所述步骤S7)中判断是否尚有新路径,如果存在,则回到S2)继续验证;否则,结束算法。
CN201610243975.6A 2016-04-19 2016-04-19 一种基于符号计算的动态并行程序污点分析方法 Active CN105955877B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201610243975.6A CN105955877B (zh) 2016-04-19 2016-04-19 一种基于符号计算的动态并行程序污点分析方法
PCT/CN2016/102362 WO2017181628A1 (zh) 2016-04-19 2016-10-18 一种基于符号计算的动态并行程序污点分析方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610243975.6A CN105955877B (zh) 2016-04-19 2016-04-19 一种基于符号计算的动态并行程序污点分析方法

Publications (2)

Publication Number Publication Date
CN105955877A true CN105955877A (zh) 2016-09-21
CN105955877B CN105955877B (zh) 2017-03-29

Family

ID=56917681

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610243975.6A Active CN105955877B (zh) 2016-04-19 2016-04-19 一种基于符号计算的动态并行程序污点分析方法

Country Status (2)

Country Link
CN (1) CN105955877B (zh)
WO (1) WO2017181628A1 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106649124A (zh) * 2016-12-28 2017-05-10 桂林电子科技大学 一种基于Actor模型的并行动态符号执行方法和系统
WO2017181628A1 (zh) * 2016-04-19 2017-10-26 西安交通大学 一种基于符号计算的动态并行程序污点分析方法
CN111291373A (zh) * 2020-02-03 2020-06-16 思客云(北京)软件技术有限公司 用于分析数据污染传播的方法、设备和计算机可读存储介质
CN114036072A (zh) * 2022-01-06 2022-02-11 湖南泛联新安信息科技有限公司 一种支持自动化检测程序缺陷的方法和系统
CN116560998A (zh) * 2023-05-16 2023-08-08 中国人民解放军国防科技大学 一种面向i/o顺序性的数据库性能问题检测方法

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11797951B2 (en) * 2020-07-24 2023-10-24 Oracle International Corporation Using constraint programming to obtain a machine maintenance schedule for maintenance tasks
CN113176990B (zh) * 2021-03-25 2022-10-18 中国人民解放军战略支援部队信息工程大学 一种支持数据间关联分析的污点分析框架及方法
CN113918948B (zh) * 2021-12-13 2022-03-22 北京雁翎网卫智能科技有限公司 一种基于语义分析的无害化处理识别方法
CN115329346B (zh) * 2022-10-09 2023-03-24 支付宝(杭州)信息技术有限公司 一种检测侧信道漏洞的方法和装置
CN116303042B (zh) * 2023-03-22 2023-09-12 中国人民解放军国防科技大学 一种基于污点分析的软件配置故障检测方法
CN116383070B (zh) * 2023-04-07 2023-12-05 南京航空航天大学 一种面向高mc/dc的符号执行方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120304010A1 (en) * 2011-05-25 2012-11-29 Microsoft Corporation Code coverage-based taint perimeter detection
CN104598383A (zh) * 2015-02-06 2015-05-06 中国科学院软件研究所 一种基于模式的动态漏洞挖掘集成系统和方法
CN105117336A (zh) * 2015-08-26 2015-12-02 中国科学院软件研究所 一种动态标记处理控制依赖的方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104077226B (zh) * 2014-07-07 2015-05-13 西安交通大学 基于程序约束构建的多线程程序输出唯一性检测与证据生成方法
CN104077144B (zh) * 2014-07-07 2015-06-03 西安交通大学 基于多线程程序约束构建的数据竞争检测与证据生成方法
CN105955877B (zh) * 2016-04-19 2017-03-29 西安交通大学 一种基于符号计算的动态并行程序污点分析方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120304010A1 (en) * 2011-05-25 2012-11-29 Microsoft Corporation Code coverage-based taint perimeter detection
CN104598383A (zh) * 2015-02-06 2015-05-06 中国科学院软件研究所 一种基于模式的动态漏洞挖掘集成系统和方法
CN105117336A (zh) * 2015-08-26 2015-12-02 中国科学院软件研究所 一种动态标记处理控制依赖的方法

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017181628A1 (zh) * 2016-04-19 2017-10-26 西安交通大学 一种基于符号计算的动态并行程序污点分析方法
CN106649124A (zh) * 2016-12-28 2017-05-10 桂林电子科技大学 一种基于Actor模型的并行动态符号执行方法和系统
CN106649124B (zh) * 2016-12-28 2019-04-02 桂林电子科技大学 一种基于Actor模型的并行动态符号执行方法和系统
CN111291373A (zh) * 2020-02-03 2020-06-16 思客云(北京)软件技术有限公司 用于分析数据污染传播的方法、设备和计算机可读存储介质
CN111291373B (zh) * 2020-02-03 2022-06-14 思客云(北京)软件技术有限公司 用于分析数据污染传播的方法、设备和计算机可读存储介质
CN114036072A (zh) * 2022-01-06 2022-02-11 湖南泛联新安信息科技有限公司 一种支持自动化检测程序缺陷的方法和系统
CN114036072B (zh) * 2022-01-06 2022-04-08 湖南泛联新安信息科技有限公司 一种支持自动化检测程序缺陷的方法和系统
CN116560998A (zh) * 2023-05-16 2023-08-08 中国人民解放军国防科技大学 一种面向i/o顺序性的数据库性能问题检测方法
CN116560998B (zh) * 2023-05-16 2023-12-01 中国人民解放军国防科技大学 一种面向i/o顺序性的数据库性能问题检测方法

Also Published As

Publication number Publication date
CN105955877B (zh) 2017-03-29
WO2017181628A1 (zh) 2017-10-26

Similar Documents

Publication Publication Date Title
CN105955877A (zh) 一种基于符号计算的动态并行程序污点分析方法
Bartocci et al. First international competition on runtime verification: rules, benchmarks, tools, and final results of CRV 2014
Sen Effective random testing of concurrent programs
Betts et al. GPUVerify: a verifier for GPU kernels
Bi et al. Applying propositional logic to workflow verification
Chen et al. Functional test generation using efficient property clustering and learning techniques
Wang et al. Peephole partial order reduction
Menzies et al. Verification and validation and artificial intelligence
Zhu et al. A methodology of testing high-level Petri nets
CN104077144A (zh) 基于多线程程序约束构建的数据竞争检测与证据生成方法
CN105868116A (zh) 基于语义变异算子的测试用例生成和优化方法
CN104077226A (zh) 基于程序约束构建的多线程程序输出唯一性检测与证据生成方法
Hoare et al. Developments in concurrent Kleene algebra
Song et al. FBDTester 2.0: Automated test sequence generation for FBD programs with internal memory states
Gan et al. IsoDiff: debugging anomalies caused by weak isolation
Goel et al. SMT-Based System Verification with DVF.
Wang et al. Predicting concurrency failures in the generalized execution traces of x86 executables
Meyer et al. Embedding hindsight reasoning in separation logic
Bonacina et al. Proofs in conflict-driven theory combination
CN101894072A (zh) 一种模型检测中异常终止的检测方法
Ouimet et al. Automated verification of completeness and consistency of abstract state machine specifications using a sat solver
Goodstein et al. Chrysalis analysis: Incorporating synchronization arcs in dataflow-analysis-based parallel monitoring
Zhang et al. GoDetector: Detecting concurrent bug in go
Siirtola et al. Algorithmic verification with multiple and nested parameters
Si et al. Improving model checking stateful timed csp with non-zenoness through clock-symmetry reduction

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant