基于安全知识库的顺序图缺陷检测方法

文档序号:6602096阅读:118来源:国知局
专利名称:基于安全知识库的顺序图缺陷检测方法
技术领域
本发明以可信软件开发设计阶段中的绘制的顺序图作为主要检测对象,致力于提高软件开发和后期维护成本、提高软件的可信度,属于软件安全领域。
背景技术
随着互联网的发展,软件安全问题日益引起大家的关注。软件系统潜在的漏洞给 使用者带来很大的安全隐患,从而引发对安全软件思想的重视。如何生产高性能可靠的软 件成为当前社会的一个热门话题。传统软件工程往往注重于软件的高效性、实用性和可靠 性,而忽略了软件的可信度。且无法满足在各环节的安全需求,使得在需求和设计阶段中出 现的安全问题不能够及时发现,不能保证开发高可信的软件,从而导致开发的软件易受攻 击。然而安全软件工程提出一种在软件开发周期的每个环节加入安全的理念,对系统潜在 的缺陷及早发现,及时解决,以确保各环节产品的高可靠性和安全性。统一建模语言UML的提出,很好的规范和统一了软件的开发过程。在软件开发的 设计阶段,设计人员往往会利用UML中的顺序图来绘制软件系统中各个对象的交互过程。 顺序图重点说明了各对象在相互交互过程中的时间顺序,反映了系统的某一业务逻辑。顺 序图主要包含对象跟消息两部分。对象反映了在这一业务逻辑中参与到的所有成员,分为 一股形态和实例形态;消息则是对象之间的一种通信,可以传递信息并期望相关动作被执 行。顺序图能够表示业务逻辑的执行方式和过程。但顺序图同样能够暴露系统的潜在威 胁。由于顺序图的过程化合时序化,可能存在一些潜在的,攻击者能够利用的漏洞,即攻击 路径。攻击者利用它们完成一个一个既定的攻击目标,最终实现对软件系统的攻击。FSA(有限状态自动机”finite state automation")是为研究有限内存的计算过 程和某些语言类而抽象出的一种计算模型。有限状态自动机由系统的状态和这些状态之间 的迁移构成,通过对顺序图进行FSA的建模能够更好的表述软件设计阶段中业务流程。攻击模式是一种抽象概念,攻击模式所针对的问题即为软件产品攻击者的目标对 象,描述的是攻击者用来破坏软件产品的技术。使用攻击模式的动机为软件开发者通过将 自己想象为攻击者,参与到威胁中去,从而有效提高软件的安全性。一种攻击模式一股对应 若干种软件缺陷,即一种攻击模式可以对软件的若干个缺陷产生影响,导致系统的这些缺 陷暴露,遭受攻击。攻击模式是攻击者达到攻击目标的必经之路,所以检测出这样的一个攻 击模式,就能够发现软件的存在的缺陷,避免遭受攻击者的攻击,提高软件的安全系数。在软件开发过程中,设计阶段显得尤为重要,它定义了系统的整体架构,功能模 块,技术路线等,是对整个软件项目的宏观描述。随着安全软件工程的发展,软件的设计阶 段也越来越被软件安全专家所关注。正是由于设计阶段在整个软件项目的作用,致使设计 阶段能够展现和暴露软件潜在的缺陷和安全漏洞,在软件开发的设计阶段发现这些缺陷和 安全漏洞,成为安全软件工程的重要一环。

发明内容
本发明首先利用顺序图来表述软件设计阶段中的某一业务逻辑,然后对顺序图进 行安全分析,生成一份威胁分析报告,从而提出在软件开发初期的弥补建议和方案。这样能 够减少软件开发和维护的成本,提高软件的可信度。为此,本发明采用如下的技术方案。一种基于安全知识库的顺序图缺陷检测方法,包括下列步骤1)顺序图的安全扩展通过UML扩展机制,为顺序图中的对象与消息添加一些与 安全相关的属性,这些与安全相关的属性用于对软件系统组件进行抽象和分类,并用于在 信息图中对与安全相关的信息进行形式化;2)从以XMI形式保存的顺序图中提取安全信息,并对顺序图进行FSA建模,将顺序 图中的对象建模成FSA中的状态节点,顺序图中的消息调用建模成FSA中的状态转移的条 件,得到FSA模型;
3)采用深度优先搜索算法从FSA模型中提取出所有可能的攻击路径;4)建立包括攻击模式库、缺陷库、攻击模式与缺陷的二元关系库在内的安全知识库;5)通过将步骤2)中提取的攻击路径与安全知识库中的攻击模式进行匹配度计 算,找到与各个攻击路径所关联的攻击模式,并通过攻击模式与缺陷的二元关系找到相关 联的缺陷,最后生成威胁信息报告。上述的步骤5)中,对匹配度计算方法可以如下1)首先判断当前攻击路径是否跟安全知识库中的某一个攻击模式的正则表达式 完全相等,如果完全相等,则此次匹配为匹配度为100%的匹配;否则,将攻击路径分解成 各个节点,通过下列的加权方法求取该攻击模式与当前的攻击路径的匹配度以最后一个 节点作为攻击的终点,即潜在攻击目标,设定其权重最大,为50%,距离该潜在攻击目标越 远的攻击节点的权重越小,权值呈1/2指数减小趋势;2)若匹配度大于预设的匹配度阈值,则将该攻击模式的名称,匹配度和该攻击模 式关联到的缺陷组成三元组,加入威胁信息集合中。匹配度阈值最好设定为75%。本发明在安全软件开发架构的基础上,针对设计阶段的顺序图进行安全的检测。 其中顺序图的安全扩展将半形式化的UML语言完全形式化,这样就能够对逻辑含义进行精 确地描述,消除了二义性,有利于对顺序图进行处理和安全检测;顺序图的扫描和建模能够 从顺序图中提取出与缺陷检测密切相关的信息,并将这些信息进行FSA的建模,将设计阶 段的业务逻辑存储在有向图中,有向图的节点代表顺序图中的对象,有向图的边代表顺序 图中的消息,能够很好的反映该业务逻辑中的各对象之间的关系,而且便于计算机进行操 作处理;攻击路径的提取能够提取出顺序图中隐藏的,可能被攻击者所利用的对象跟消息 序列的过程。它是有向图中的一条路径,能够反映攻击者有目的性的从起点,通过若干攻击 手段,一步一步的攻破系统节点,实现最后的攻击目标的过程。为缺陷的检测提供了数据的 支持;借助安全知识库的缺陷检测利用了攻击路径跟攻击模式之间的相似运算,可以获取 与攻击路径类似的攻击模式,进而获得缺陷信息,能够为软件的设计开发提供威胁分析。本发明通过上面的四部分工作,可以有效地检测顺序图隐藏的系统缺陷,能够在 软件开发的早期发现这些漏洞并作修补,从而降低了软件开发和维护的成本,提高了软件 的安全系数,增强可信性。


