CN113221126A - 一种TensorFlow程序漏洞检测方法、装置及电子设备 - Google Patents

一种TensorFlow程序漏洞检测方法、装置及电子设备 Download PDF

Info

Publication number
CN113221126A
CN113221126A CN202110606581.3A CN202110606581A CN113221126A CN 113221126 A CN113221126 A CN 113221126A CN 202110606581 A CN202110606581 A CN 202110606581A CN 113221126 A CN113221126 A CN 113221126A
Authority
CN
China
Prior art keywords
tensor
dimension
constraint
shape
program
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
CN202110606581.3A
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.)
Beijing Zhongke Tianqi Information Technology Co ltd
Original Assignee
Beijing Zhongke Tianqi Information Technology Co ltd
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 Beijing Zhongke Tianqi Information Technology Co ltd filed Critical Beijing Zhongke Tianqi Information Technology Co ltd
Priority to CN202110606581.3A priority Critical patent/CN113221126A/zh
Publication of CN113221126A publication Critical patent/CN113221126A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • G06F18/2415Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on parametric or probabilistic models, e.g. based on likelihood ratio or false acceptance rate versus a false rejection rate

Abstract

本发明提供一种TensorFlow程序漏洞检测方法、装置及电子设备,其中,方法,包括:遍历每一条程序路径,并根据每一条程序路径构建形状流图,所述形状流图表征程序中函数的调用关系以及张量信息的传递过程,所述张量信息包括未知张量信息;根据所述形状流图,建立约束关系式;根据目标约束求解器,对所述约束关系式进行求解,得到求解结果,根据所述求解结果,得到相应的检测结果。通过实施本发明,对于未知的张量信息,也可以将其建立在约束关系式中,通过求解器对该约束关系式进行求解,从而判断其是否满足约束条件,从而避免了静态分析检测在没有完整的形状信息的情况下,不能有效完成形状漏洞的检测的问题,提高了漏洞检测的准确性。

Description

