[发明专利]一种基于漏洞模型的软件漏洞模型检测方法无效
申请号: | 200810155450.2 | 申请日: | 2008-10-22 |
公开(公告)号: | CN101373506A | 公开(公告)日: | 2009-02-25 |
发明(设计)人: | 曾庆凯;张林 | 申请(专利权)人: | 南京大学 |
主分类号: | G06F21/22 | 分类号: | G06F21/22 |
代理公司: | 南京天翼专利代理有限责任公司 | 代理人: | 汤志武;王鹏翔 |
地址: | 210093*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 漏洞 模型 软件 检测 方法 | ||
1.基于漏洞模型的软件漏洞模型检测方法,其特征是步骤包括:
1)将漏洞模型从数据库中载入流程,即装入内存、建立漏洞模型的数据结构,在分析程序时作为参考依据;
2)模型检测前段步骤,以函数为单位根据漏洞相关操作进行模型检测工作;
3)模型检测后段步骤对主函数进行模型检测,根据漏洞相关操作以及前段对函数的模型检测结果,进行状态检测并报告漏洞的存在性;
所述漏洞模型从数据库中载入流程:漏洞模型由漏洞状态的状态结点、有向边的集合所构成;状态结点有启始、中间过渡和漏洞识别3种类型,每个状态结点具有状态号、类型和描述属性;有向边表示引起状态变化的操作,每个有向边具有边号、类型、原状态、新状态和描述属性;状态结点、有向边的集合分别存储在数据库中的一个表中:状态结点表和有向边表;为方便模型检测处理,在内存中建立由有向边类型进行检索的操作转换表;每个类型的有向边对应一个链表,链表的结点为一个有向边,表示一个原状态到新状态的转换关系;
在内存中建立由有向边类型进行检索的操作转换表的流程:步骤20:初始动作;步骤21:在数据库有向边表中取一个有向边的记录;步骤22:若取到记录转步骤23,否则,转步骤26;步骤23:判断取得有向边类型的操作转换表头是否已存在,若已存在转步骤24,否则,转步骤25;步骤24:创建一个有向边结点,结点的边号为该有向边的边号;把此结点连接到对应有向边类型的链表尾部,转步骤21,直到在数据库有向边表中取完有向边的记录;步骤25:创建该有向边类型的操作转换表头,创建一个有向边结点,结点的边号为该有向边的边号;把此结点作为该有向边类型的第一个结点,转步骤21,直到在数据库有向边表中取完有向边的记录;步骤26:结束,操作转换表建立完成;
通过对程序抽象提取处理,过滤去除无关的操作,进行提取与漏洞模型相关的操作序列的流程:每个函数程序特征对应一个操作序列链表,程序特征链表以函数为单位进行组织,操作序列链表的结点为一个与漏洞状态相关的操作或函数;函数程序特征载入时,将磁盘中程序特征链表装入内存,初始函数处理标志为INI,值为0;
进行所述模型检测前段步骤处理流程时,建立函数有向边表,结构与漏洞状态的有向边表相同:步骤30:初始动作;步骤31:按序取出一个函数程序特征链表结构;步骤32:判断该函数是否为main函数;是则转步骤31,否则转步骤33;步骤33:置当前操作为函数操作表头,置当前状态为ALL,ALL为状态全集合,置函数处理标志为ING,值为1,进行函数状态处理流程;步骤34:判断是否所有函数已被处理完,是则转步骤35,否则转步骤31;步骤35:结束;
模型检测后段的处理流程,步骤60:初始动作;步骤61:取函数程序特征链表结构;步骤62:判断该函数是否为main函数,是则转步骤63,否则转步骤61;步骤63:置当前操作为函数操作表头,置当前状态为INIT启始,置main函数处理标志为ING,值为1;步骤64:取出函数当前操作的下一个操作为当前操作;步骤65:判断是否取到,若取到转步骤66,否则已为函数的最后操作队尾,则转步骤6e;步骤66:判断当前操作是否为漏洞状态机中操作集合中的语句,操作集合在有向边类型集合中,是则转步骤68,否则转步骤67;步骤67:判断当前操作是否为函数调用,是则转步骤69,否则转步骤64;步骤68:以当前操作、当前状态,进行状态转换处理流程;得到状态转换后的次状态,转步骤6c;步骤69:若函数处理标志为ED,值为2,则转步骤6b,否则转步骤6a;步骤6a:若函数处理标志为INI,值为0或ING,值为1,则转步骤6f,否则转步骤64;步骤6b以调用函数、当前状态,进行调用状态转换处理流程;得到状态转换后的次状态,转步骤6c;步骤6c:判断次状态中是否存在漏洞状态,是则转步骤6d,否则转步骤64;步骤6d:漏洞报警、并从集合去除报警状态,转步骤64;步骤6e:置函数处理标志为ED,值为2;步骤6f:处理出错结束;步骤6g:正常结束。
2.根据权利要求1所述的基于漏洞模型的软件漏洞模型检测方法,其特征是函数的状态处理流程:步骤40:开始动作;步骤41:取出函数当前操作的下一个操作为当前操作;步骤42:判断是否取到,若取到转步骤43,否则已为函数的最后操作队尾,则转步骤4b;步骤43:判断当前操作是否为漏洞状态机中操作集合中的语句,操作集合在有向边类型集合中;是则转步骤45,否则转步骤44;步骤44:判断当前操作是否为函数调用,是则转步骤46,否则转步骤41;步骤45:以当前操作、当前状态,进行状态转换处理流程;得到状态转换后的次状态,转步骤41;步骤46:若函数处理标志为ED,值为2,则转步骤4a,否则转步骤47;步骤47:若函数处理标志为INI,值为0,则转步骤49,否则转步骤41;步骤49:置当前状态为ALL,ALL为状态全集合,置函数处理标志为ING,值为1,进行函数状态处理流程;步骤4a:以调用函数、当前状态,进行状态转换处理流程,得到状态转换后的次状态,转步骤41;步骤4b:判断函数结束时的当前状态是否同初始时的当前状态,是则转步骤4d,否则转步骤4c;步骤4c:函数有向边表中加入若干条表示<源状态,新状态>的函数有向边,此时边操作为所处理的函数名,并同时建立操作转换表链表;步骤4d:置函数处理标志为ED,值为2;步骤4e:结束;
所述状态转换处理过程,步骤50:开始;步骤51:置次状态为空;步骤52:从操作类型或函数对应的操作转换表中取一个有向边;步骤53:判断取到有向边否,若取到,转步骤55,否则步骤54;步骤54:得到状态转换后的次状态,置次状态为新的当前状态,转步骤57;步骤55:判断有向边的源状态是否在当前状态中,是则转步骤56,否则转步骤52;步骤56:有向边的新状态加入次状态,转步骤52;步骤57:结束。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810155450.2/1.html,转载请声明来源钻瓜专利网。
- 上一篇:蓝光激光头
- 下一篇:1.3L双顶置16气门汽油发动机进气凸轮轴