• 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03
    • / 8
    • 下载费用:30 金币  

    重庆时时彩新手教程: 一种基于序列模式挖掘的软件安全漏洞检测方法.pdf

    摘要
    申请专利号:

    重庆时时彩单双窍门 www.4mum.com.cn CN200910235658.X

    申请日:

    2009.10.10

    公开号:

    CN101710378A

    公开日:

    2010.05.19

    当前法律状态:

    终止

    有效性:

    无权

    法律详情: 未缴年费专利权终止IPC(主分类):G06F 21/22申请日:20091010授权公告日:20110406终止日期:20141010|||授权|||实质审查的生效IPC(主分类):G06F 21/22申请日:20091010|||公开
    IPC分类号: G06F21/22; G06F17/30 主分类号: G06F21/22
    申请人: 北京理工大学; 燕山大学; 中国航天科技集团公司第七一○研究所
    发明人: 胡昌振; 任家东; 王崑声; 马瑞青; 孟丽丽; 王立波; 张冬梅
    地址: 100081 北京市海淀区中关村南大街5号
    优先权:
    专利代理机构: 北京理工大学专利中心 11120 代理人: 付雷杰
    PDF完整版下载: PDF下载
    法律状态
    申请(专利)号:

    CN200910235658.X

    授权公告号:

    |||101710378B||||||

    法律状态公告日:

    2015.11.25|||2011.04.06|||2010.07.07|||2010.05.19

    法律状态类型:

    专利权的终止|||授权|||实质审查的生效|||公开

    摘要

    本发明提出一种基于序列模式挖掘的软件安全漏洞检测方法。首先利用已检测到的、大量的软件安全漏洞相关操作序列数据,创建安全漏洞相关操作序列数据库,然后利用数据挖掘技术中的闭序列模式挖掘算法挖掘频繁发生的漏洞相关操作序,将挖掘到的频繁发生的漏洞相关操作序列用来检测当前软件系统的安全漏洞,从而降低漏洞检测漏报率,提高安全漏洞检测效率。随着漏洞数据的积累,本发明的安全漏洞检测效率高的优点会更加突出。

    权利要求书

    1: 一种基于序列模式挖掘的软件安全漏洞检测方法,其特征在于:具体操作步骤如下: 步骤一、利用已有的软件安全漏洞数据,创建软件安全漏洞序列数据库; 收集已有漏洞检测工具检测到的安全漏洞数据,创建软件安全漏洞序列数据库;序列数据库用S表示,包含已确认的软件安全漏洞对应的操作序列;S是元组 SID,s,time 的集合,其中SID是该漏洞相关操作序列的序列号;s是漏洞相关操作序列,序列s记作 e 1 ,e 2 ,e 3 ,......,e i ,e i 表示该漏洞的一个操作;time表示该漏洞操作序列的最近一次访问时间; 步骤二、对软件安全漏洞序列数据库进行预处理 在步骤一的基础上,利用数据挖掘中数据预处理阶段的数据清洗、数据集成和数据消减方法清除掉安全漏洞相关操作序列数据库中存在错误或异常的数据、不完整的数据、不一致数据以及冗余数据; 步骤三、挖掘频繁发生的漏洞相关操作序列 在步骤二的基础上,采用闭序列模式挖掘算法从软件安全漏洞序列数据库中挖掘出频繁发生的漏洞相关操作序列; 经过上述步骤,即可创建安全漏洞序列数据库以及挖掘出频繁发生的漏洞相关操作序列集,用B表示频繁发生的漏洞相关操作序列集; 步骤四、进行软件安全漏洞检测 在步骤三挖掘出频繁发生的漏洞相关操作序列的基础上进行软件安全漏洞检测;其具体操作步骤如下: 第1步:从源程序中抽取程序执行路径 利用安全特性模型检验程序MOPS生成源程序的控制流图;然后利用转换命令将压缩后的控制流图转换为对应的程序路径,进一步生成程序可能执行路径序列集,用T表示; 第2步:检测软件安全漏洞 对频繁发生的漏洞相关操作序列集B和可能执行路径序列集T取交集,若B与T的交集为空,则说明源程序不存在这些频繁发生的漏洞,结束操作;若B与T的交集不为空,则说明源程序存在这些频繁发生的漏洞,输出检测到的漏洞相关操作序列。
    2: 如权利要求1所述的一种基于序列模式挖掘的软件安全漏洞检测方法,其特征在于:步骤一中创建的软件安全漏洞序列数据库,其更新方法为:对旧序列的删除和对新序列的添加;按照time属性对于多时未访问的,时间上满足预定义条件的漏洞相关操作序列,将其删除;对于新出现的,数据库中不存在的安全漏洞,将其添加到序列数据库中。
    3: 如权利要求1所述的一种基于序列模式挖掘的软件安全漏洞检测方法,其特征在于:在步骤三挖掘频繁发生的漏洞相关操作序列时采用CloSpan算法。

    说明书


    一种基于序列模式挖掘的软件安全漏洞检测方法

        【技术领域】

        本发明涉及一种软件安全漏洞静态检测技术,特别涉及一种基于序列模式挖掘的软件安全漏洞检测方法,属于信息安全技术领域。

        背景技术

        随着计算机技术的迅速发展,人类社会的信息化程度越来越高,整个社会的政治、经济、军事、文化以及其他领域对计算机信息系统的依赖程度也越来越高。在这种情况下,计算机系统的安全性得到了人们越来越多的关注。然而,大型软件、系统的编写需要许许多多程序员共同完成,他们将一个软件或系统分成若干板块,分工编写,然后再汇总,测试;最后再修补、发布,因此在软件中存在安全漏洞几乎是不可避免的。软件安全漏洞指软件设计实现过程中被引入的、在数据访问或行为逻辑等方面的缺陷。这些漏洞常常被攻击者利用,从而使程序行为违背一定的安全策略?;谏鲜鲈?,目前对软件安全漏洞检测技术的研究越来越受到重视。

        按照检测过程中是否需要执行程序的标准,软件安全漏洞检测技术分为动态检测和静态检测。

        (1)动态测试

        动态测试是在程序运行过程中注入测试数据,通过对程序的运行环境(包括环境变量、内存、堆和栈等)进行分析,观察程序运行是否正常、程序行为是否满足要求,来检测程序是否存在漏洞。动态检测技术的优点是不直接面对源代码,不需要修改目标程序源代码,这在一定程度上提高程序的保密性。但其缺点是仅关注程序运行的外部表现,因此,定位不准确、漏报率高,不能很好地发现隐藏在程序中的漏洞。动态测试主要应用于软件生命周期的测试阶段。

        (2)静态检测

        静态检测主要应用于软件生命周期的编码阶段。静态检测不编译运行程序,而是通过对程序源代码进行分析以发现其中的错误。静态检测的目标不是证明程序完全正确,而是作为动态测试的补充,在程序运行前尽可能多地发现其中隐含的错误,提高程序的可靠性和健壮性。对一些状态有限且对稳定性要求很高的软件来说,采用适当的静态检测技术是非常有必要的。但静态检测也有局限性,对于程序的某些性质(比如和指针运算、动态存储分配等相关的性质),用静态检测难以奏效。因此,静态检测并不能完全替代动态测试。

        静态检测包括静态分析和程序验证。其中静态分析方法主要包括三种检测方法:词法分析,规则检查和类型推导。

        静态分析方法直接扫描程序代码,提取程序关键语法,解释其语义,理解程序行为,根据预先设定的漏洞特征、安全规则等检测漏洞。各种静态分析工具的不同点主要体现在扫描程序的过程中所采用的算法不同,以及在与预先设定的漏洞特征进行比对时所采用的方法不同。静态分析方法的缺点是:①只关注程序表面特征,过于简单;②很多静态分析工具需要人工辅助定义类型和规则安全漏洞的检测,其扩展性和自动性差,可检查的漏洞也有限。

        程序验证方法通过抽象程序得到形式化程序或模型,然后使用形式化验证技术进行检验证明,通过验证正确性的方式来检测漏洞。各种程序验证工具的不同点主要体现在从程序中抽象得到的模型不同,以及针对安全特性建立的模型不同。静态分析方法采用的是模拟扫描,而程序验证方法采用的是严谨的证明。与静态分析方法相比,程序验证方法的理论基础更加严格,在程序全局性的检测上,效果更加突出。程序验证方法的自动化程度高,可扩展性好。

        静态检测中的程序验证方法包括模型检验,定理证明和符号执行。

        安全特性模型检验程序MOPS(MOdel?Checking?Programs?for?Securityproperties)和SLAM是两个典型的模型检验工具。H.Chen,D.Wagner在文献《MOPS:an?Infrastructure?for?Examining?Security?Properties?of?Software》(Technical?Report,2002.)中介绍了MOPS,MOPS是一种检测软件安全特性的体系结构。MOPS利用硬件设计领域中的模型检验方法来检测软件安全特性,它分别对源程序和安全特性建模。安全特性模型用有穷自动机表示,源程序模型用下推自动机来表示。MOPS检验的基本思想是:通常程序都会执行一些与安全相关的操作,而安全特性则定义了这些操作的顺序,违背该顺序的操作序列可能导致潜在的安全漏洞。软件安全检验的目标就是验证程序是否很好的满足了安全特性。

        T.Ball,S.K.Rajamani等人在文献《Automatically?Validating?TemporalSafety?Properties?of?Interfaces》(Proc.8th?Int’l?SPIN?Workshop?on?ModelChecking?of?Software,LNCS?2057,Springer-Verlag,2001,pp.103-122.)中介绍了SLAM,SLAM用模型检验的方法对C程序进行分析。SLAM的分析过程是一个对抽象的程序模型不断细化的反复迭代的过程。首先对程序进行抽象建立模型,然后分析模型。如果发现能够导致错误的路径则终止分析过程并报告错误;如果已经枚举证明所有可能地路径都不可能导致错误则对模型进行细化,建立并分析细化后的模型,如此迭代直到发现错误或者超时。

        符号执行工具典型的有ESC和PREfix。ESC采用定理证明的方法进行程序分析验证。C.Flanagan等人在文献《An?Annotation?Assistant?for?ESC/Java.ESC.FME2001》(Lecture?Notes?in?Computer?Science?2021,2001,pp.500-517.)中介绍了ESC符号执行工具。ESC的基本思想是,首先由带规约的程序生成证明条件,然后由定理证明器进行处理。如果成功则说明程序中不包含错误,如果失败则可以通过后处理程序推导出导致失败的可能原因。ESC利用最弱前置条件和最强后置条件,将规约以及约束条件转换为Dijkstra卫式命令再转换成证明条件由定理证明器证明。ESC还可以用于检查多线程的并发程序中经常出现的一些错误。PREfix使用符号执行及约束求解方法对C/C++程序进行静态分析测试。W.R.Bush等人在文献《A?static?analyzer?for?finding?dynamic?programmingerrors》(Software-Practice?and?Experience,2000,30(7),pp.755-802.)中介绍了PREfix。PREfix的工作流程是首先分析源代码,将其转换成抽象的语法树,然后对过程依照调用关系进行拓扑排序,再为每个过程生成相应的抽象模型,最后静态模拟执行路径并用约束求解的方法对约束集合进行检测。

        现有静态检测技术在利用漏洞相关数据分析软件安全时,只是对常见的一些相关漏洞建立一个简单的小数据库。由于漏洞数据收集的不充分,现有的漏洞检测工具存在的缺点是漏报率高,并且效率较低。

        本发明涉及到的另外一项重要的已有技术是序列模式挖掘算法的CloSpan算法。

        其算法描述如下:

        算法ClosedMining(DS,min-sup,L)

        输入:数据库DS和最小支持度min-sup

        输出:闭合序列集L

        (1)删除非频繁项集和空的序列,在待挖掘数据库DS中对序列中的每个项集进行排序。

        (2)对长度为1的频繁项集调用CloSpan算法。

        (3)删除结果集中的非闭合序列。

        CloSpan(s,Ds,min-sup,L)算法描述如下:

        输入:序列s,投影数据库Ds,最小支持度min_sup

        输出:前缀搜索序列格L

        一个序列之所以称为序列模式,它必须是频繁的,即它在数据库中出现的次数至少是min-sup次。最小支持度的取值视实际情况而定。本发明在软件安全漏洞检测中使用该算法时,DS表示漏洞相关操作序列数据库,L是挖掘到的频繁发生的漏洞相关操作序列,min-sup是最小支持度。

        在软件安全漏洞检测中使用CloSpan算法对漏洞相关操作序列库进行数据挖掘得到频繁发生的漏洞相关操作序列以后,无需对漏洞相关操作序列库中的每一个漏洞相关操作序列和源代码程序进行比对,只需与频繁发生的漏洞相关操作序列比对即可,可大大提高效率。

        【发明内容】

        本发明的目的是针对上述已有技术存在的不足,提出一种基于序列模式挖掘的软件安全漏洞检测方法。本发明首先利用已检测到的、大量的安全漏洞相关操作序列数据,创建大的安全漏洞相关操作序列数据库,然后利用数据挖掘技术中的闭序列模式挖掘算法挖掘频繁发生的漏洞相关操作序,将挖掘到的频繁发生的漏洞相关操作序列用来检测当前软件系统的安全漏洞,从而降低漏洞检测漏报率,提高安全漏洞检测效率。随着漏洞数据的积累,本发明的安全漏洞检测效率高的优点会更加突出。

        本发明的目的是通过下述技术方案实现的。

        首先给出漏洞相关操作序列的定义:

        漏洞相关操作序列是指会导致漏洞产生的一个有序的程序操作序列。

        本发明的一种基于序列模式挖掘的软件安全漏洞检测方法的整体框架设计如图1所示。其具体操作步骤如下:

        步骤一、利用已有的安全漏洞数据,创建软件安全漏洞序列数据库。

        收集已有漏洞检测工具检测到的安全漏洞数据,创建软件安全漏洞序列数据库。软件安全漏洞序列数据库用S表示,包含已确认的软件安全漏洞对应的操作序列。S是元组<SID,s,time>的集合,其中SID是该漏洞相关操作序列的序列号;s是漏洞相关操作序列,序列s记作<e1,e2,e3,......,ei>,ei表示该漏洞的一个操作;time表示该漏洞操作序列的最近一次访问时间。

        步骤二、对软件安全漏洞序列数据库进行预处理

        在步骤一的基础上,利用数据挖掘中数据预处理阶段的数据清洗、数据集成和数据消减方法清除掉安全漏洞相关操作序列数据库中存在错误或异常的数据、不完整的数据、不一致数据以及冗余数据。

        步骤三、挖掘频繁发生的漏洞相关操作序列

        在步骤二的基础上,采用闭序列模式挖掘算法从软件安全漏洞序列数据库中挖掘出频繁发生的漏洞相关操作序列。

        经过上述步骤,即可创建安全漏洞序列数据库以及挖掘出频繁发生的漏洞相关操作序列集(用B表示频繁发生的漏洞相关操作序列集)。

        步骤四、进行软件安全漏洞检测

        在步骤三挖掘出频繁发生的漏洞相关操作序列的基础上进行软件安全漏洞检测。其具体操作步骤如下:

        第1步:从源程序中抽取程序执行路径

        利用安全特性模型检验程序MOPS生成源程序的控制流图;然后利用转换命令将压缩后的控制流图转换为对应的程序路径,进一步生成程序可能执行路径序列集(用T表示)。

        第2步:检测软件安全漏洞

        对频繁发生的漏洞相关操作序列集B和可能执行路径序列集T取交集,若B与T的交集为空,则说明源程序不存在这些频繁发生的漏洞,结束操作;若B与T的交集不为空,则说明源程序存在这些频繁发生的漏洞,输出检测到的漏洞相关操作序列。

        本发明还提供一种对漏洞相关操作序列库进行更新的方法,具体为:对旧序列的删除和对新序列的添加。按照time属性对于多时未访问的,时间上满足预定义条件的漏洞相关操作序列,将其删除。对于新出现的,数据库中不存在的安全漏洞,将其添加到序列数据库中。

        有益效果

        充分利用先验知识,即已有的安全漏洞数据,创建软件安全漏洞库,然后利用数据挖掘技术中的闭序列模式挖掘算法挖掘隐藏在漏洞数据背后的信息,将挖掘到的频繁发生的漏洞相关操作序列用来检测当前软件系统的安全漏洞,从而降低漏洞检测漏报率,提高安全漏洞检测效率。随着时间的推移,漏洞数据的积累,本发明的优点会更加突出。

        【附图说明】

        图1为本发明的一种基于序列模式挖掘的软件安全漏洞检测方法的整体框架设计流程图。

        【具体实施方式】

        下面结合具体实施方式对本发明技术方案进行详细描述。

        本发明的具体操作步骤如下:

        步骤一、利用已有的安全漏洞数据,创建安全漏洞序列数据库。

        收集已有漏洞检测工具检测到的安全漏洞数据,创建软件安全漏洞序列数据库。序列数据库用S表示,包含已确认的安全漏洞对应的操作序列。S是元组<SID,s,time>的集合,其中SID是该漏洞相关操作序列的序列号;s是漏洞相关操作序列,序列s记作<e1,e2,e3,......,ei>,ei表示该漏洞的一个操作;time表示该漏洞操作序列的最近一次访问时间。

        步骤二、对安全漏洞序列数据库进行预处理

        在步骤一的基础上,利用数据挖掘中数据预处理阶段的数据清洗、数据集成和数据消减方法清除掉安全漏洞相关操作序列数据库中存在错误或异常的数据、不完整的数据、不一致数据以及冗余数据。

        步骤三、挖掘频繁发生的漏洞相关操作序列

        在步骤二的基础上,采用Yan等人在文献《CloSpan:Mining?closedsequential?patterns?in?large?data?sets》(Proceedings?of?the?Third?SIAMInternational?Conference?on?Data?Mining,San?Francisco,CA,USA,May1-3,2003.)中提出的CloSpan算法从软件安全漏洞序列数据库中挖掘出频繁发生的漏洞相关操作序列。

        步骤四、进行软件安全漏洞检测

        在步骤三挖掘出频繁发生的漏洞相关操作序列的基础上进行软件安全漏洞检测。其具体操作步骤如下:

        第1步:从源程序中抽取程序执行路径

        利用安全特性模型检验程序MOPS生成源程序的控制流图;然后利用转换命令将压缩后的控制流图转换为对应的程序路径,进一步生成程序可能执行路径序列集(用T表示)。

        第2步:检测软件安全漏洞

        对频繁发生的漏洞相关操作序列集B和可能执行路径序列集T取交集,若B与T的交集为空,则说明源程序不存在这些频繁发生的漏洞,结束操作;若B与T的交集不为空,则说明源程序存在这些频繁发生的漏洞,输出检测到的漏洞相关操作序列。

        对漏洞相关操作序列库进行更新时,具体操作为:对旧序列的删除和对新序列的添加。按照time属性对于多时未访问的,时间上满足预定义条件的漏洞相关操作序列,将其删除。对于新出现的,数据库中不存在的安全漏洞,将其添加到序列数据库中。

    关 键 词:
    一种 基于 序列 模式 挖掘 软件 安全漏洞 检测 方法
      专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:一种基于序列模式挖掘的软件安全漏洞检测方法.pdf
    链接地址://www.4mum.com.cn/p-5781921.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服客服 - 联系我们

    [email protected] 2017-2018 www.4mum.com.cn网站版权所有
    经营许可证编号:粤ICP备17046363号-1 
     


    收起
    展开
  • 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03