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

基于访问规则控制的内核扩展模块错误检测方法及装置制造方法及图纸

技术编号:8593885 阅读:166 留言:0更新日期:2013-04-18 07:02
本发明专利技术涉及计算机安全防范技术领域,具体涉及一种基于访问规则控制的内核扩展模块错误检测方法及装置;该错误检测方法包括步骤:S1.为内核扩展模块设定内核函数使用规则;S2.分析所述使用规则与内核扩展模块之间的依赖关系并根据所述依赖关系建立状态转移图;S3.根据所述状态转移图中的转移条件,在所述内核扩展模块中添加插装标记;S4.所述内核扩展模块运行至插装标记位置时触发根据所述使用规则执行的检测。本发明专利技术能够实时准确的检测出内核扩展模块运行过程是否存在不安全因素,进而提升操作系统内核的安全性,减少不必要的损失,同时降低程序员的工作量。

【技术实现步骤摘要】

本专利技术涉及计算机安全防范
,具体涉及一种基于访问规则控制的内核扩展模块错误检测方法及装置
技术介绍
在通用操作系统中,内核扩展模块运行于内核态,几乎可以访问所有计算机系统的资源,具有非常高的权限。因此,内核扩展模块的安全性直接影响着操作系统的安全性。同时,由于内核扩展模块可以进行任意添加和删除,因此操作系统大量使用内核扩展模块来实现各种功能。在Linux操作系统中,代码量占操作系统代码总量70%左右的设备驱动就是作为内核扩展模块运行的。但是内核扩展模块可能存在较大的安全隐患,因此,提高内核扩展模块的安全性对于计算机安全性的提升具有重要意义。通常情况下,内核扩展模块的安全性方面常常依赖于开发者对开发规范的遵守,并且需要进行反复的测试以及审核分析,这些对于程序开发者的能力以及职业素养都有较高的要求,同时部署难度也很大。综上所述,一种新的内核扩展模块错误检测方法及装置是亟待提供的。
技术实现思路
(一)要解决的技术问题本专利技术的目的在于提供一种基于访问规则控制的内核扩展模块错误检测方法及装置,用于实时准确的检测出内核扩展模块运行过程是否存在不安全因素,进而提升操作系统内核的安全性,减少不必要的损失,同时降低程序员的工作量。(二)技术方案本专利技术技术方案如下一种基于访问规则控制的内核扩展模块错误检测方法,包括步骤S1.为内核扩展模块设定内核函数使用规则;S2.分析所述使用规则与内核扩展模块之间的依赖关系并根据所述依赖关系建立状态转移图;S3.根据所述状态转移图中的转移条件,在所述内核扩展模块中添加插装标记;S4.所述内核扩展模块运行至插装标记位置时触发根据所述使用规则执行的检测。优选的,所述步骤S3包括根据所述转移条件,查找所述内核扩展模块与所述使用规则相关的所有必要接口 ;在所有必要接口处添加插装标记。优选的,所述插装标记包括注册和初始化标记以及触发检测的标记。优选的,所述步骤S4之后还包括步骤若所述步骤S4中检测到所述内核扩展模块转移到不安全状态,则对其执行审计或者删除操作。优选的,所述不安全状态包括所述内核扩展模块调用其无权调用的函数、所述内核扩展模块访问其无权访问的内存以及所述内核扩展模块隐含潜在的危害。 本专利技术还提供了 一种基于访问规则控制的内核扩展模块错误检测装置一种基于访问规则控制的内核扩展模块错误检测装置,包括分别与待检测内核扩展模块连接的使用规则库、标记插装单元以及动态检测器;所述标记插装单元在根据所述使用规则库中的使用规则查找到的必要接口处添加插装标记,所述动态检测器根据所述插装标记实时监控内核扩展模块的运行状态并在所述内核扩展模块转移至不安全状态时向操作系统内核报警。(三)有益效果本专利技术的内核扩展模块错误检测方法,通过为内核扩展模块设定内核函数使用规贝U,分析使用规则与内核扩展模块之间的依赖关系并根据依赖关系建立状态转移图,进而结合状态转移图在所述内核扩展模块中添加插装标记,内核扩展模块运行至插装标记位置时会触发根据所述使用规则执行的检测,从而能够实时准确的检测出内核扩展模块运行过程是否存在不安全因素,进而提升操作系统内核的安全性,减少不必要的损失,同时降低程序员的工作量。附图说明图1是本专利技术实施例一中自旋锁的工作机理和状态转移图;图2是本专利技术的一种基于访问规则控制的内核扩展模块错误检测装置结构示意图。具体实施例方式下面结合附图和实施例,对专利技术的具体实施方式做进一步描述。以下实施例仅用于说明本专利技术,但不用来限制本专利技术的范围。实施例一一种基于访问规则控制的内核扩展模块错误检测方法,主要包括以下步骤S1.为内核扩展模块设定内核函数使用规则;使用规则可以是既定规则,也可以是一些机构或者系统所有者自定义的一些和既定规则没有直接关系的特定规则;例如,Linux操作系统中的自旋锁用于保证对临界区的互斥访问,其接口函数中有加锁和解锁两类操作,其中“自旋锁不能在未被加锁之前解锁”就是一条关于自旋锁的内核扩展模块的内核函数使用规则;同样,内核在释放后不能再次被使用同样是一条使用规则;甚至可以自定义内核在第一次使用前必须执行清空操作,这也是一条合理的使用规则。本实施例中以自旋锁为例进行说明,自旋锁加锁通过spin_lock (**)执行,解锁则通过spin_unlock(**)执行;现定义自旋锁的使用规则如下(1)、自旋锁在使用前必须进行初始化;(2)、自旋锁不能在未被加锁之前解锁。S2.分析所述使用规则与内核扩展模块之间的依赖关系并根据所述依赖关系建立状态转移图;状态转移图中的顶点表示状态,边表示状态的转移,对于每个顶点,记录其允许访问的变量地址、内存区域以及内核函数;需要说明的是该状态转移图只是为了描述内核扩展模块内部的状态变化,是实际使用的一种原理图,并非必须绘制出状态转移图,对应该状态转移图的计算机程序为有限状态自动机。本实施例以elOOO网卡驱动中的el000_read_eeprom函数使用el000_eeprom_lock自旋锁为例对状态转移图进行说明;以下为el000_read_eeprom函数的源代码Istartic DEFINE_SPINLOCK(el000_eeprom_lock);2 s32 el000_read_eeprom(structel000_hw*hw, ul6offset,ul6words, ul6*data)3 {4 s32 ret ;5 spin_lock(&el000_eeprom_lock);6: ret = el000_do_read_eeprom(hw, offset, words, data);7 spin_unlock(&el000_eeprom_lock);8 return ret ;9 }以上代码中使用了 el000_eeprom_lock自旋锁,在调用函数el000_do_read_eeprom之前调用spin_lock加锁函数进行加锁,在el000_do_read_eeprom函数执行完毕之后调用spin_unlock解锁函数进行解锁;其中,在第5行代码已经执行完毕时处于加锁状态,此时自旋锁内核函数使用情况如图1中所示图中标出了在状态2 (加锁)和状态3 (解锁)时能够访问的与自旋锁相关的内核函数以及对于el000_eeprom_lock自旋锁的状态记录;从图中可以看出,el000_eeprom_lock自旋锁在状态2的可写对象表中,表明el000_eeprom_lock自旋锁当前处于状态2 ;从图中也可以看出,在状态3时不能访问spin_unlock解锁函数,即自旋锁不能在未被加锁之前解锁。S3.根据所述状态转移图中的转移条件,在所述内核扩展模块中添加插装标记;该步骤主要包括根据所述转移条件,查找所述内核扩展模块与所述使用规则相关的所有必要接口 ;在所有必要接口处添加插装标记;所述插装标记包括注册和初始化标记以及触发检测的标记;注册和初始化标记是指在待检测内核扩展模块定义时,添加的向动态检测器注册和初始化该待检测变量的标记,其需要将待检测内核扩展模块的地址以及待检测内核扩展模块所要遵守的内核函数使用规则作为参数传递给动态检测器;触发检测的标记是指在内核扩展模块调用内核函数前,添加的触发动态检测器进行检测的标本文档来自技高网...

