一种针对深度学习缺陷警报的自动验证方法

文档序号:37313607发布日期:2024-03-13 21:05阅读:17来源:国知局
一种针对深度学习缺陷警报的自动验证方法

本发明涉及缺陷检测方法,具体是一种针对深度学习缺陷警报的自动验证方法。


背景技术:

1、深度学习进行漏洞预测是近些年来的热门研究领域,但是它带来高效率的同时也带来了很高的误报率,导致深度学习给出的预测结果不完全可信。对于深度学习得到的缺陷警报,往往还需要人工去验证其真实性。为了降低深度学习进行漏洞预测的误报率和减少人工验证所需时间,迫切需要一种针对深度学习缺陷警报的自动验证方法。


技术实现思路

1、本发明要解决的技术问题是提供一种针对深度学习缺陷警报的自动验证方法,自动验证深度学习缺陷警报的真实性,降低了深度学习预测缺陷的误报率。

2、本发明的技术方案为:

3、一种针对深度学习缺陷警报的自动验证方法,包括有以下步骤:

4、(1)、使用训练好的深度学习模型对待测程序进行预测,得到缺陷警报,缺陷警报包含潜在缺陷的类型和位置;

5、(2)、生成从待测程序入口到每个潜在缺陷位置的可达路径集p;

6、(3)、收集每个潜在缺陷位置处缺陷变量的上下文信息;

7、(4)、对每个可达路径集p中的可达路径进行排序,具体是依据每条可达路径对应区间的区间大小、路径约束中与缺陷变量相关的变量个数、以及路径约束中的变量依赖关系给每条可达路径赋予权重,然后根据可达路径集p中每条可达路径的权重对可达路径进行排序;

8、(5)、按照可达路径集p中可达路径排序后的路径顺序,根据自定义的缺陷模式库和收集到的缺陷变量上下文信息,构造可达路径集p中每条可达路径的触发约束和路径约束,路径约束是可达路径中存在的约束信息,触发约束是为了触发缺陷而添加的约束信息;

9、(6)、将每条可达路径的触发约束和路径约束送入z3约束求解器进行求解,由求解结果确认可达路径为安全路径、可触发缺陷路径或未知路径;

10、(7)、根据z3约束求解器的求解结果判定每个潜在缺陷为真实缺陷、误报缺陷或无法确定缺陷。

11、所述的生成从待测程序入口到每个潜在缺陷位置的可达路径集p的具体步骤为:

12、s21、收集从待测程序入口到每个潜在缺陷位置处所有调用到的函数的控制流图;

13、s22、修改所有调用到函数控制流图内的基本块id,并根据修改前后基本块id之间的对应关系,更新所有调用到函数控制流图内基本块之间的前驱和后继关系,从而构建得到过程间双向控制流图interproceduralcfg;

14、s23、使用深度遍历方法反向搜索interproceduralcfg,获得从待测程序入口到每个潜在缺陷位置处的所有路径,构建得到从待测程序入口到每个潜在缺陷位置的路径集;

15、s24、使用基于区间运算的静态检测方法剔除路径集中的不可达路径,构建得到可达路径集p。

16、所述的收集每个潜在缺陷位置处缺陷变量的上下文信息的具体步骤为:

17、s31、遍历待测程序源代码中的语句,语句包括有变量声明语句vardecl和变量引用语句declrefexpr;

18、s32、按照可达路径集p中的每条可达路径,遍历过程间双向控制流图interproceduralcfg中的每个基本块;

19、s33、以stmt为单位遍历基本块,当stmt中存在变量声明语句vardecl,收集入参变量、缺陷变量和相关变量的声明信息,并标记缺陷变量的声明信息;当stmt中存在变量引用语句declrefexpr,查看是否存在赋值或函数调用,若存在,则更新变量声明信息,直到该条可达路径上的基本块被遍历完成为止,从而收集得到每个缺陷变量的上下文信息。

20、所述的对每个可达路径集p中的可达路径进行排序,具体步骤为:

21、s41、收集待测程序入口函数中每个入参变量到缺陷变量区间运算后的区间大小作为权重依据之一,区间越大,权重越大;对于第i条可达路径上的第j个入参变量的区间大小为di=[d-,d+],其中,d-为第j个入参变量区间中的最小值,d+为第j个入参变量区间中的最大值;

22、第j个入参变量区间权重var_weightj的计算公式见下式(1):

23、

24、式(1)中,max_value和min_value为第j个入参变量类型的最大值和最小值;

25、第i条可达路径区间权重interval_weighti的计算公式见下式(2):

26、interval_weighti=∑var_weightj (2);

