[发明专利]一种基于可调对象分析的程序漏洞检测方法有效
申请号: | 201210392719.5 | 申请日: | 2012-10-16 |
公开(公告)号: | CN102929774A | 公开(公告)日: | 2013-02-13 |
发明(设计)人: | 曾庆凯 | 申请(专利权)人: | 南京大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 南京瑞弘专利商标事务所(普通合伙) 32249 | 代理人: | 徐激波 |
地址: | 210093 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 可调 对象 分析 程序 漏洞 检测 方法 | ||
1.一种基于可调对象分析的程序漏洞模型检测方法,其特征是步骤包括:
1)漏洞模型载入流程,建立漏洞模型的数据结构;
2)程序状态特征检测处理过程,以函数为单位进行模型检测工作,并报告漏洞的存在性;
为提高检测和处理速度,需要将漏洞模型从数据库中装入内存,在分析程序时,作为参考依据;漏洞模型检测过程中,以函数为单位根据漏洞相关操作状态逐步进行检测分析工作;漏洞模型检测工作从主函数开始进行检测,根据漏洞相关操作以及逐级函数的模型检测结果,进行状态检测并报告漏洞的存在性;
漏洞模型由漏洞相关操作的集合构成;操作表示引起状态发生变化的动作,每个操作具有操作号、动作、特征、输入变量和输出变量的集合等属性;操作的动作指具体的程序动作。操作的特征有产生、转移、刷新和使用等值。可调对象指程序中漏洞相关操作所涉及的需检测的变量,输入变量和输出变量为可调对象;操作的集合存储在数据库中的一个表中:操作表;为方便模型检测处理,在内存中建立由操作动作进行检索的操作变量关系表。每个操作动作对应一个链表,链表的结点为一个输入输出变量关系,表示一个输出变量与其输入变量的关系。
2.根据权利要求1所述的基于可调对象分析的程序漏洞模型检测方法,其特征是漏洞模型载入流程具体步骤如下:步骤20是起始状态;步骤21在数据库操作变量关系表中依次取一个操作关系头的记录;步骤22判断是否取到操作关系头的记录,若取到转步骤23,否则转步骤27;步骤23创建该操作动作的操作变量关系表表头,根据输出变量数目,创建输出变量指针链;步骤24在数据库操作变量关系表中依次取该操作输出变量关系的记录;步骤25判断是否取到该操作输出变量关系的记录,若取到转步骤26,否则转步骤21;步骤26创建一个输入输出变量关系结点,用读取的内容设置结点的输出变量与其输入变量;把相应的输出变量指针指向此结点,转步骤24;步骤27为结束状态,操作变量关系表建立完成。
3.根据权利要求1所述的基于可调对象分析的程序漏洞模型检测方法,其特征是程序状态特征检测处理过程的流程(即漏洞模型分析检测处理流程),具体步骤如下:步骤30是起始状态。步骤31初始化:设置所有函数的访问标记为OFF、值为0;步骤32设置检测函数为main函数,对检测函数进行程序操作状态序列分析;步骤33取一个访问标记为OFF的函数;步骤34判断是否取到,若取到则转步骤35,否则转步骤36;步骤35设置取得的函数为检测函数,对检测函数进行程序操作状态序列分析,处理流程见图4,转步骤33;步骤36为结束状态。
4.根据权利要求3所述的基于可调对象分析的程序漏洞模型检测方法,其特征是步骤32设置检测函数为main函数对检测函数进行程序操作状态序列分析处理流程具体为:(检测函数程序操作状态序列分析流程),表示对检测函数程序状态序列分析的过程,具体步骤如下:步骤40是起始状态;步骤41判断检测函数的访问标记是否为ON(值为1),是则转步骤4h,否则转步骤42;步骤42从函数可调对象集合中,取一个可调对象;步骤43判断是否取到可调对象,若取到,转步骤44,否则转步骤49;步骤44从该可调对象的操作状态序列链表,取一个状态结点;步骤45判断是否取到状态结点,若取到,转步骤46,否则转步骤42;步骤46判断该状态的操作的特征值是否为使用,是则转步骤47,否则转步骤44;步骤47计算该可调对象的原始变量关联关系,得到状态转换关系集合;步骤48漏洞报警,包括可调对象及其原始变量相关的状态转换关系集合,以便后续分析、处理之用,转步骤44;步骤49设置检测函数的访问标记为ON、值为1;步骤4h为结束状态。
5.根据权利要求4所述的基于可调对象分析的程序漏洞模型检测方法,其特征是步骤47计算该可调对象的原始变量关联关系的计算流程:步骤50是起始状态。步骤51建可调对象结点。取可调对象的当前状态的输入变量集合(为可调对象的输入关系集合),其相关操作为本语句操作;步骤52从输入关系集集合中,取一个输入对象。步骤53判断取到否,若取到,转步骤54,否则转步骤56;步骤54计算输入对象到原始变量集合关系,得到输入对象的状态转换关系集合;步骤55建输入对象结点,将状态转换关系连接集合到输入对象结点,其相关操作为该输入对象的操作;转步骤52;步骤56为结束状态。
6.根据权利要求4所述的基于可调对象分析的程序漏洞模型检测方法,其特征是步骤54计算输入对象到原始变量集合关系处理流程:步骤60是起始状态;步骤61判断输入对象是否原始变量,是则转步骤6h,否则转步骤62;步骤62取输入对象的来源对象集合(以输入对象作为输出),建立来源对象结点,使其均指向本输入对象;步骤63依次取一个来源对象;步骤64判断来源对象是否取到,若取到,转步骤65,否则转步骤6h;步骤65以取得的来源对象作为输入对象,计算输入对象到原始变量集合关系;步骤66建来源对象结点,将状态转换关系连接集合到来源对象结点,其相关操作为该来源对象的操作,转步骤63。步骤6h为结束状态。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210392719.5/1.html,转载请声明来源钻瓜专利网。