【技术保护点】
一种基于访问规则控制的内核扩展模块错误检测方法,其特征在于,包括步骤:S1.为内核扩展模块设定内核函数使用规则;S2.分析所述使用规则与内核扩展模块之间的依赖关系并根据所述依赖关系建立状态转移图;S3.根据所述状态转移图中的转移条件,在所述内核扩展模块中添加插装标记;S4.所述内核扩展模块运行至插装标记位置时触发根据所述使用规则执行的检测。

【技术特征摘要】
1.一种基于访问规则控制的内核扩展模块错误检测方法,其特征在于,包括步骤51.为内核扩展模块设定内核函数使用规则;52.分析所述使用规则与内核扩展模块之间的依赖关系并根据所述依赖关系建立状态转移图;53.根据所述状态转移图中的转移条件,在所述内核扩展模块中添加插装标记;54.所述内核扩展模块运行至插装标记位置时触发根据所述使用规则执行的检测。2.根据权利要求1所述的错误检测方法,其特征在于,所述步骤S3包括根据所述转移条件,查找所述内核扩展模块与所述使用规则相关的所有必要接口 ;在所有必要接口处添加插装标记。3.根据权利要求1所述的错误检测方法,其特征在于,所述插装标记包括注册和初始化标记以及触发检测的标记。4.根据权利要求1-3任意一项所述...

【专利技术属性】
技术研发人员:胡事民刘虎球马超
申请(专利权)人:清华大学
类型:发明
国别省市:

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

1