27、s42、收集路径约束中变量的个数作为权重依据之一,其中遍历待测程序中的基本块,获取在路径约束中的变量数量,变量数量越多,权重越小;

28、第i条可达路径变量个数权重var_num_weighti的计算公式见下式(3):

29、

30、式(3)中,var_numi为第i条路径上约束变量的个数,var_sum为每个潜在缺陷所有可达路径上约束变量的个数;

31、s43、收集路径约束中变量的依赖关系,将依赖关系个数作为权重依据之一,依赖关系越多,权重越小;

32、第i条可达路径依赖关系权重dep_num_weighti的计算公式见下式(4):

33、

34、式(4)中,dep_numi为第i条路径上依赖关系的个数,dep_sum为每个潜在缺陷所有可达路径上依赖关系的个数;

35、s44、将区间权重interval_weighti、变量个数权重var_num_weighti和依赖关系权重dep_num_weighti进行相加运算,得到每条可达路径的权重值,然后构造可达路径集p的偏序关系,并根据可达路径集p中每条可达路径权重值的大小对可达路径集p中的可达路径进行排序。

36、所述的对可达路径集p中的可达路径进行排序,构建得到时间优先排序集和测试用例优先排序集,时间优先排序集是采用权重从大到小的顺序排序,测试用例优先排序集是采用权重从小到大的顺序排序。

37、所述的缺陷模式库中包含六种缺陷模式:内存泄漏、释放后使用、空指针缺陷、数组越界、非法计算和缓冲区溢出。

38、所述的构造可达路径集p中每条可达路径的触发约束和路径约束,首先是根据缺陷变量的上下文信息,判断潜在缺陷属于以上六种缺陷模式库中的哪一种,再根据缺陷模式库中对应的缺陷模式和缺陷变量从而构造得到每条可达路径的约束集合,约束集合中包含每条可达路径的所有触发约束和路径约束,然后按照可达路径集p中可达路径排序后的路径顺序,构造得到可达路径集p中每条可达路径的触发约束和路径约束。

39、所述的将每条可达路径的触发约束和路径约束送入z3约束求解器进行求解,由求解结果确认可达路径为安全路径、可触发缺陷路径或未知路径,具体步骤为:

40、s61、安全路径s的确认:潜在缺陷的所有路径约束和触发约束满足则该条可达路径确认为安全路径s;

41、s62、可触发缺陷路径t的确认:潜在缺陷的所有路径约束和触发约束满足有解,则该条可达路径确认为可触发缺陷路径t;

42、s63、未知路径u的确认:在设定的时间内无法求解到缺陷位置或在设定的时间内无法完成s61和s62的求解过程,则该条可达路径确认为未知路径u;

43、其中,表示潜在缺陷对应可达路径的路径约束,表示潜在缺陷处的触发约束。

44、所述的根据z3约束求解器的求解结果判定每个潜在缺陷为真实缺陷、误报缺陷或无法确定缺陷的具体步骤为:

45、s71、当潜在缺陷ω和其对应的可达路径集合p,p满足t,ω为真实缺陷,即可达路径集p中存在一条可达路径p为可触发缺陷路径t,则潜在缺陷ω为真实缺陷;

46、s72、当潜在缺陷ω和其对应的可达路径集合p,p满足s,ω为误报缺陷,即可达路径集p中所有可达路径都确认为安全路径s,则潜在缺陷为误报缺陷;

47、s73、当潜在缺陷ω和其对应的可达路径集合p,p满足u,且p都不满足t,ω为无法确定缺陷,即可达路径集p中存在一条可达路径p确认为未知路径u,且可达路径集p中所有可达路径都没被确认为可触发缺陷路径t,则潜在缺陷ω为无法确定缺陷。

48、本发明的优点:

49、(1)、本发明对可达路径集p中的可达路径进行排序,并根据权重值大小构建时间优先排序集和测试用例优先排序集,时间优先排序集保证z3约束求解器求解的难度最低,消耗时间较少;测试用例优先排序集保证提供的信息最多,生成的测试用例质量最高。

50、(2)、本发明在生成可达路径集p时,使用深度遍历方法反向搜索interproceduralcfg,避免使用正向搜索,出现走到程序出口还没有经过缺陷位置的情况,造成时间的浪费,因此从潜在缺陷位置处反向搜索到待测程序入口避免了搜索到多余路径的情况。

51、(3)、本发明先判定可达路径的类型,然后根据路径类型判定潜在缺陷的真实性,只需找到一条可达路径可触发缺陷,即可证明该潜在缺陷为真实缺陷,降低了人工验证缺陷警报的成本。

52、(4)、本发明通过可达路径分析和约束求解方法,为真实的深度学习缺陷警报提供测试用例,降低了深度学习预测缺陷的误报率。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1