一种TensorFlow程序漏洞检测方法、装置及电子设备
技术领域
本发明涉及漏洞检测领域,具体涉及一种TensorFlow程序漏洞检测方法、装置及电子设备。
背景技术
深度学习已在工业中得到了广泛应用。有了开源框架,开发者们就可有效地为各个领域的应用设计新的深度学习模型(例如图像识别、自然语言处理、自动驾驶汽车等)。为帮助开发者们有效测试和训练模型,企业已搭建了各种专门的平台(例如谷歌云人工智能、微软Azure机器学习、Amazan SageMake等)。这些平台都拥有丰富的计算资源,包括GPU和人工智能加速器,每天都运行着数以千计的深度学习任务。
与其他软件一样,深度学习程序也会产生漏洞。在现实工业环境中,这些漏洞会导致任务失败并造成时间和资源浪费。关于如何解决深度学习程序错误,目前已开展了多项研究。比如,Zhang等人在微软的Philly平台上对深度学习中的失败任务程序进行了广泛的实证研究。Sifis等人开发了一种新的静态分析方法来检测TensorFlow程序中的形状错误。通过静态分析检测“形状错误”漏洞时,需要在数据日志中对张量算子建模,将张量形状推导为具体的形状。因此,静态分析方法对于程序中已知的形状,可有效地检测出形状漏洞。但是,根据对工业TensorFlow应用的研究,在很多情况下,并不能完全得到张量的秩或维度大小,也即,不能得到完整的形状信息,此时,静态分析检测就无法有效完成形状漏洞的检测。
发明内容
有鉴于此,本发明实施例提供了一种TensorFlow程序漏洞检测方法、装置及电子设备,以解决现有技术中静态分析检测无法在没有完整的形状信息的情况下,有效完成形状漏洞的检测的缺陷。
根据第一方面,本发明实施例提供了一种TensorFlow程序漏洞检测方法,包括如下步骤:遍历每一条程序路径,并根据每一条程序路径构建形状流图,所述形状流图表征程序中函数的调用关系以及张量信息的传递过程,所述张量信息包括未知张量信息;根据所述形状流图,建立约束关系式;根据目标约束求解器,对所述约束关系式进行求解,得到求解结果,根据所述求解结果,得到相应的检测结果。
可选地,所述根据每一条程序路径构建形状流图,包括:通过赋值或参数传递规则以及节点属性,对所述目标调用函数向后切片,得到所述程序路径上的调用关系;采集所述调用关系之间的形状信息;根据所述程序路径上的调用关系以及所述调用关系之间的形状信息,构建所述形状流图。
可选地,所述根据所述形状流图,建立约束关系式,包括:提取所述形状流图中的每一个张量运算符和/或标量指令;根据所述张量运算符和/或标量指令,得到相应约束关系;根据所述约束关系,形成约束关系式。
可选地,所述根据所述张量运算符和/或标量指令,得到相应约束关系,包括:当张量T的秩为常数C,具体化张量T时,相应约束关系为:
Figure BDA0003093373570000021
其中,T[i]为第i个形状维度的大小,|T|为T的元素总数量,T[-1]为T的最后一个形状维度的大小,T[c-1]为T的C-1个形状维度的大小,
Figure BDA0003093373570000022
为T的秩。
可选地,所述根据所述张量运算符和/或标量指令,得到相应约束关系,包括:当所述张量运算符为Y=reshape(A,B)时,所述约束关系为:
Figure BDA0003093373570000031
其中,Y[i]表征张量Y的第i维形状,Bi表征矢量B的第i个元素的数值,
Figure BDA0003093373570000032
表征张量Y的秩,|B|表征张量B的元素数量,|A|表征张量A的元素数量,concretize(Y,|B|)表征通过|B|实现对张量Y的具体化。
可选地,所述根据所述张量运算符和/或标量指令,得到相应约束关系,包括:当所述张量运算符为Broadcast(D,E,F i,j)时,所述约束关系为:
((D[i]==E[j])∧(F[i]==D[i]))∨((D[i]==1)∧(F[i]==E[j]))∨((E[j]==1)∧F[i]==D[i]);
其中,D[i]表示张量D的第i维度大小,E[j]表示张量E的第j维度大小,F[i]表示张量F的第i维度大小。
可选地,所述根据所述张量运算符和/或标量指令,得到相应约束关系,包括:当所述张量运算符为H=logits(K,M),且张量K的秩和/或张量M的秩不为常数时,所述约束关系为:
Figure BDA0003093373570000033
其中,
Figure BDA0003093373570000034
表示张量K的秩,
Figure BDA0003093373570000035
表示张量M的秩,Broadcast(K,M,H,0,0)表征对输入张量K的第1个维度、结果张量H的第1个维度以及与其他输入张量M匹配的第1个维度的约束,Broadcast(K,M,H,-1,-1)表征对输入张量K的最后1个维度、结果张量H的最后1个维度以及与其他输入张量M匹配的最后1个维度的约束,K[0]表征张量K的第一维度的大小,M[0]表征张量M的第一维度的大小,H[0]表征张量H的第一维度的大小。
可选地,所述根据所述张量运算符和/或标量指令,得到相应约束关系,包括:当所述张量运算符为H=logits(K,M),且张量K的秩和张量M的秩都为常数时,所述约束关系为:
Figure BDA0003093373570000041
其中,
Figure BDA0003093373570000042
表示张量K的秩,
Figure BDA0003093373570000043
表示张量M的秩,
Figure BDA0003093373570000044
表征通过
Figure BDA0003093373570000045
实现对张量H的具体化,
Figure BDA0003093373570000046
表征对输入张量K的所有维度、结果张量H的所有维度以及与其他输入张量M匹配的所有维度的约束,
Figure BDA0003093373570000047
表征张量K从张量H中复制第一维度到第
Figure BDA0003093373570000048
维度的信息,
Figure BDA0003093373570000049
表征广播匹配张量K与张量M的
Figure BDA00030933735700000410
Figure BDA00030933735700000411
的维度信息,
Figure BDA00030933735700000412
表征通过
Figure BDA00030933735700000413
实现对张量H的具体化,
Figure BDA00030933735700000414
表征张量H从张量K中复制第一维度到第
Figure BDA00030933735700000415
维度的信息,
Figure BDA00030933735700000416
表征广播匹配张量K与张量M的
Figure BDA00030933735700000417
Figure BDA00030933735700000418
的维度信息。
可选地,所述根据所述求解结果,得到相应的检测结果,包括:当求解结果为无法求解约束,则发出错误警报;当求解结果为用户输入受常数约束,则显示期望用户输入。
可选地,所述目标约束求解器为Z3求解器。
根据第二方面,本发明实施例提供一种TensorFlow程序漏洞检测装置,包括:形状流图构建模块,用于遍历每一条程序路径,并根据每一条程序路径构建形状流图,所述形状流图表征程序中函数的调用关系以及张量信息的传递过程,所述张量信息包括未知张量信息;约束关系式建立模块,用于根据所述形状流图,建立约束关系式;检测结果确定模块,用于根据目标约束求解器,对所述约束关系式进行求解,得到求解结果,根据所述求解结果,得到相应的检测结果。
根据第三方面,本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现第一方面或第一方面任一实施方式所述的TensorFlow程序漏洞检测方法的步骤。
根据第四方面,本发明实施例提供一种存储介质,其上存储有计算机指令,该指令被处理器执行时实现第一方面或第一方面任一实施方式所述的TensorFlow程序漏洞检测方法的步骤。
本发明技术方案,具有如下优点:
本发明实施例提供的TensorFlow程序漏洞检测方法,通过遍历每一条程序路径,并根据每一条程序路径构建形状流图,根据形状流图,建立约束关系式,而对于未知的张量信息,也可以将其建立在约束关系式中,通过求解器对该约束关系式进行求解,从而判断其是否满足约束条件,从而避免了静态分析检测在没有完整的形状信息的情况下,不能有效完成形状漏洞的检测的问题,提高了漏洞检测的准确性。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中TensorFlow程序漏洞检测方法的一个具体示例的流程图;
图2为本发明实施例中TensorFlow程序漏洞检测方法的一个具体示例图;
图3为本发明实施例中TensorFlow程序漏洞检测方法的一个具体示例图;
图4为本发明实施例中TensorFlow程序漏洞检测方法的一个具体示例图;
图5为本发明实施例中TensorFlow程序漏洞检测方法的一个具体示例图;
图6为本发明实施例中TensorFlow程序漏洞检测方法的一个具体示例图;
图7为本发明实施例中TensorFlow程序漏洞检测方法的一个具体示例图;
图8为本发明实施例中TensorFlow程序漏洞检测装置的一个具体示例原理框图;
图9为本发明实施例中电子设备的一个具体示例的原理框图。
具体实施方式
下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,还可以是两个元件内部的连通,可以是无线连接,也可以是有线连接。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
此外,下面所描述的本发明不同实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互结合。
本实施例基于以下代码段进行说明:
代码段1:
Figure BDA0003093373570000071
代码段2:
Figure BDA0003093373570000081
代码段3:
1.user_profile_cnn=tf.reshape(tmp_user_profile_cnn,shape=[-1,num_behavior_max[behavior_cnt],n_output_behavior,1])
2.attention_layer_input=tf.matmul(behavior_inpnt,user_profile_cnn)
……
3.tmp_attention_weights=tf.reshape(attention_weights,shape=[-1,num_behavior_max[behavior_cht],1])
4.behavior_output=tf.mat,mul(tmp_attention_weights,behavior_input)
针对代码段1,张量标签是一个2维数组,张量pred是一个1维数组。其维度大小均未知。当条件loss_type==“mae”成立时,在第2行触发该漏洞,因为运算符absolute_difference规定输入张量需要具有相同的形状(即相同的秩和维度大小)。但如果采用另一个分支(当输入参数loss_type为“logloss”时),则不会触发该漏洞。运算符sparse_softmax_cross_entropy_with_logits允许之前输入参数的秩比标签的秩小1。因此,不会触发漏洞。
针对代码段2中的运算符softmax_cross_entrophy_with_logits(第13行)从输入张量in_y([batch_size,10])和y([batch_size*32,10])生成了归一化概率。它支持“广播”规则,因此,只有两个张量的第一个形状维度的大小相同或其中一个为1时,运算符才能成功。例如,batch_size*32==batch_size或者batch_size==1。就该示例而言,当用户输入的batch_size配置为200时,则会发出错误提示。
针对代码段3,张量behavior_input来自用户输入,其形状(即其秩和维度大小)完全未知。在第1行,将张量tmp_user_profile_cnn重整形为4维张量user_profile_cnn,然后将其通过运算符matmul与behavior_input相乘,这表明behavior_input的秩也为4,不然运算操作将失败。在第3行,将张量tention_weights重整形为3维张量tmp_attention_weights,该值也与behavior_input相乘。因输入张量behavior_input无法同时满足这两个约束,因此应用将始终在matmul运算符之一(第2行或第4行)上失败。
通过上述代码段漏洞发生的规律给出的启示,本实施例提供一种TensorFlow程序漏洞检测方法,如图1所示,包括如下步骤:
S101,遍历每一条程序路径,并根据每一条程序路径构建形状流图,形状流图表征程序中函数的调用关系以及张量信息的传递过程,张量信息包括未知张量信息;
示例性地,程序的形状流图是采用形状信息注释的抽象计算图。根据每一条程序路径构建形状流图的方式可以是以WALA为静态程序分析框架,使用Ariadane作为其前端,以将Python源代码解析为WALA IR,由于TensorFlow程序通常直接通过赋值或参数传递来传播值,因此可以沿着WALA的SSA(单个静态赋值)表示的use-def链进行向后切片。
向后切片的具体方式可以是在满足函数调用时,将被调用方函数的返回值作为新节点添加到图中,将重新添加的返回值继续按照调用关系添加至形状流图中,最后形状流图中包含了结果张量可传递依赖的所有运算符(即TensorFlow API调用)、张量信息和标量信息(例如运算符的实际参数),其中张量信息可以是未知的张量信息。
S102,根据形状流图,建立约束关系式;
示例性地,根据形状流图,建立约束关系式的方式可以是从形状流图上的张量运算符和/或标量指令收集约束关系,根据约束关系,建立约束关系式。本实施例以运算符为Broadcast为例进行说明,当进行一些操作如加法、乘法时,可能需要确保操作数的形状是相匹配的,此时,广播(Broadcast)机制允许在隐式情况下进行填充,完成操作数的形状匹配。因此,当在形状流图中的张量运算符包括Broadcast(D,E,F i,j)时,可以根据广播规则,建立约束关系式。
Broadcast(D,E,F,i,j)表示对秩较高的输入张量D的第i个维度、结果张量F的第i个维度以及与另一输入张量E匹配的第j个维度的约束,其中i≤j,其广播规则为:匹配维度的大小必须相同,或者其中之一为1。那么通过该规可以建立Broadcast(D,E,F i,j)的约束关系的数学表达式为:
((D[i]==E[j])∧(F[i]==D[i]))∨((D[i]==1)∧(F[i]==E[j]))∨((E[j]==1)∧F[i]==D[i]);(1)
上述表达式(1)中表征三种情况,当任意一种情况得到满足,则Broadcast(D,E,Fi,j)就能成立。三种情况分别为:
第一种情况:(D[i]==E[j])∧(F[i]==D[i]);
第二种情况:(D[i]==1)∧(F[i]==E[j]);
第三种情况:(E[j]==1)∧F[i]==D[i]);
其中,第一种情况为当D[i]与E[j]匹配,即D[i]==E[j],那么在此情况下结果张量F的第i维与D相同,即F[i]==D[i],当两者同时能满足上述约束,则表明Broadcast(D,E,F i,j)完成了操作数的形状匹配。
第二种情况为当输入张量D[i]为1,即D[i]==1,此时,结果张量F的第i维与另一输入张量E的第j维维度大小相同,即F[i]==E[j],当两者同时能满足要求,则表明Broadcast(D,E,F i,j)完成了操作数的形状匹配。
第三种情况为当输入张量E[j]为1,即E[j]==1,此时,结果张量F的第i维与另一输入张量D的第j维维度大小相同,即F[i]==D[i],当两者同时能满足要求,则表明Broadcast(D,E,F i,j)完成了操作数的形状匹配。
由于形状流图中包括多个张量运算符和/或标量指令,可以对每一个张量运算符和/或标量指令按照其规则设定约束关系的数学表达式,最后将整个形状流图中的所有约束关系以并集的方式进行联合,将整体约束关系的数学表达式作为约束关系式。张量运算符还可以是conv2d、matmul等,张量运算符的约束关系式目前支持54个常用运算符,每个运算符平均有34.8行代码。对于从未得到支持的库函数返回的张量,其秩可以用符号表示。本实施例对张量运算符和/或标量指令的类型不做限制,本领域技术人员可以根据需要确定。
S103,根据目标约束求解器,对约束关系式进行求解,得到求解结果;根据求解结果,得到相应的检测结果。
示例性地,目标约束求解器可以是Z3求解器,通过Z3求解器对约束关系式进行求解,当求解器对约束关系式生成约束X*32==X∨X==1及其他约束。求解为X=1,则将求解结果作为警告提供给用户;当Z3求解器对约束关系式无法求解,比如,某一约束关系中求解为A=3,另一约束关系中求解为A=4,此时发出错误提示,在错误提示中会精确报告漏洞的位置;报告器搜索引入了无法满足约束的运算符,通过将运算符引入的约束关系对应的数学表达式依次删除的方式,排除无法满足约束的运算符。具体可以是按照约束关系对应的运算符在形状流图中添加顺序相反的顺序,依次删除运算符对应的约束关系数学表达式,直至约束关系式能够满足约束条件,那么漏洞则可被定位至上一个删除的运算符。在实际操作中,可以使用二分查找加快搜索过程。
本实施例提供的TensorFlow程序漏洞检测方法,通过遍历每一条程序路径,并根据每一条程序路径构建形状流图,根据形状流图,建立约束关系式,而对于未知的张量信息,也可以将其建立在约束关系式中,通过求解器对该约束关系式进行求解,从而判断其是否满足约束条件,从而避免了静态分析检测在没有完整的形状信息的情况下,不能有效完成形状漏洞的检测的问题,提高了漏洞检测的准确性。
作为本实施例一种可选的实施方式,根据每一条程序路径构建形状流图,包括:通过赋值或参数传递规则以及节点属性,对目标调用函数向后切片,得到程序路径上的调用关系;采集调用关系之间的形状信息;根据程序路径上的调用关系以及调用关系之间的形状信息,构建形状流图。
示例性地,赋值可以是用户外部输入的数据信息,参数传递规则可以通过实际的代码引用关系确定,节点属性可以包括运算符对应的节点以及WALA IR解析出的节点,比如,phi节点,在SSA中if语句不同分支的收敛点处有一个phi节点,通过phi节点可以将形状流图按照不同分支进行分割,形成多个形状流图,当程序路径中存在if语句时,在构建形状流图时,可以对phi节点之前形成的形状流图进行复制,然后分别接if语句的各个分支,形成多个形状流图。具体可以以代码段1为例进行说明,其构建出的形状流图如图2所示,其中,爬虫为出现漏洞的位置,椭圆形节点为张量运算符,方形节点为标量,边缘注释有张量(黑点)的形状信息。
在第1行以及第3行代码中,表示出if语句的两条路径,因此,在WALA IR会将该if语句解析出一个phi节点,因此,形成了分支0以及分支1,针对不同的分支,需要将其前序代码形成的形状流图进行复制,连接在两个分支,以形成两个完整的形状流图。
根据每一条程序路径构建形状流图的具体过程可以通过以代码段2为例进行说明:在代码段2中目标调用函数可以是session.run(),也即从session.run()的调用开始向后切片,即结果张量train_step。由于train_step是从运算符minimum返回的(见第14行),因此运算符及其操作数(即cross_entropy)将被添加到图中,同样,cross_entropy由运算符softmax_cross_entropy_with_logits生成(第13行)。因此就包含了运算符及其操作数(in_y和y)。从y开始,内联函数调用并进行预测(第12行),然后继续从其返回值logit进行切片(第9行)。接下来,函数def_fully_connect在第8行和第7行按此顺序内联两次。
当根据调用关系建立完基本的流图形式后,需要采集调用关系之间的形状信息,采集调用关系之间的形状信息的方式可以是沿use-def链传播的常量和标量变量都记录下来,可以通过常量传播以及根据TensorFlow API记录的语义计算具体形状信息的方法来尽可能多地推断具体信息,并将记录以及推断的信息填入形状流图的对应处,以形成完整的形状流图。此处的形状流图如图3所示。
本实施例在采集调用关系之间的形状信息时,还考虑以下两种特殊情况:
第一种情况:程序路径中可能存在tf.set_shape()函数,如代码段4中第2行和第4行所示,因此,在采集调用关系之间的形状信息时,需要检查tf.set_shape()函数的用途,并根据其用途相应地修改调用关系之间的形状信息。
代码段4:
1.x=tf.placeholder(tf.float32,[None])
2.x.set_shape([1028178])
3.y=tf.identity(x)
4.y.set_shape([478,717,3])
5.X=np.random.normal(0,0.1,1028178)
6.Y=sess.run(y,feed_dict=x∶X)
第二种情况:在初始化具有给定形状的张量时,值将作为参数传递到形状构造函数中并存储在其对应的域中。通常情况下,需要指针分析来计算域相关的依赖关系。但是,形状对象的这些字段在其构造函数中(初始化期间)仅存储一次。因此,在遇到域读取时,需要搜索对应域的唯一存储。
按照上述方法对代码段2的整个程序路径建立的整体形状流图概图如图4所示,本实施例以图4所示的形状流图对程序进行说明:
图4中的节点为运算符,用传播张量的形状信息注释每条边。张量的形状取决于输入:“占位符”张量可将某些维度(或整个形状)设置为无,执行图时,其形状通过在以下情况下将数据传入占位符(使用feed_dict运算符,例如第18行)来实例化。以调用Session.run()、Tensor.eval()或Operation.run()来执行计算图。在代码段2中第18行执行图,并从运算符train_step(第14行)获得结果。输入数据train_image和train_lab(第15行)分别传入占位符in_x(第10行)和in_y(第11行)。注意,输入数据的第一维由输入参数batch_size配置。因此,张量in_x和张量in_y的形状分别为[batch_size,28,28,1]和[batch_size,10]。
Tensor in_x作为实际参数传递给第12行的predict()函数,由conv2d运算符(第5行)(卷积的核心运算符)进行处理。conv2d运算符一般用于提取复杂神经网络中的中间特征。采用一个4维输入张量、一个4维滤波张量和一个带4个元素的步幅矢量作为输入。运用“SAME”的填充策略后,cond2d(x,f,s,"SAME")将生成形状张量
Figure BDA0003093373570000141
此后,用记号x[i]表示张量x形状的第i个维度,并用记号si表示向量s的基本元素,conv2d运算符产生形状张量mp[batch_size,28,28,32],因此,在图4中的Conv2d运算符到reshape运算符的形状信息为[batch_size,28,28,32]。
第6行的reshape运算符将输入张量mp的形状更改为指定的形状[-1,28*28],即一个二维数组。在此,特殊维度“-1”表示需要动态计算相应维度的大小。如果张量的大小(张量中的项目总数)与指定形状的大小相同,就可以正确地调整其形状。改变形状后,在第6行,得到了一个新的张量[batch_size*32,28*28],因此,在图4中的reshape运算符到matmul运算符的形状信息为[batch_size*32,28*28]。
在第7行,用reshape运算符操作后的张量作为其实际参数调用函数full_connect。因此,运算符get_variable(第2行)和matmul(第3行)就包含在计算图中。matmul运算符将改变形状后的张量([batch_size*32,28*28])与张量fc_w([28*28,128])相乘,得到形状为[batch_size*32,128]的新张量fc。接下来,在第8行,张量fc再次由相同的函数处理。生成了张量logit([batch_size*32,10])并以y返回,因此,matmul运算符到matmul运算符的形状信息为[batch_size*32,128],matmul运算符到tf.nn.softmax_cross_entropy_with_logits运算符的形状信息为[batch_size*32,10]。
由此可见,在图4中的推算出来的形状信息中也含有未知信息batch_size,但通过此方法,对其建立约束关系式,仍然可以通过求解器求解,判断其是否存在漏洞。
作为本实施例一种可选的实施方式,根据张量运算符和/或标量指令,得到相应约束关系,包括:
当张量T的秩为常数C,具体化张量T时,相应约束关系为:
Figure BDA0003093373570000151
其中,T[i]为第i维的形状,|T|为T的元素总数量,T[-1]为T的最后一个形状维度的大小,T[c-1]为T的C-1个形状维度的大小,
Figure BDA0003093373570000152
为T的秩。
示例性地,在张量T的秩为常数
Figure BDA0003093373570000153
时,可以从以下两个方面对张量T的具体化进行约束:
Figure BDA0003093373570000154
表示张量T的大小具体化为其所有维度大小的乘积;T[-1]==T[C-1]表示张量T具体化为最后一个形状维度的大小与C-1个形状维度的大小相等。
根据上述具体化T的约束关系,那么当张量运算符为Y=reshape(A,B)时,约束关系为:
Figure BDA0003093373570000161
其中,Y[i]表征张量Y的第i维形状,Bi表征矢量B的第i个元素的数值,
Figure BDA0003093373570000162
表征张量Y的秩,|B|表征矢量B的元素数量,|A|表征张量A的元素数量,concretize(Y,|B|)表征通过|B|实现对张量Y的具体化。
Y=reshape(A,B)运算符表征将张量A重整形为大小相同的张量Y,且张量Y的形状由矢量B确定。因此,|Y|==|A|表征满足重整形要求中张量A与张量Y大小相同,
Figure BDA0003093373570000163
表征张量Y的秩(维数)与矢量的元素数量一致,∧0≤i≤|B|Y[i]==Bi表征矢量B的每一个元素大小与张量Y中对应维度大小一致,从而满足重整形要求中的张量Y的形状由矢量B确定的条件,由于|B|表征的是矢量B的元素数量,为一个常数,那么可以将张量Y引入具体化。
当张量运算符为softmax_cross_entropy_with_logits,即H=logits(K,M),且张量K的秩和/或张量M的秩不为常数时,约束关系为:
Figure BDA0003093373570000164
其中,
Figure BDA0003093373570000165
表示张量K的秩,
Figure BDA0003093373570000166
表示张量M的秩,Broadcast(K,M,H,0,0)表征对输入张量K的第1个维度、结果张量H的第1个维度以及与其他输入张量M匹配的第1个维度的约束,Broadcast(K,M,H,-1,-1)表征对输入张量K的最后1个维度、结果张量H的最后1个维度以及与其他输入张量M匹配的最后1个维度的约束,K[0]表征张量K的第一维度的大小,M[0]表征张量M的第一维度的大小,H[0]表征张量H的第一维度的大小。
示例性地,当
Figure BDA0003093373570000171
的情况下,约束将应用于三个张量K,M,H的第一个和最后一个维度;在其他两种情况下(
Figure BDA0003093373570000172
Figure BDA0003093373570000173
),将约束应用于三个张量的最后一个维度,结果张量H采用秩较高的张量的大小(例如
Figure BDA0003093373570000174
时,K[0]==H[0];当
Figure BDA0003093373570000175
时,M[0]==H[0])。
当张量运算符为H=logits(K,M),且张量K的秩和张量M的秩都为常数时,约束关系为:
Figure BDA0003093373570000176
其中,
Figure BDA0003093373570000177
表示张量K的秩,
Figure BDA0003093373570000178
表示张量M的秩,
Figure BDA0003093373570000179
表征通过
Figure BDA00030933735700001710
实现对张量H的具体化,
Figure BDA00030933735700001711
表征对输入张量K的所有维度、结果张量H的所有维度以及与其他输入张量M匹配的所有维度的约束,
Figure BDA00030933735700001712
表征张量K从张量H中复制第一维度到第
Figure BDA00030933735700001713
维度的信息,
Figure BDA00030933735700001714
表征广播匹配张量K与张量M的
Figure BDA00030933735700001715
Figure BDA00030933735700001716
的维度信息,
Figure BDA00030933735700001717
表征通过
Figure BDA00030933735700001718
实现对张量H的具体化,
Figure BDA00030933735700001719
表征张量H从张量K中复制第一维度到第
Figure BDA00030933735700001720
维度的信息,
Figure BDA0003093373570000181
表征广播匹配张量K与张量M的
Figure BDA0003093373570000182
Figure BDA0003093373570000183
的维度信息。
上述约束公式包括三种情况:
Figure BDA0003093373570000184
以及
Figure BDA0003093373570000185
Figure BDA0003093373570000186
时,结果张量H被具体化,且每个维度都由Broadcast规则定义。否则,结果张量H将以较高的秩具体化(当
Figure BDA0003093373570000187
时,
Figure BDA0003093373570000188
Figure BDA0003093373570000189
时,
Figure BDA00030933735700001810
),然后,直接从较高秩的张量复制高维度并广播匹配的维度。
针对上述方法的效果,本实施例以有效性、效率等方面给出实验结果。
针对有效性,下表1给出测试结果,表1为通过本实施例提供的TensorFlow程序漏洞检测方法以及Pythia工具实现对工业代码以及开源代码中的漏洞检测结果对比,其中,#TP为报告的真实错误的数量;#FP为误报的数量;#FN为漏报的数量,可见本实施例提供的方法,其漏检率以及误报率都有极大的优越性。
表1
Figure BDA00030933735700001811
总体而言,本实施例提供的方法成功地检测出了60个工业程序漏洞中的40个,以及14个开源应用程序漏洞中的9个。共检测到有33个错误(24个来自工业程序、9个来自开源程序)和16个警告(全部来自工业程序)。所报告的33个错误都可以触发漏洞。16条警告受限于用户输入,在这种情况下,本实施例提供的方法会给出一个期望的输入值。并且从表1可以看出并未给出任何误报的情况,误报率极低。
在以下代码段5对于检测结果中的错误提示进行展示:
Figure BDA0003093373570000191
该错误在第10行触发。运算符absolute_difference要求输入相同形状的参数以产生约束
Figure BDA0003093373570000192
此外,本方法可推断出layer8的形状为[-1,1](第9行),而var_0的形状为[-1](第3行),由此,得出了约束
Figure BDA0003093373570000193
而这些条件是无法满足的。因此,报告了一个错误。
在以下代码段6对于检测结果中的错误提示进行说明:
Figure BDA0003093373570000194
报告的警告消息第3行的cloud_platform_api0生成了形状为[batch_size,67](batch size未知)的张量var_1并将其传播到var_0(第5行)。运算符在第6行进行重整形,将var_0整形为指定的形状[-1 66],并期望var_0的大小与指定形状的大小匹配,即batch_size×67==X×66,其中X表示向量的符号值。在这种限制下,本方法将发出警告,如图5所示。警告和错误消息无论在代码审查还是事后调试中都对开发人员有所帮助。
针对效率,如图6所示,为本方法在60个工业程序上的分析时间,在配备了32GBRAM的标准笔记本电脑上,可以在3秒内完成所有的分析,其中,分析时间包括探索程序路径、收集和求解约束及查找漏洞位置的时间。
如图7所示,给出了形状流图的大小分布形状流图的大小为12到810个节点,平均大小为246.9个节点。每幅形状流图的平均约束数量为914.8。大多数约束都是常数相等约束,Z3求解器可非常有效地求解。
本实施例提供一种TensorFlow程序漏洞检测装置,如图8所示,包括:
形状流图构建模块201,用于遍历每一条程序路径,并根据每一条程序路径构建形状流图,所述形状流图表征程序中函数的调用关系以及张量信息的传递过程,所述张量信息包括未知张量信息;具体内容参见上述方法实施例对应部分,在此不再赘述。
约束关系式建立模块202,用于根据所述形状流图,建立约束关系式;具体内容参见上述方法实施例对应部分,在此不再赘述。
检测结果确定模块203,用于根据目标约束求解器,对所述约束关系式进行求解,得到求解结果,根据所述求解结果,得到相应的检测结果。具体内容参见上述方法实施例对应部分,在此不再赘述。
作为本实施例一种可选的实施方式,形状流图构建模块201,包括:
调用关系确定模块,用于通过赋值或参数传递规则以及节点属性,对所述目标调用函数向后切片,得到所述程序路径上的调用关系;具体内容参见上述方法实施例对应部分,在此不再赘述。
形状信息采集模块,用于采集所述调用关系之间的形状信息;具体内容参见上述方法实施例对应部分,在此不再赘述。
形状流图构建子模块,用于根据所述程序路径上的调用关系以及所述调用关系之间的形状信息,构建所述形状流图。具体内容参见上述方法实施例对应部分,在此不再赘述。
作为本实施例一种可选的实施方式,约束关系式建立模块202,包括:
信息提取模块,用于提取所述形状流图中的每一个张量运算符和/或标量指令;具体内容参见上述方法实施例对应部分,在此不再赘述。
约束关系确定模块,用于根据所述张量运算符和/或标量指令,得到相应约束关系;具体内容参见上述方法实施例对应部分,在此不再赘述。
约束关系式建立子模块,用于根据所述约束关系,形成约束关系式。具体内容参见上述方法实施例对应部分,在此不再赘述。
作为本实施例一种可选的实施方式,约束关系式建立模块202,包括:
第一约束关系确定模块,用于当张量T的秩为常数C,具体化张量T时,相应约束关系为:
Figure BDA0003093373570000211
其中,T[i]为第i个形状维度的大小,|T|为T的元素总数量,T[-1]为T的最后一个形状维度的大小,T[c-1]为T的C-1个形状维度的大小,
Figure BDA0003093373570000212
为T的秩。具体内容参见上述方法实施例对应部分,在此不再赘述。
作为本实施例一种可选的实施方式,约束关系式建立模块202,包括:
第二约束关系确定模块,用于当所述张量运算符为Y=reshape(A,B)时,所述约束关系为:
Figure BDA0003093373570000213
其中,Y[i]表征张量Y的第i维形状,Bi表征矢量B的第i个元素的数值,
Figure BDA0003093373570000221
表征张量Y的秩,|B|表征张量B的元素数量,|A|表征张量A的元素数量,concretize(Y,|B|)表征通过|B|实现对张量Y的具体化。具体内容参见上述方法实施例对应部分,在此不再赘述。
作为本实施例一种可选的实施方式,约束关系式建立模块202,包括:
第三约束关系确定模块,用于当所述张量运算符为Broadcast(D,E,F i,j)时,所述约束关系为:
((D[i]==E[j])∧(F[i]==D[i]))∨((D[i]==1)∧(F[i]==E[j]))∨((E[j]==1)∧F[i]==D[i]);
其中,D[i]表示张量D的第i维度大小,E[j]表示张量E的第j维度大小,F[i]表示张量F的第i维度大小。具体内容参见上述方法实施例对应部分,在此不再赘述。
作为本实施例一种可选的实施方式,约束关系式建立模块202,包括:
第四约束关系确定模块,用于当所述张量运算符为H=logits(K,M),且张量K的秩和/或张量M的秩不为常数时,所述约束关系为:
Figure BDA0003093373570000222
其中,
Figure BDA0003093373570000223
表示张量K的秩,
Figure BDA0003093373570000224
表示张量M的秩,Broadcast(K,M,H,0,0)表征对输入张量K的第1个维度、结果张量H的第1个维度以及与其他输入张量M匹配的第1个维度的约束,Broadcast(K,M,H,-1,-1)表征对输入张量K的最后1个维度、结果张量H的最后1个维度以及与其他输入张量M匹配的最后1个维度的约束,K[0]表征张量K的第一维度的大小,M[0]表征张量M的第一维度的大小,H[0]表征张量H的第一维度的大小。具体内容参见上述方法实施例对应部分,在此不再赘述。
作为本实施例一种可选的实施方式,约束关系式建立模块202,包括:
第五约束关系确定模块,用于当所述张量运算符为H=logits(K,M),且张量K的秩和张量M的秩都为常数时,所述约束关系为:
Figure BDA0003093373570000231
其中,
Figure BDA0003093373570000232
表示张量K的秩,
Figure BDA0003093373570000233
表示张量M的秩,
Figure BDA0003093373570000234
表征通过
Figure BDA0003093373570000235
实现对张量H的具体化,
Figure BDA0003093373570000236
表征对输入张量K的所有维度、结果张量H的所有维度以及与其他输入张量M匹配的所有维度的约束,
Figure BDA0003093373570000237
表征张量K从张量H中复制第一维度到第
Figure BDA0003093373570000238
维度的信息。
Figure BDA0003093373570000239
表征广播匹配张量K与张量M的
Figure BDA00030933735700002310
Figure BDA00030933735700002311
的维度信息,
Figure BDA00030933735700002312
表征通过
Figure BDA00030933735700002313
实现对张量H的具体化,
Figure BDA00030933735700002314
表征张量H从张量K中复制第一维度到第
Figure BDA00030933735700002315
维度的信息,
Figure BDA00030933735700002316
表征广播匹配张量K与张量M的
Figure BDA00030933735700002317
Figure BDA00030933735700002318
均维度信息。具体内容参见上述方法实施例对应部分,在此不再赘述。
作为本实施例一种可选的实施方式,检测结果确定模块203,包括:
错误警报模块,用于当求解结果为无法求解约束,则发出错误警报;具体内容参见上述方法实施例对应部分,在此不再赘述。
警告模块,用于当求解结果为用户输入受常数约束,则显示期望用户输入。具体内容参见上述方法实施例对应部分,在此不再赘述。
作为本实施例一种可选的实施方式,所述目标约束求解器为Z3求解器。具体内容参见上述方法实施例对应部分,在此不再赘述。
本申请实施例还提供一种电子设备,如图9所示,处理器310和存储器320,其中处理器310和存储器320可以通过总线或者其他方式连接。
处理器310可以为中央处理器(Central Processing Unit,CPU)。处理器310还可以为其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。
存储器320作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本发明实施例中的TensorFlow程序漏洞检测方法对应的程序指令/模块。处理器通过运行存储在存储器中的非暂态软件程序、指令以及模块,从而执行处理器的各种功能应用以及数据处理。
存储器320可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器320可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
所述一个或者多个模块存储在所述存储器320中,当被所述处理器310执行时,执行如图1所示实施例中的TensorFlow程序漏洞检测方法。
上述电子设备的具体细节可以对应参阅图1所示的实施例中对应的相关描述和效果进行理解,此处不再赘述。
本实施例还提供了一种计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令可执行上述任意方法实施例1中TensorFlow程序漏洞检测方法。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)、随机存储记忆体(Random Access Memory,RAM)、快闪存储器(Flash Memory)、硬盘(Hard DiskDrive,缩写:HDD)或固态硬盘(Solid-State Drive,SSD)等;所述存储介质还可以包括上述种类的存储器的组合。
显然,上述实施例仅仅是为清楚地说明所作的举例,而并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引伸出的显而易见的变化或变动仍处于本发明创造的保护范围之中。

