[发明专利]一种基于检测对象的软件漏洞模型检测方法无效
申请号: | 201010286664.0 | 申请日: | 2010-09-20 |
公开(公告)号: | CN101930401A | 公开(公告)日: | 2010-12-29 |
发明(设计)人: | 曾庆凯 | 申请(专利权)人: | 南京大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 南京天翼专利代理有限责任公司 32112 | 代理人: | 陈建和 |
地址: | 210093 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 一种基于检测对象的软件漏洞模型检测方法,步骤包括:1)漏洞载入流程,建立漏洞模型的数据结构;漏洞模型由漏洞状态机的状态的集合和操作的集合构成,状态表示状态机的状态,2)漏洞模型检测处理流程,3)函数程序操作序列分析流程,表示针对检测对象进行函数程序序列分析的过程,4)操作的状态转换处理过程,计算操作后的转换状态。本发明提供一种基于漏洞模型的软件漏洞模型检测方法。基于软件漏洞的状态机模型,以重点检测对象为中心,对软件代码进行抽象建模,只对与漏洞状态相关的程序操作序列进行漏洞静态检测,判断漏洞模型在代码中的存在性。克服现有技术需要大量重复工作、影响检测速度、准确性不高的问题。 | ||
搜索关键词: | 一种 基于 检测 对象 软件 漏洞 模型 方法 | ||
【主权项】:
一种基于检测对象的软件漏洞模型检测方法,其特征是步骤如下:1)漏洞载入流程,建立漏洞模型的数据结构;漏洞模型由漏洞状态机的状态的集合和操作的集合构成,其特征是状态表示状态机的状态;每个状态有状态号、类型和特征属性;类型是指漏洞的分类,即文件、内存类别;特征有开始、过渡和漏洞值;操作表示引起状态发生变化的动作,每个操作具有操作号、动作、特征、检测对象指示、原状态和新状态属性;操作的动作指具体的程序动作;操作的特征有产生、转移、使用值;检测对象为程序中漏洞相关操作所涉及的需检测的变量,检测对象指示为操作涉及的参数编号;状态、操作的集合分别存储在数据库中的一个表中:状态表和操作表;在内存中建立由操作动作进行检索的操作转换表;每个操作动作对应一个链表,链表的结点为一个操作,表示一个原状态到新状态的转换关系;具体流程如下:步骤20:起始状态;步骤21:在数据库操作表中取一个操作的记录;步骤22:若取到转步骤23,否则转步骤26;步骤23:判断取得该操作动作的操作转换表表头是否已存在,若已存在转步骤24,否则转步骤25;步骤24:创建一个操作结点,结点的操作号、特征、检测对象指示、原状态和新状态分别为该操作的操作号、特征、检测对象指示、原状态和新状态,把此结点连接到对应的操作动作操作转换表的链表尾部,并转步骤21;步骤25:创建该操作动作的操作转换表表头,创建一个操作结点,结点的操作号、特征、检测对象指示、原状态和新状态分别为该操作的操作号、特征、检测对象指示、原状态和新状态;把此结点作为该操作动作的第一个结点,转步骤21;步骤26为结束状态,操作转换表建立完成;提取了与漏洞模型相关的操作序列;程序特征链表以函数为单位进行组织,每个函数对应若干个与检测对象相关的操作序列链表,操作序列链表的每个结点为一个与漏洞状态相关的操作或函数;函数的检测对象包括输入检测对象和本地检测对象两类;程序特征载入时,将磁盘中程序特征链表装入内存,包括输入检测对象集合和本地检测对象集合及其操作序列链表;2)模型检测处理流程,以函数为单位进行模型检测工作,并报告漏洞的存在,步骤30:起始状态;步骤31:初始化,设置所有函数的访问标记为 OFF ,值为0;取main的检测对象集合为函数检测对象集合;步骤32:从函数检测对象集合中,取一个检测对象;步骤33:判断是否取到,若取到则转步骤34,否则转步骤36;步骤34:设置输入状态为开始,检测函数为main函数,输入检测对象为取得的检测对象;步骤35:对检测函数进行程序操作序列分析,处理流程见步骤40 4c;转步骤32;步骤36:结束状态;步骤40:起始状态;步骤41:判断检测函数的访问标记为ON,其值为1,是则转步骤41d,否则转步骤41a;步骤41a:置检测阶段为本地;步骤41b:从检测函数的本地检测对象集合中,取一个检测对象;步骤41c:判断是否取到检测对象,若取到则转步骤41e,否则转步骤41d;步骤41d:置检测阶段为输入,置检测函数的访问标记为 ON,其值为1;置检测对象为输入检测对象,输入状态为当前状态,转步骤42;步骤41e:置输入状态为开始,转步骤42;步骤42:从检测对象的操作序列中,取一个操作结点;步骤43:判断是否取到,若取到转步骤44,否则转步骤4f;步骤44:判断该语句操作是否在漏洞状态机操作集合中,是则转步骤45,否则转步骤46;步骤45:操作状态转换计算,处理流程见步骤50 57,得到转换状态,置当前状态为转换状态,转步骤4c;步骤46:判断该语句操作是否函数调用,是则转步骤47,否则转步骤4c;步骤47:顺序取每个函数调用参数;步骤48:判断是否取到,若取到,转步骤49,没取到则转步骤42;步骤49:判断所取的函数调用参数是否为检测对象,是则转步骤4a,否则转步骤47;步骤4a:设置当前状态为输入状态、检测函数为被调用函数、输入检测对象为现检测对象;进行函数程序操作序列分析,处理流程见步骤40 4c,置当前状态为函数结果状态;步骤4c :判断当前状态是否漏洞状态,是则转步骤4d,否则转步骤42;步骤4d:漏洞报警,转步骤42;步骤4f:操作序列分析结束处理,判断检测阶段是否为本地,是则转步骤41b,否则转步骤4g;步骤4g:置函数结果状态为当前状态;步骤4h:结束状态;步骤50:起始状态;步骤51:置次状态为空;步骤52:在操作转换表中,查找操作动作所对应的操作结点;步骤53:判断查到操作结点否,若得到,转步骤54,否则转步骤56;步骤54 :判断操作结点的源状态是否为当前状态,是则转步骤55,否则转步骤52;步骤55:置转换状态为操作结点的新状态,转步骤57;步骤56:数据错误报警:步骤57:结束状态。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201010286664.0/,转载请声明来源钻瓜专利网。