当前位置: 首页 > 专利查询>南京大学专利>正文

基于程序内部行为监控的软件安全保障的方法技术

技术编号:2921255 阅读:244 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种基于程序内部行为监控的软件安全保障的方法,其步骤是:1.语言代码分析器分析程序的控制流,并添加描述控制流转换代码,添加程序的协助保护功能,然后编译成可执行程序;2.处理过的程序递交给程序加载器,判断当前程序是否具有保护功能,如果有则加载适当的运行环境,否则转到4;3.向操作系统递交该进程的保护信息并设置该程序进程的保护标志为真;4.操作系统内核一旦获得控制权利,则判断进程的保护标志,如果为假转到7;5.操作系统内核检查该进程控制流转换的一致性,如果不一致,发出安全警告,并杀死进程,转到7;6.继续运行进程;7.结束。本发明专利技术的显著优点是提高了安全保障方法的精确性和通用性。

【技术实现步骤摘要】

本专利技术涉及一种计算机系统安全(system security)保障方法,特别是一种软件不因为本身自带的漏洞而受到攻击所提供的安全保障方法。
技术介绍
软件的安全问题是指由于软件的研究、设计、开发、测试,以及使用过程中的缺陷而造成的安全漏洞(security flaws)。攻击者可能利用这些漏洞使得软件的运行偏离原本设计的意图来达到特有的攻击目的,典型的例子包括缓冲区溢出(buffer overflow)漏洞,格式化串(format string)错误,malloc/free错误等。随着计算机应用和互联网的迅速发展,计算机之间的交互不断增强,软件的安全问题已成为计算机系统安全的最大问题所在。目前解决此问题的方法大致分两类一是针对已知漏洞的方法,二是程序的行为管理。前者缺乏通用性,每种方法都只能防范一小部分的攻击,并且对于未知攻击类型毫无作用;后者的分析粒度比较有相当精确度的损失,即较高的漏报率和错报率。这两种方法都已经在现实中有了一定程度的应用,两种方法的代表作有Immunix Secured OS、Computer Misuse DetectionSystem等。
技术实现思路
1、专利技术目的本专利技术的目的是为了弥补目前防范软件漏洞攻击的两类方法通用性和精确程度难以结合的不足,提供了一种基于程序内部行为监控的同时具有很高的精确性和通用性的方法。2、技术方案为了实现本专利技术所述目的,本专利技术从操作系统环境的角度来提供对经过特别处理的程序的攻击防护,其方法包括以下步骤(1)C语言代码分析器分析程序的控制流,并在关键位置(分为函数调用点、被调用函数入口、函数返回点)添加描述控制流转换代码,添加程序的协助保护功能,然后按照正常方式编译成可执行程序;(2)处理过的程序递交给程序加载器,程序加载器判断当前程序是否具有保护功能,如果有则加载辅助计算控制流转和向操作系统递交控制流转信息的运行环境,如果没有转到步骤(4);(3)向操作系统递交该进程的保护信息并设置该程序进程的保护标志为真;(4)操作系统内核在整个系统运行中一旦获得控制权利,则立即判断当前进程的保护标志,如果为假转到步骤(7);(5)操作系统内核检查该进程控制流转换的一致性,如果不一致,发出安全警告,并杀死进程,转到步骤(7);(6)继续运行进程;(7)保护机制结束。在具体系统实现中,即构建一个具有以上安全保障特性的操作系统环境,构建的方法按照以下的流程(1)改造通用操作系统内核,添加监控机制;(2)构造C语言分析器或者修改编译器,使其具有分析控制流和添加合适代码的功能;(3)从源代码重新创建可运行的程序,在这个过程中自动添加描述控制流的代码;(4)修改系统程序加载器和运行库,提供对这种特殊的添加了保护特性的程序的加载和运行提供支持;(5)将以上的各部分按照以上描述的保护机制的总体步骤整合成一个一致的操作系统环境。本专利技术的主要思想是通过分析程序的控制流转换,给普通程序添加描述控制流转换的代码,通过操作系统内核来监控程序的运行,达到判断一个程序是否收到攻击的目的。该方法一个非常重要的出发点,也是目前几乎所有攻击的一个共性,就是对程序正常控制流的篡改。3、有益效果本专利技术的显著优点是克服了现有两类方法防范软件漏洞攻击的通用性和精确程度难以结合的不足,提高了安全保障方法的精确性和通用性。四附图说明图1是C语言程序转换的流程图。图2是系统程序加载器工作流程图。图3是系统内核状态转换和执行流程图。图4是系统构造及总体工作流程图。五具体实施例方式为了更好地说明整个构建基于程序内部行为监控保护机制的操作系统环境的具体实施方式,首先需要简单引入一些原理和概念。1、控制流——函数调用关系图。一个程序的执行通常由一系列顺序执行的语句或指令所连接的函数调用所组成,如果把一个程序的函数看作这样的相对独立的指令序列块,对于这个指令块有统一的入口点(entry point)和出口点(return point),并把所有函数的入/出口点,以及函数调用指令都缩减成图的节点,把连接这些节点的顺序指令看作节点间的路径,那么就称之为一个程序的函数调用关系图。2、等价调用关系——简单函数调用轨迹。为了构造简单函数调用轨迹,首先需要对call graph的信息做一定的转换。等价调用关系计算方法是假设调用关系图G中调用点表示为Ci(i=1…N)函数的表示为Fj(j=1…M),Ci→Fj表示在call graph中存在一条由Ci到Fj的调用关系边。将G按照以下的算法转换为G’对于一个调用点Ci和它所调用关系所指向的集合F,如果存在任何其他调用点的调用关系Ck→Fh,且Fh∈F,则添加Ci→Fh到G’中。重复这个过程直到没有新边添加为止。将同一个调用点指向的函数称为“等价调用函数集合”,而所有指向同一个等价调用函数结合的调用点为“等价调用点集合”,它们之间的关系为“等价调用关系”。类似的,可以构造“等价返回函数集合”、“等价返回点集合”以及“等价返回关系”并说明它们的类似特性。在此基础上,构造运行时候的“简单函数调用轨迹”对于所有程序中每一个“等价调用关系”赋值不同的标识数,并定义等价调用关系标识数的集合为IN,类似定义等价返回标识数集合OUT,它的简单函数调用轨迹是如下产生的两组整数数字序列对(调用序列对Ii、I’i;返回序列对Oi、O’i) (公式一) (公式二)其中,I为索引值,表示函数运行时候函数调用或者返回的次数。n、m为两个数列对的初始值,可以为任何整数,a,a’∈IN分别为本次的函数调用点和本次被调用返回函数所在“等价调用关系”(等价返回关系)的标识数。b,b’∈IN分别为本次的返回函数和本返回点所在“等价调用关系”(等价返回关系)的标识数。调用序列函数f(a,b),与返回序列函数g(x,y)为使得所生成的Ii、Oi满足以下条件的任意函数i,ji≠j→Ii≠Ij且Oi≠Oj(条件一) (条件二)。本专利技术的流程 本专利技术的三个重要组成部分是C程序转换器、程序加载器和监控内核。它们分别来自通用的C语言分析器(CIL)、通用程序加载器(ld.so)和通用操作系统内核(Linux kernel 2.4.x)。为了更好的说明本专利技术的工作流程,我们将分别具体说明该三个主要组成部分的内部工作流程,然后再描述由这三个部分组成的整体工作流程。1、C语言源码程序的保护机制的添加流程。一个C语言源码的程序首先需要通过本专利技术的C语言分析器进行转换,C语言分析和添加保护代码的步骤如图1所示。首先扫描所有程序的C语言源文件,分析整个程序的函数调用关系,以一定格式记录(步骤10)。然后,根据所得的函数调用关系按照前面部分所介绍的等价调用关系计算法计算所有等价调用(返回)关系,并为每一个等价关系分配一个唯一的标识数(步骤11)。接着,根据标识数选择满足条件一、二的序列函数f(x,y)和g(x,y)(步骤12),这两个函数的选择原则上是任意满足条件一、二的任何函数,实现当中最简单的选择可以是f(x,y)=g(x,y)=x+y。再接着,分析器将上面所得的标识数和序列函数组成计算简单函数调用轨迹的C语言源代码并插入程序中适当的部位(步骤13)。所添加代码的主要任务是按照概念介绍部分的公式一和公式二计算简单函数调用轨本文档来自技高网...

【技术保护点】
一种基于程序内部行为监控的软件安全保障的方法,其特征在于该方法包括以下步骤:(1)C语言代码分析器分析程序的控制流,并在函数调用点、被调用函数入口、函数返回点添加描述控制流转换代码,添加程序的协助保护功能,然后按照正常方式编译成可执行程序;(2)处理过的程序递交给程序加载器,程序加载器判断当前程序是否具有保护功能,如果有则加载辅助计算控制流转和向操作系统递交控制流转信息的运行环境,如果没有转到步骤(4);(3)向操作系统递交该进程的保护信息并设置该程序进程的保护标志为真;(4)操作系统内核在整个系统运行中一旦获得控制权利,则判断当前进程的保护标志,如果为假转到步骤(7);(5)操作系统内核检查该进程控制流转换的一致性,如果不一致,发出安全警告,并杀死进程,转到步骤(7);(6)继续运行进程;(7)保护机制结束。

【技术特征摘要】

【专利技术属性】
技术研发人员:夏耐郭明松茅兵林志强王逸谢立
申请(专利权)人:南京大学
类型:发明
国别省市:84[]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利