Claims (13)

1.一种TensorFlow程序漏洞检测方法,其特征在于,包括如下步骤:
遍历每一条程序路径,并根据每一条程序路径构建形状流图,所述形状流图表征程序中函数的调用关系以及张量信息的传递过程,所述张量信息包括未知张量信息;
根据所述形状流图,建立约束关系式;
根据目标约束求解器,对所述约束关系式进行求解,得到求解结果,根据所述求解结果,得到相应的检测结果。
2.根据权利要求1所述的方法,其特征在于,所述根据每一条程序路径构建形状流图,包括:
通过赋值或参数传递规则以及节点属性,对所述目标调用函数向后切片,得到所述程序路径上的调用关系;
采集所述调用关系之间的形状信息;
根据所述程序路径上的调用关系以及所述调用关系之间的形状信息,构建所述形状流图。
3.根据权利要求1所述的方法,其特征在于,所述根据所述形状流图,建立约束关系式,包括:
提取所述形状流图中的每一个张量运算符和/或标量指令;
根据所述张量运算符和/或标量指令,得到相应约束关系;
根据所述约束关系,形成约束关系式。
4.根据权利要求3所述的方法,其特征在于,所述根据所述张量运算符和/或标量指令,得到相应约束关系,包括:
当张量T的秩为常数C,具体化张量T时,相应约束关系为:
Figure FDA0003093373560000021
其中,T[i]为第i个形状维度的大小,|T|为T的元素总数量,T[-1]为T的最后一个形状维度的大小,T[c-1]为T的C-1个形状维度的大小,
Figure FDA0003093373560000022
为T的秩。
5.根据权利要求4所述的方法,其特征在于,所述根据所述张量运算符和/或标量指令,得到相应约束关系,包括:
当所述张量运算符为Y=reshape(A,B)时,所述约束关系为:
Figure FDA0003093373560000023
其中,Y[i]表征张量的第i维形状,Bi表征矢量B的第i个元素的数值,
Figure FDA0003093373560000024
表征张量的秩,|B|表征张量B的元素数量,|A|表征张量A的元素数量,concretize(Y,|B|)表征通过|B|实现对张量Y的具体化。
6.根据权利要求4所述的方法,其特征在于,所述根据所述张量运算符和/或标量指令,得到相应约束关系,包括:
当所述张量运算符为Broadcast(D,E,F i,j)时,所述约束关系为:
((D[i]==E[j])∧(F[i]==D[i]))∨((D[i]==1)∧(F[i]==E[j]))∨((E[j]==1)∧F[i]==D[i]);
其中,D[i]表示张量D的第i维度大小,E[j]表示张量E的第j维度大小,F[i]表示张量F的第i维度大小。
7.根据权利要求6所述的方法,其特征在于,所述根据所述张量运算符和/或标量指令,得到相应约束关系,包括:
当所述张量运算符为H=logits(K,M),且张量K的秩和/或张量M的秩不为常数时,所述约束关系为:
Figure FDA0003093373560000031
其中,
Figure FDA0003093373560000032
表示张量K的秩,
Figure FDA0003093373560000033
表示张量M的秩,Broadcast(K,M,H,0,0)表征对输入张量K的第1个维度、结果张量H的第1个维度以及与其他输入张量M匹配的第1个维度的约束,Broadcast(K,M,H,-1,-1)表征对输入张量K的最后1个维度、结果张量H的最后1个维度以及与其他输入张量M匹配的最后1个维度的约束,K[0]表征张量K的第一维度的大小,M[0]表征张量M的第一维度的大小,H[0]表征张量H的第一维度的大小。
8.根据权利要求6所述的方法,其特征在于,所述根据所述张量运算符和/或标量指令,得到相应约束关系,包括:
当所述张量运算符为H=logits(K,M),且张量K的秩和张量M的秩都为常数时,所述约束关系为:
Figure FDA0003093373560000041
其中,
Figure FDA0003093373560000042
表示张量K的秩,
Figure FDA0003093373560000043
表示张量M的秩,
Figure FDA0003093373560000044
表征通过
Figure FDA0003093373560000045
实现对张量H的具体化,
Figure FDA0003093373560000046
表征对输入张量K的所有维度、结果张量H的所有维度以及与其他输入张量M匹配的所有维度的约束,
Figure FDA0003093373560000047
表征张量K从张量H中复制第一维度到第
Figure FDA0003093373560000048
维度的信息,
Figure FDA0003093373560000049
表征广播匹配张量K与张量M的
Figure FDA00030933735600000410
Figure FDA00030933735600000411
的维度信息,
Figure FDA00030933735600000412
表征通过
Figure FDA00030933735600000413
实现对张量H的具体化,
Figure FDA00030933735600000414
表征张量H从张量K中复制第一维度到第
Figure FDA00030933735600000415
维度的信息,
Figure FDA00030933735600000416
表征广播匹配张量K与张量M的
Figure FDA00030933735600000417
Figure FDA00030933735600000418
的维度信息。
9.根据权利要求1所述的方法,其特征在于,所述根据所述求解结果,得到相应的检测结果,包括:
当求解结果为无法求解约束,则发出错误警报;
当求解结果为用户输入受常数约束,则显示期望用户输入。
10.根据权利要求1所述的方法,其特征在于,所述目标约束求解器为Z3求解器。
11.一种TensorFlow程序漏洞检测装置,其特征在于,包括:
形状流图构建模块,用于遍历每一条程序路径,并根据每一条程序路径构建形状流图,所述形状流图表征程序中函数的调用关系以及张量信息的传递过程,所述张量信息包括未知张量信息;
约束关系式建立模块,用于根据所述形状流图,建立约束关系式;
检测结果确定模块,用于根据目标约束求解器,对所述约束关系式进行求解,得到求解结果,根据所述求解结果,得到相应的检测结果。
12.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1-10任一所述的TensorFlow程序漏洞检测方法的步骤。
13.一种存储介质,其上存储有计算机指令,其特征在于,该指令被处理器执行时实现权利要求1-10任一所述的TensorFlow程序漏洞检测方法的步骤。
CN202110606581.3A 2021-05-31 2021-05-31 一种TensorFlow程序漏洞检测方法、装置及电子设备 Pending CN113221126A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110606581.3A CN113221126A (zh) 2021-05-31 2021-05-31 一种TensorFlow程序漏洞检测方法、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110606581.3A CN113221126A (zh) 2021-05-31 2021-05-31 一种TensorFlow程序漏洞检测方法、装置及电子设备