图1顺序图缺陷检测方法的整体架构图。
图2攻击路径提取流程图。图3安全知识库结构图。图4示意顺序图。图5顺序图转变为FSA模型。
具体实施例方式针对上述目标,本发明提出的方法大致分为四个部分,即顺序图的安全扩展、顺序 图扫描和建模、攻击路径的提取和借助安全知识库的缺陷检测。其中整体的架构图如附图 1所示。1.顺序图的安全扩展通过UML扩展机制,将顺序图中的对象与消息添加一些 安全的属性。这些属性可自M. Gegick的博士论文《Analyzing Security Attacks to Generate Signaturesfrom Vulnerable Architectural Patterns〉〉的系统组件图。安全属 性是对软件系统组件的抽象和分类,能够对顺序图中的组件进行抽象化和形式化的表示。 如Apache可以抽象为Web服务器,MySQL可以抽象为数据库服务器。这些安全属性能够更 好的对顺序图的信息进行形式化,便于后面缺陷的检测。2.顺序图扫描和建模顺序图中的安全信息存储在各个对象和对象之间的消息 里,对顺序图的安全信息的扫描首先要将以XMI形式保存的顺序图中的各个对象和这些消 息提取出来。本发明所做的顺序图的FSA建模过程是将顺序图中的对象建模成FSA中的状 态节点,顺序图中的消息调用建模成FSA中的状态转移的条件。3.攻击路径的提取在顺序图建模FSA模型中,已经成功将顺序图转化成了 FSA, 后面的工作需要在FSA中提取出所有可能的攻击路径。因为建模成的FSA是以有向图的形 式进行存储的,需要对有向图进行分析,找到一条完整的攻击路径。获取攻击路径可以采用深度优先搜索算法。首先将入度为零的节点加入队列(入 度为零的节点是攻击路径的起始点),然后顺次遍历这些节点,递归加入相连接的节点至出 度为零的节点作为攻击路径的终点。提取攻击路径的基本流程如附图2所示,详细算法描 述如下输入顺序图建模后的FSA输出攻击路径集合AttackPathSet = {AttackPath}攻击路径提取主体程序(1).初始化AttackPathSet—0(2).遍历所有入度为零的节点S(2. 1)通过深度优先搜索获得攻击路径AttackPath—DFS(Sq, 0 )(2. 2)将攻击路径加入集合AttackPathSet = AttackPathSet U AttackPath深度优先搜索程序DFS (Si, AttackPath)输入节点Si,正在构建的攻击路径AttackPath(1).首先查看Si是否已经在AttackPath中存在,如果是进行第2步,否则进行第3步。(2).将Si》口入至1」八《8^^8让,返回八《8^^8让,结束程序。(3).遍历FSA中的所有条件转化I =Si X I = Sj(3. 1)将该条件转化加入到AttackPath中(3. 2)递归调用深度优先搜索,传入参数分别为Sj和AttackPath4.借助安全知识库的缺陷检测安全知识库是存储攻击模式、软件缺陷和缓和方 案的关系数据库。本发明借助该数据库进行软件缺陷的检测,需要对这个数据库进行相 关的知识查询操作。安全知识库的结构如附图3所示。攻击模式库(AttackPattern)中 的属性分别代表攻击模式的ID,攻击模式的名称,描述,正则表达和缓和方案。缺陷库 (Weakness)中的属性分别代表缺陷的ID,缺陷的名称,描述,作用领域,发生可能性应用平 台,引入阶段和缓和方案。攻击模式与缺陷的二元关系库(Relationship)中的属性分别代 表攻击模式的ID和缺陷的ID。提取出攻击路径后,我们就获得了对此业务逻辑的缺陷检测 的中间媒介,通过这些攻击路径跟安全知识库中的攻击模式进行匹配度计算,就能够找到 该业务逻辑所关联的攻击模式,最终通过攻击模式与缺陷的二元关系找到相关联的缺陷, 最后生成威胁信息报告。攻击路径跟攻击模式之间的匹配度计算方法为首先判断当前攻 击路径是否跟安全知识库中的某一个攻击模式的正则表达式完全相等,如果完全相等,则 此次匹配是100%的匹配,将该攻击模式的名称,100%和该攻击模式关联到的缺陷组成三 元组,加入威胁信息集合中;否则计算该攻击模式跟该攻击路径的匹配度。将攻击路径分解 为一个一个的节点。最后的节点为业务的终点,是潜在的攻击目标,所以在一次攻击中的威 胁权重最大,设为50%。这个潜在攻击目标可能需要通过多个潜在攻击子节点达到,这些潜 在攻击节点距离最终节点越大,威胁的权值越小,并呈1/2指数减小趋势,匹配度计算算法 如下输入攻击路径集合AttackPathSet,攻击模式集合AttackPatternSet输出威胁信息集合WeaknessSet算法描述(1).初始化缺陷信息集合WeaknessSet—0(2).遍历攻击路径集合AttackPathSet(2. 1).遍历攻击模式集合 AttackPatternSet(2. 1. 1).如果当前攻击路径与当前攻击模式的正则表达相等,则为全匹配,进行 第2. 1.2步,否则进行第2. 1.3步。(2. 1. 2).将当前攻击模式,100%和跟攻击模式所关联的缺陷加入到威胁信息集 合中,继续第2.1步。(2. 1. 3).将攻击路径分解成若干节点,初始化precision — 0, temp - 50%(2. 1.4).遍历攻击路径中的各个节点(2. 1. 5).如果当前攻击模式包含该节点,那么precision+ = temp, temp/ = 2 ;(2. 1.6).如果precision(匹配度)大于75%,那么为部分匹配,将攻击模式, precison和攻击模式所关联的缺陷加入到威胁信息中。下面以图4中的顺序图为例来说明本发明。5.首先需要对顺序图进行安全扩展,为顺序图中的四个对象和五个消息添加安全属性对象用户—ClientWeb 服务器—Server数据库服务器一Database内存—Buffer消息发送消息—HTTPRequest发送查询消息一SendQueryString内存操作一Bufferffrite返回结果一SendMessage处理返回结果—HTTPMessageHandle6.然后对顺序图进行扫描和FSA的建模,获得结构如图5所示。7.从FSA模型中运用攻击路径的提取算法可以提取出三条攻击路径(1) Client — HTTPRequest — Server — SendQueryString — Database — Bufferffrit e — Buffer(2) Client — HTTPRequest — Server — HTTPMessageHandle — Server(3) Client — HTTPRequest — Server — SendQueryString — Database — SendMessag e — Server8.借助安全知识库中存储的攻击模式,将这些攻击路径与攻击模式的正则表达式 进行匹配度计算,最终能够获取到匹配度大于75 %的若干攻击模式,通过攻击模式与缺陷 的关联,最终生成威胁分析报告,提交给系统的分析设计人员,及时将漏洞修补,提高最终 软件的可信度。其中缓冲区溢出Overflow Buffers (正则表达式为(Client) (SendMessage) (Server) (Bufferffrite) (Buffer))即为匹配到的攻击 模式,匹配度为92.5%。该攻击模式相关联的缺陷主要有Data Handling, Failure to Constrain Operations withinthe Bounds of a Memory Buffer, Buffer Copy without Checking Size of Input ( 'Classic BufferOverflow' ), Integer Overflow to Buffer Overflow.通过这些缺陷提供的信息,系统分析和设计人员能够及时的采取措施来修补这 些漏洞和缺陷。最终提高了软件的可信度,降低了软件开发和维护的成本。
权利要求
一种基于安全知识库的顺序图缺陷检测方法,包括下列步骤1)顺序图的安全扩展通过UML扩展机制,为顺序图中的对象与消息添加一些与安全相关的属性,这些与安全相关的属性用于对软件系统组件进行抽象和分类,并用于在信息图中对与安全相关的信息进行形式化;2)从以XMI形式保存的顺序图中提取安全信息,并对顺序图进行FSA建模,将顺序图中的对象建模成FSA中的状态节点,顺序图中的消息调用建模成FSA中的状态转移的条件,得到FSA模型;3)采用深度优先搜索算法从FSA模型中提取出所有可能的攻击路径;4)建立包括攻击模式库、缺陷库、攻击模式与缺陷的二元关系库在内的安全知识库;5)通过将步骤(2)中提取的攻击路径与安全知识库中的攻击模式进行匹配度计算,找到与各个攻击路径所关联的攻击模式,并通过攻击模式与缺陷的二元关系找到相关联的缺陷,最后生成威胁信息报告。
2.根据权利要求1所述的基于安全知识库的顺序图缺陷检测方法,其特征在于,步骤 5)中,对匹配度计算方法如下1)首先判断当前攻击路径是否跟安全知识库中的某一个攻击模式的正则表达式完全 相等,如果完全相等,则此次匹配为匹配度为100%的匹配;否则,将攻击路径分解成各个 节点,通过下列的加权方法求取该攻击模式与当前的攻击路径的匹配度以最后一个节点 作为攻击的终点,即潜在攻击目标,设定其权重最大,为50%,距离该潜在攻击目标越远的 攻击节点的权重越小,权值呈1/2指数减小趋势;2)若匹配度大于预设的匹配度阈值,则将该攻击模式的名称,匹配度和该攻击模式关 联到的缺陷组成三元组,加入威胁信息集合中。
3.根据权利要求2所述的基于安全知识库的顺序图缺陷检测方法,其特征在于,匹配 度阈值设定为75%。
全文摘要
本发明属于可信计算领域,涉及一种基于安全知识库的顺序图缺陷检测方法利用UML顺序图描述设计阶段中的某一业务逻辑,首先对这些顺序图添加安全属性的扩展,然后对这些业务逻辑进行FSA建模并从模型中提取出所有的攻击路径,最后借助由攻击模式库、缺陷库及两者的二元关系所构建的安全知识库,进行缺陷检测,最终生成威胁分析报告。采用本发明可以有效地检测顺序图隐藏的系统缺陷,能够在软件开发的早期发现这些漏洞并作修补,从而降低了软件开发和维护的成本,提高了软件的安全系数,增强可信性。
文档编号G06F11/36GK101833453SQ20101016898
公开日2010年9月15日 申请日期2010年5月13日 优先权日2010年5月13日
发明者孟国柱, 徐超, 李晓红, 潘东, 许光全 申请人:天津大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1