一种检测隐藏漏洞的方法、装置和Linux操作系统的制作方法

文档序号:6332320阅读:232来源:国知局
专利名称:一种检测隐藏漏洞的方法、装置和Linux操作系统的制作方法
技术领域
本发明属于计算机安全领域,尤其涉及一种检测隐藏漏洞的方法、装置和Linux 操作系统。
背景技术
由于Linux操作系统的开源政策,许多新技术能迅速的加入其内核当中去,所以 Linux操作系统已经广泛应用。然而快速的发展会给Linux内核带来各种安全性的问题,如 今已经有许多关于Linux操作系统容易受到攻击的报道,因此在早期阶段去发现内核源码 中的安全漏洞是十分必须的。然而,目前漏洞的方法大多数只能是出现之后依靠经验去排 查,难度较大。尚未存在能够在早期就发现Linux操作系统漏洞的方法。

发明内容
本发明实施例的目的在于提供一种检测隐藏漏洞的方法,旨在解决不能在早期发 现Linux操作系统漏洞的问题。本发明实施例是这样实现的,一种检测隐藏漏洞的方法,其特征在于,所述方法包 括以下步骤查找Linux内核中所有内核变量;根据系统调用使用内核变量的次数建立系统调用和内核变量之间的关系信息;根据内核变量与系统调用的关系信息计算内核变量出现漏洞的概率,并根据内核 变量出现漏洞的概率确定Linux操作系统的隐藏漏洞。本发明实施例的另一目的在于提供一种检测隐藏漏洞的装置,所述装置包括Linux内核变量查找单元,查找Linux内核中所有内核变量;Linux内核变量与系统调用关系信息库单元,根据系统调用使用内核变量的次数 建立系统调用和内核变量之间的关系信息;Linux内核智能检查单元,根据内核变量与系统调用关系信息库单元统计的内核 中各个系统调用与内核变量的对应关系,计算内核变量出现漏洞的概率。在本发明实施例中,这种检测漏洞的方法和装置,解决了以往不能发现Linux内 核中隐藏漏洞的问题;选择不同的需要分析的Linux内核源码版本,因此能够支持多个版 本的Linux内核;且能通过跟踪用户操作,依据用户操作系统使用习惯自适应寻找当前用 户最有可能受到攻击的地方。