Publications (1)

Publication Number Publication Date
CN113221126A true CN113221126A (zh) 2021-08-06

Family

ID=77082050

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110606581.3A Pending CN113221126A (zh) 2021-05-31 2021-05-31 一种TensorFlow程序漏洞检测方法、装置及电子设备

Country Status (1)

Country Link
CN (1) CN113221126A (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040117772A1 (en) * 2002-12-13 2004-06-17 International Business Machines Corporation Method and apparatus for finding errors in software programs using satisfiability of constraints
CN102567200A (zh) * 2011-12-14 2012-07-11 北京航空航天大学 基于函数调用图的并行化安全漏洞检测方法
CN110245496A (zh) * 2019-05-27 2019-09-17 华中科技大学 一种源代码漏洞检测方法及检测器和其训练方法及系统
US20200349465A1 (en) * 2019-05-03 2020-11-05 Google Llc Reshape and broadcast optimizations to avoid unnecessary data movement
CN112069507A (zh) * 2020-09-21 2020-12-11 西安交通大学 机器学习框架漏洞检测方法、系统、设备及可读存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040117772A1 (en) * 2002-12-13 2004-06-17 International Business Machines Corporation Method and apparatus for finding errors in software programs using satisfiability of constraints
CN102567200A (zh) * 2011-12-14 2012-07-11 北京航空航天大学 基于函数调用图的并行化安全漏洞检测方法
US20200349465A1 (en) * 2019-05-03 2020-11-05 Google Llc Reshape and broadcast optimizations to avoid unnecessary data movement
CN110245496A (zh) * 2019-05-27 2019-09-17 华中科技大学 一种源代码漏洞检测方法及检测器和其训练方法及系统
CN112069507A (zh) * 2020-09-21 2020-12-11 西安交通大学 机器学习框架漏洞检测方法、系统、设备及可读存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
GUY KATZ: "Reluplex: An Efficient SMT Solver for Verifying Deep Neural Networks", 《ARXIV》, pages 3 - 6 *
SIFIS LAGOUVARDOS等: "Static Analysis of Shape in TensorFlow Programs", 《34TH EUROPEAN CONFERENCE ON OBJECT-ORIENTED PROGRAMMING (ECOOP 2020)》, pages 1 - 5 *

Similar Documents

Publication Publication Date Title
US9983984B2 (en) Automated modularization of graphical user interface test cases
US8131768B2 (en) Symbolic program analysis using term rewriting and generalization
US10963301B2 (en) Scheduling operations on a computation graph
Nguyen et al. Cross-language program slicing for dynamic web applications
Reynolds et al. Solving quantified linear arithmetic by counterexample-guided instantiation
Quilbeuf et al. A logic for the statistical model checking of dynamic software architectures
US10956153B2 (en) Violation match sets
Etessami et al. Model checking of recursive probabilistic systems
Johansson Lemma discovery for induction: a survey
CN114492772A (zh) 神经网络张量形状追踪方法和计算平台
Naeem et al. Scalable mutation testing using predictive analysis of deep learning model
Liu et al. Detecting TensorFlow program bugs in real-world industrial environment
Sherman et al. Structurally defined conditional data-flow static analysis
Burgstaller et al. A symbolic analysis framework for static analysis of imperative programming languages
CN112631925A (zh) 一种单变量原子违背缺陷的检测方法
US10983966B2 (en) Database algebra and compiler with environments
CN113221126A (zh) 一种TensorFlow程序漏洞检测方法、装置及电子设备
Singh Ajax asynchronous database refresh
Singh Ajax Complexity
Arora et al. Probabilistic model checking of incomplete models
Libal Regular patterns in second-order unification
US10817504B2 (en) Constraint satisfaction software tool for database tables
Jakobsson Automatic cost analysis for imperative bsp programs
US8010477B2 (en) Integrated problem solving system
Kumar et al. Scaling probabilistic timing verification of hardware using abstractions in design source code

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination