[发明专利]一种基于分组DFA的源代码漏洞检测方法有效
申请号: | 201510632698.3 | 申请日: | 2015-09-29 |
公开(公告)号: | CN105320890B | 公开(公告)日: | 2019-02-22 |
发明(设计)人: | 张涛;马媛媛;李伟伟;周诚;邵志鹏;时坚;楚杰;汪晨;费稼轩;何高峰;黄秀丽;陈璐;管小娟 | 申请(专利权)人: | 国网智能电网研究院;国家电网公司 |
主分类号: | G06F21/57 | 分类号: | G06F21/57 |
代理公司: | 北京安博达知识产权代理有限公司 11271 | 代理人: | 徐国文 |
地址: | 102211 北京市昌平区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明提供一种基于分组DFA的源代码漏洞检测方法,所述方法包括:(1)根据常见源代码漏洞特征构造正则表达式;(2)利用分组DFA算法构造特征匹配DFA引擎;(3)根据所述特征匹配DFA引擎进行漏洞检测。本发明对表达式生成的DFA引擎进行优化,优化了正则表达式分组算法,使分组效果更加良好,内存消耗更加优良,减少了软件安全问题带来的巨大损失。 | ||
搜索关键词: | 一种 基于 分组 dfa 源代码 漏洞 检测 方法 | ||
【主权项】:
1.一种基于分组DFA的源代码漏洞检测方法,其特征在于,所述方法包括如下步骤:(1)根据常见源代码漏洞特征构造正则表达式;(2)利用分组DFA算法构造特征匹配DFA引擎;(3)根据所述特征匹配DFA引擎进行漏洞检测;所述步骤(2)中包括如下步骤:步骤2‑1、计算正则表达式生成的DFA节点状态数,确定漏洞特征构建的各个正则表达式之间的两两相互作用情况;步骤2‑2、基于对比正则表达式两两相互作用的结果,对正则表达式进行分组;步骤2‑3、检查是否存在还未分组的漏洞特征正则表达式,若存在,则转到步骤2‑2,否则转到步骤2‑4;步骤2‑4、将各个漏洞特征正则表达式的分组输出,构成源代码漏洞检测的特征匹配DFA引擎;所述步骤2‑1中,包括如下步骤:步骤2‑1‑1、随机选取两个正则表达式编译成DFA;步骤2‑1‑2、若所述两个正则表达式一起编译出的复合DFA包含的状态数,大于两个正则表达式独立的DFA的状态数之和,则这两个正则表达式是相互作用的;所述步骤2‑2中包括如下步骤:步骤2‑2‑1、通过对比正则表达式两两相互作用的结果,找出与其他未分组的正则表达式相互作用最少的正则表达式加入一个新的分组;步骤2‑2‑2、找出所有未分组的正则表达式中与当前所有已分组中的正则表达式之间没有相互作用的正则表达式集合RegEx_Set;步骤2‑2‑3、分别计算集合RegEx_Set中的每个元素与每个已存在分组内部的正则表达式之间的相似度,并计算每个分组的所有相似度的平均值;步骤2‑2‑4、选取所有计算出的相似度平均值最高值,假设此值由正则表达式R1和分组Gn计算得出,则将R1加入分组Gn,将R1标记为已分组;步骤2‑2‑5、检查集合RegEx_Set中是否存在未分组的元素,若存在,则转到步骤2‑2‑4,否则转到步骤2‑2‑6;步骤2‑2‑6、整理各个分组内的正则表达式,并标记各自的分组情况;所述步骤(3)中包括如下步骤:步骤3‑1、构建待测源代码的漏洞正则表达式;步骤3‑2、加载入分组的特征匹配DFA引擎中进行检测;步骤3‑3、待检测源代码的漏洞正则表达式与所述特征匹配DFA引擎中的漏洞正则表达式匹配结果一致,则判定存在漏洞;所述步骤2‑2‑3中,所述正则表达式之间的相似度的计算公式为:
式中
为DFA1和DFA2的相似度,范围为0~1,#(DFA1)为DFA1的状态节点数,#(DFA2)为DFA2的状态节点数,#(DFA合并)为DFA1和DFA2合并后的状态节点数。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国网智能电网研究院;国家电网公司,未经国网智能电网研究院;国家电网公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201510632698.3/,转载请声明来源钻瓜专利网。
- 上一篇:钢品追踪识别系统
- 下一篇:基于虹膜识别的机器人操作权限设定方法