图1是本发明第一实施例提供的检测隐藏漏洞方法的流程图;图2是本发明第一实施提供的查找Linux内核中所有内核变量的流程图;图3是本发明第一实施例提供的建立Linux内核变量和系统调用之间的关系信息 流程4
图4是本发明实施例提供的系统调用树举例示意5是本发明第一实施例提供的建立Linux内核智能检查系统的流程图;图6是本发明第二实施例提供的检测隐藏漏洞方法的流程图;图7是本发明第二实施例提供的按照用户习惯建立Linux操作系统智能检查系统 的流程图;图8是本发明第三实施例提供的检测隐藏漏洞装置的示意图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对 本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并 不用于限定本发明。在本发明实施例中,根据系统调用使用Linux操作系统中各内核变量的次数来确 定内核变量出现漏洞的几率,再根据内核变量出现漏洞的几率即可检测出Linux操作系统 中容易受到攻击的漏洞,从而最大程度上保证Linux操作系统的安全。本发明实施例提供了 一种检测隐藏漏洞的方法和装置所述方法包括查找Linux内核中所有内核变量;根据系统调用使用内核变量的次数建立系统调用和内核变量之间的关系信息;根据内核变量与系统调用的关系信息计算内核变量出现漏洞的概率,并根据内核 变量出现漏洞的概率确定Linux操作系统的隐藏漏洞。所述装置包括=Linux内核变量查找单元,查找Linux内核中所有内核变量;Linux内核变量与系统调用关系信息库单元,根据系统调用使用内核变量的次数 建立系统调用和内核变量之间的关系信息;Linux内核智能检查单元,根据内核变量与系统调用关系信息库单元统计的内核 中各个系统调用与内核变量的对应关系,计算内核变量出现漏洞的概率。为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。实施例一在本发明实施例中,在Linux内核中,大多数漏洞来自于内核变量。内核中有许多 内核变量错误,比如权限错误、返回错误、输入错误等。黑客常常利用这些错误非法获得计 算机信息并操纵它。因此,检测操作系统隐藏漏洞最主要就是发现易受攻击后出现漏洞的 内核变量。而一个内核变量的调用越频繁,出现次数越多则受到攻击出现漏洞的几率就越 大。图1示出了本发明第一实施例提供的检测隐藏漏洞方法的流程图,详述如下在步骤SlOl中,查找Linux内核中所有内核变量;步骤SlOl的详细实现流程如图2所示,详述如下在步骤S201中,选择需要分析的Linux内核源码版本;在本发明实施例中,此检测操作系统隐藏漏洞的方法适用于各个版本的Linux内 核源码,根据需要可对不同版本的内核源码进行分析。在步骤S202中,查看该版本所有的Linux内核变量;
在本发明实施例中,Linux操作系统自带的工具ctags的主要作用是制作tags文 件,即标签文件。对于tags文件来说,tags文件中包含如下对象的列表定义的宏、函数的 定义、原型和声明、变量、类等。通过ctags工具制作tags文件后,可以在tags文件中查看 到变量列中的变量。在步骤S203中,挑选出已经发现和公开的容易受到攻击的变量。在本发明实施例中,ack是一款类似于Linux下的gr印(global search regularexpression(RE)and print out the line,全面搜索正则表达式并把行打印出来) 命令,采用Perl(Practical Extraction Report Language,是一种能扫视任意文字档,并 且能从中取出资讯制成报表的解释语言)语言编写的增强文本查看工具。此工具可根据 Linux内核源码版本选择出已经发现和公开的容易受到攻击的变量。在本发明实施例中,在查看了该版本所有的Linux内核变量并减去已经发现和公 开的容易受到攻击的变量后,剩下的就是需要查找的易出现漏洞的内核变量的变量总和。 完成了查找Linux内核中可能受到攻击的所有内核变量。在步骤S102中,根据系统调用使用内核变量的次数建立系统调用和内核变量之 间的关系信息。在本发明实施例中,系统调用是用户唯一能影响内核变量的方式,黑客只要通过 系统调用就可以操作容易受到攻击的内核变量。因此可以通过系统调用来判断内核变量的 使用情况。在本发明实施例中,步骤S102的具体实现流程如图3所示,详述如下在步骤S301中,根据系统调用对内核变量的使用情况构建系统调用树。在本发明实施例中,利用ctags工具制作的tags文件来构建系统调用树。系统调 用树给出了系统调用和内核函数的对应关系,并在该系统调用树中标记该内核函数中所使 用的内核变量的次数。例如内核变量1_(3011肚在系统调用SyS_brk()中被各个内核函数 调用的次数如图4所示根据图4可知,在此系统调用树中,内核变量i_Count被内核函数Find_Vma_ intersection ()调用了 3次,被内核函数Vm_en0ugh_mem0ry ()调用了 5次,而被系统调用 sys_brk()调用的总次数则为这些内核函数调用的次数之和26。在步骤S302中,从系统调用树中提取系统调用所调用的内核变量的次数;在步骤S303中,建立内核变量与系统调用的关系信息。在本发明实施例中,统计所有的系统调用使用其相关内核变量的次数,根据以上 数据建立全体内核变量与系统调用的关系信息,其中各个系统调用对应各个相关内核变量 的使用次数。在本发明实施例中,可以采用关系信息库存储系统调用与内核变量之间的关 系信息。在本关系信息库中,系统调用对应其调用的各个内核变量及调用次数。例如图4 所示的信息可建立一条关系信息库中的数据如下系统调用SyS_brk()对应其调用的多个 内核变量,其中对应内核变量i_Count的调用次数为26。在步骤S103中,根据内核变量与系统调用的关系信息计算内核变量出现漏洞的 概率,并根据内核变量出现漏洞的概率确定Linux操作系统的隐藏漏洞。其详细实现流程如图5所示,详述如下在步骤S501中,根据系统调用与其内核变量之间的关系信息,采用预设的漏洞概率算法计算内核变量出现漏洞的概率。其中预设的漏洞概率算法可以为现有技术提供的任意一种算法,也可以为本发明 实施例提供的如下算法Pv= (SC1+SC2+SC3+. . . . SCN)/N,其中N表示与内核变量有关的系 统调用总数,SCI、SC2、SC3、SCN分别表示第1个系统调用、第2个系统调用、第3个系统调 用、第η个系统调用,V代表某个内核变量,Pv代表内核变量V出现漏洞的概率。如果内核 变量V存在于第η个系统调用中,则SCn = 1,否则为0。在步骤S502中,将内核变量出现漏洞的概率从大到小排序,判断易受攻击的内核变量。在本发明实施例中,原则上认为排序越靠前则该内核变量受到攻击出现漏洞的几 率越大。例如在2. 6. 28内核中,计算出排在前5位的变量为i_count、op、olen、ilen、gf_ numsrc,可以初步认为这5个内核变量容易受到攻击,是需要检查的变量。在步骤S503中,根据内核变量是否被公开过进一步判别容易受到攻击出现漏洞 的内核变量。在本发明实施例中,举例说明如何进一步判别容易受到攻击出现漏洞的内核变 量。例如通过查询相关公开,得知i_count和gf_numsrC在2. 6. 2内核版本中已经被发现 容易受到攻击,这两个变量在以后的版本中已经做了修复,可以认定这两个变量不存在漏 洞风险,其他的3个变量则没有公开说明已经被修复,而这3个内核变量又大量的存在于系 统调用中,故将这3个变量认定为最有可能受到攻击出现漏洞的内核变量。实施例二图6示出了本发明第二实施例提供的检测隐藏漏洞方法的流程图,详述如下在步骤S601中,查找Linux内核中所有内核变量;在步骤S602中,根据系统调用使用内核变量的次数建立系统调用和内核变量之 间的关系信息;在步骤S603中,根据内核变量与系统调用的关系信息计算内核变量出现漏洞的 概率;在步骤S604中,跟踪操作系统中用户程序使用情况,统计用户程序系统调用中内 核变量出现的次数,据此计算内核变量出现次数概率。在本发明实施例中,由于每个用户都有自己的操作习惯,在某段时间使用的应用 程序也各不相同,而每个应用程序使用的系统调用也不相同,因此其使用的内核变量的次 数也各不相同。其具体实现如图7所示,详述如下在步骤S701中,跟踪用户程序所使用的系统调用情况,将结果输出到一个指定文 件中。在本发明实施例中,strace命令能够显示所有用户空间程序发出的系统调用。 利用strace工具跟踪用户程序所使用的系统调用,并将结果输出到一个指定文件USer_ habit 中。在步骤S702中,计算系统调用中内核变量出现的次数。在本发明实施例中,利用内核变量与系统调用的关系信息库中系统调用和内核变 量的关系信息,统计uSr_habit文件中的系统调用中内核变量出现的次数。
在步骤S703中,设计内核变量出现次数概率的算法。在本发明实施例中,根据步骤S502中的数据结果设计内核变量出现次数概率的 算法。其中内核变量出现次数概率的算法可以为现有技术提供的任意一种算法,也可以是 如下所举的算法。例如与系统调用有关的内核变量为V,出现的次数为Nv(以此类推,若与 系统调用有关的内核变量为a,出现的次数就为Na),内核变量V出现次数概率为PNv。PNv 的计算方法为PNv = Nv/ (Na+Nb+Nc+. . . +Nv)。在步骤S704中,将内核变量出现次数概率从大到小排序。在本发明实施例中,利用上述步骤计算出来的内核变量出现次数概率从大到小排 序,概率越大代表用户在这段时间访问这个内核变量的次数越多,受到攻击出现漏洞的概 率也相对较大。在步骤S705中,查看顺序较前的内核变量是否属于被公开过的容易受到攻击,但 已经修复的范畴。在本发明实施例中,根据步骤S704的排序结果,查找概率最大的几个内核变量是 否属于被公开过的容易受到攻击但是已经修复的范畴。排除那些已经修复的内核变量,剩 下的概率较大的内核变量便是值得注意和检查的变量。最后,在步骤S605中,将内核变量出现漏洞的概率的排序结果及内核变量出现次 数概率的排序结果进行对比,排序均靠前的判断为最易出现漏洞的内核变量。在本发明实施例中,将内核变量出现漏洞概率的排序结果和内和变量出现次数概 率的排序结果进行对比,如果某个内核变量出现在这两个排序结果中的前列,则认为这个 内核变量最容易受到攻击,一旦系统出现漏洞,需要做的就是检查并修复这个内核变量。在本发明实施例中,不仅对内核系统调用中内核变量的使用情况进行了统计,还 统计的用户程序系统调用中内核变量的使用情况,使得内核变量容易易受攻击出现漏洞的 概率的计算更加精确。实施例三图8为本发明的实施例提供的检测隐藏漏洞装置的结构示意,为了便于说明,仅 示出了与本发明实施例相关的部份。该装置可以是内置于操作系统中的软件单元、硬件单 元或者软硬件相结合的单元,或者作为独立的挂件集成到操作系统或操作系统的应用系统 中。其中Linux内核变量查找单元1,通过选择需要分析的Linux内核源码版本,查看该版 本所有的Linux内核变量后,从中选择出已经发现和公开的容易受到攻击的变量。Linux内核变量与系统调用关系信息库单元2,首先通过制作系统调用树,标记出 该系统调用所对应的内核函数中使用的内核变量的次数;其次从系统调用树中提取该系统 调用使用相关内核变量的次数;最后统计所有的系统调用其相关的内核变量的次数,建立 全体内核变量与系统调用的关系信息库。Linux内核智能检查单元3,根据内核变量与系统调用关系信息库单元2中建立的 内核变量与系统调用的关系信息库,设计内核出现漏洞概率的算法后将其从大到小排序, 根据排序判断内核变量是否容易出现漏洞。Linux操作系统智能检查单元4,跟踪用户程序使用情况,建立内核变量出现次数 概率的算法后,将其从大到小排序,根据排序判断内核变量是否容易出现漏洞。并将此次排序和内核智能检查单元中的排序进行对比,判断出最易出现漏洞的内核变量。在本发明实施例中,这种检测漏洞的方法和装置,解决了以往不能发现Linux内 核中隐藏漏洞的问题;选择不同的需要分析的Linux内核源码版本,因此能够支持多个版 本的Linux内核;且能通过跟踪用户操作,依据用户操作系统使用习惯自适应寻找当前用 户最有可能受到攻击的地方。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精 神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
一种检测隐藏漏洞的方法,其特征在于,所述方法包括以下步骤查找Linux内核中所有内核变量;根据系统调用使用内核变量的次数建立系统调用和内核变量之间的关系信息;根据内核变量与系统调用的关系信息计算内核变量出现漏洞的概率,并根据内核变量出现漏洞的概率确定Linux操作系统的隐藏漏洞。
2.如权利要求1所述的方法,其特征在于,在所述根据内核变量与系统调用的关系信 息计算内核变量出现漏洞的概率,并根据内核变量出现漏洞的概率确定Linux操作系统的 隐藏漏洞的步骤之后进一步包括以下步骤跟踪操作系统中用户程序使用情况,统计用户程序系统调用中内核变量出现的次数, 据此计算内核变量出现次数概率;将内核变量出现漏洞的概率的排序结果及内核变量出现次数概率的排序结果进行对 比,排序均靠前的判断为最易出现漏洞的内核变量。
3.如权利要求1所述的方法,其特征在于,所述的查找Linux内核中所有内核变量包括 以下步骤选择需要分析的Linux内核源码版本; 查看该版本所有的Linux内核变量; 挑选出已经发现和公开的容易受到攻击的变量。
4.如权利要求1所述的方法,其特征在于,所述的根据系统调用使用内核变量的次数 建立系统调用和内核变量之间的关系信息包括以下步骤根据系统调用对内核变量的使用情况构建系统调用树; 从系统调用树中提取系统调用所调用的内核变量的次数; 建立内核变量与系统调用的关系信息。
5.如权利要求1所述的方法,其特征在于,所述的根据内核变量与系统调用的关系信 息计算内核变量出现漏洞的概率包括以下步骤根据系统调用与其内核变量之间的关系信息,采用预设的漏洞概率算法计算内核变量 出现漏洞的概率;将内核变量出现漏洞的概率从大到小排序,判断易受攻击的内核变量; 根据内核变量是否被公开过进一步判别容易受到攻击出现漏洞的内核变量。
6.如权利要求2所述的方法,其特征在于,所述的跟踪操作系统中用户程序使用情况, 统计用户程序系统调用中内核变量出现的次数,据此计算内核变量出现次数概率包括以下 步骤跟踪用户程序所使用的系统调用情况,将结果输出到一个指定文件中; 计算系统调用中内核变量出现的次数; 设计内核变量出现次数概率的算法; 将内核变量出现次数概率从大到小排序;查看顺序较前的内核变量是否属于被公开过的容易受到攻击,但已经修复的范畴。
7.如权利要求2所述的方法,其特征在于,所述内核变量出现漏洞的概率及内核变量 出现次数概率的计算算法分别如下Pv = (SC1+SC2+SC3+. . . . SCN)/N,其中N表示与内核变量有关的系统调用总数,SCUSC2、SC3、SCN分别表示第1个系统调用、第2个系统调用、第3个系统调用、第η个系统调 用,V代表某个内核变量,Pv代表内核变量V出现漏洞的概率。如果内核变量V存在于第η 个系统调用中,则SCn = 1,否则为0;PNv = Nv/(Na+Nb+Nc+. . . +Nv),其中与系统调用有关的内核变量为V,出现的次数为 Nv (以此类推,若与系统调用有关的内核变量为a,出现的次数就为Na),内核变量V出现次 数概率为PNv。
8.一种隐藏漏洞的检测装置,其特征在于,所述装置包括Linux内核变量查找单元,查找Linux内核中所有内核变量;Linux内核变量与系统调用关系信息库单元,根据系统调用使用内核变量的次数建立 系统调用和内核变量之间的关系信息;Linux内核智能检查单元,根据内核变量与系统调用关系信息库单元统计的内核中各 个系统调用与内核变量的对应关系,计算内核变量出现漏洞的概率。
9.如权利要求8所述的装置,其特征在于,所述装置进一步包括Linux操作系统智能检查单元,跟踪操作系统中用户程序使用情况,统计各内核变量出 现的次数,计算内核变量出现次数的概率。并将此次排序和内核智能检查单元中内核变量 出现漏洞的概率排序进行对比,判断出最易出现漏洞的内核变量。
10.一种Linux操作系统,其特征在于,所述系统包括权利要求8至9任一权利要求所 述的隐藏漏洞的检测装置。
全文摘要
本发明属于计算机安全领域,提供了一种检测隐藏漏洞的方法、装置和Linux操作系统。该方法包括下述步骤查找Linux内核中所有内核变量;根据系统调用使用内核变量的次数建立系统调用和内核变量之间的关系信息;根据内核变量与系统调用的关系信息计算内核变量出现漏洞的概率,并根据内核变量出现漏洞的概率确定Linux操作系统的隐藏漏洞。解决了不能在早期发现Linux系统隐藏漏洞的问题。这种检测漏洞的方法和装置,解决了以往不能发现Linux内核中隐藏漏洞的问题;且能选择不同的需要分析的Linux内核源码版本,因此能够支持多个版本的Linux内核。
文档编号G06F11/00GK101937499SQ20101028646
公开日2011年1月5日 申请日期2010年9月19日 优先权日2010年9月19日
发明者丁宏, 张洁, 邵彦生, 高怀恩 申请人:深圳创维-Rgb电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1