当前位置: 首页 > 专利查询>杨力祥专利>正文

一种形式化的发现可能引发攻击风险的代码漏洞的分析方法技术

技术编号:22884470 阅读:21 留言:0更新日期:2019-12-21 07:29
本发明专利技术公开了形式化的发现可能引发攻击风险的代码漏洞的分析方法,涉及信息技术,特别是信息安全领域,具体包括搜索隐藏执行序,隐藏代码和搜索特权指令的方法。应用本发明专利技术提供的方案,可以防止类似脏牛漏洞等攻击,也能够防止文件中出现不该出现的指令而导致运行时越权操作。

A formal analysis method of code vulnerabilities that may lead to attack risk

【技术实现步骤摘要】
一种形式化的发现可能引发攻击风险的代码漏洞的分析方法
本申请涉及信息
,特别涉及一种形式化的“发现可能引发攻击风险的代码漏洞”的分析方法。
技术介绍
现有技术中,存在通过引发一种特定的执行序分支,进而非法的获得root权限的攻击方式。例如,不久前发现的脏牛(DirtyCow)漏洞和大脏牛(HugeDirtyCow)漏洞,就是上述攻击方式的一种具体实现方式。由于其不需要传统的缓冲区溢出等方式,因此更具有隐蔽性,更加难以被现有技术中基于模式识别的防攻击方法,例如杀毒软件、漏洞检测工具等识别,因此具有更大的危害。
技术实现思路
针对现有技术中难以发现某些隐藏的特定执行序分支可能导致攻击者可以非法获得root权限的缺陷,本专利技术公开了一种发现潜在可能引发攻击风险的代码漏洞的分析方法,特别的,涉及一种形式化的发现可能引发攻击风险的代码漏洞的分析方法。在本专利技术的一种具体实现方式中,一种搜索隐藏执行序的方法,其特征在于:在编译阶段统计程序所有的涉及分支的执行序;在运行时记录所有执行到的分支执行序,并与编译阶段统计结果作比对,以此确定哪些分支执行序没有执行到,没有执行到的执行序,就是隐藏执行序。在本专利技术的一种具体实现方式中,一种搜索隐藏代码的方法,其特征在于:在编译阶段统计程序所有的代码;在运行时记录所有执行到代码,并与编译阶段统计结果作比对,以此确定哪些代码没有执行到,没有执行到的代码,就是隐藏代码。在本专利技术的一种具体实现方式中,一种搜索特权指令的方法,其特征在于:在使用者指定的文件中,搜索使用者指定的机器指令,如果发现,将指令位置反馈给使用者,反之,提示没有相应指令。本专利技术的技术方案可以实现以下技术效果:通过搜索隐藏执行序的方法,可以发现程序中常态下不会出现,而在攻击状态下会导致攻击的执行序,如DirtyCow。通过搜索隐藏代码的方法,可以发现程序中不需要外部激励,而通过特定条件就能启动攻击的漏洞,如逻辑炸弹。通过搜索特定指令的方法,可以发现指定文件中是否存在指定机器指令,以防止文件中出现不该出现的指令而导致运行时越权操作。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1:语法树节点记录语句信息示意图图2:示例程序执行后可能出现的全部分支执行序示意图图3:示例程序某个语句对应节点的示意图具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。以下通过具体的实施方式来具体的说明本专利技术的
技术实现思路
。实施例1搜索隐藏执行序小工具实施方案在编译的语法分析过程中,记录下每一条语句所在源文件的文件号、在源文件中的行号、以及在每一行中对应的语句号,一套优选的方案是,将这些信息记录在每条语句形成的语法树根节点上。图1表示了一种通过语法树根节点记录上述信息的可选的方式。图1最左侧的子树描述了该子树对应文件号0中,位于第55行的第0号语句,这些信息记录在图1最左侧的子树的根节点中。图1中间位置和最后侧的子树记录了其对应语句的信息。每条语句经编译生成的汇编指令,都对应一套文件号、行号和语句号,这些定位信息和汇编指令一起,被保存在目标文件A中,情景如下所示:文件号:0行号:55语句号:0语句A经编译生成的汇编指令文件号:1行号:18语句号:0语句B经编译生成的汇编指令文件号:1行号:18语句号:1语句C经编译生成的汇编指令目标文件A中的汇编指令和定位信息,最终被保存在可执行文件中。除此之外,还要在编译阶段确定并记录下,程序执行时可能出现的全部分支执行序,比如有如下源程序:01:intmain()02:{03:inta=4,b=3,c=2,d=1;04:intm=10,n=5;05:if(a>b)06:{07:m=n;08:}09:if(a>c)10:{11:n=m;12:}13:elseif(c>d)14:{15:m=n;16:}17:else18:{19:n=m;20:}21:numl:22:switch(a)23:{24:case3:25:m=n;26:break;27:case4:28:a=a+1;29:break;30:case5:31:a=a+b;32:break;33:case6:34:a=a-1;35:break;36:default:37:break;38:}39:return0;40:}图2表示了上述示例程序执行后可能出现的全部分支执行序示意图。上述示例程序中,标号为05、09、13、17、24、27、30、33的代码处可能产生分支,图2右侧的结构的与上述程序可能产生的分支相对应。以标号09处的结构为例,图3具体展示了该结构。其中,“000900”分别表示的是分支语句所在文件号,分支语句所在行号,分支语句在行中的语句号;其下有两个分支,其中,为0的分支代表分支语句执行结果为假时的执行序;为1的分支代表分支语句执行结果为真时的执行序。搜索可执行文件中隐藏执行序的方法是:在可执行程序加载并执行时,将EFLAGES寄存器中的TF为置为1,这样可执行程序每执行一条指令,都会产生一个调试异常,内核中的调试异常服务程序,可以根据可执行程序中的定位信息,确定当期执行的指令是否属于分支指令,如果不是,不予处理,如果是,确定其属于哪个文件、哪个行号、哪条语句,并以二叉树结构记录下来。等到可执行程序的执行测试完毕后,执行过的分支语句,就会形成一棵二叉树,用这个二叉树,和编译期间形成的全部分支语句形成的二叉树,就可以确定哪些执行序没有执行到,这些没有执行到的分支执行序,就是隐藏执行序。实施例2搜索隐藏代码小工具实施方案在编译的语法分析过程中,记录下每一条语句所在源文件的文件号、在源文件中的行号、以及在每一行中对应的语句号,一套优选的方案是,将这些信息记录在每条语句形成的语法树根节点上。图1表示了一种通过语法树根节点记录上述信息的可选的方式。图1最左侧的子树描述了该子树对应文件号0中,位于第55行的第0号语句,这本文档来自技高网
...

【技术保护点】
1.一种搜索隐藏执行序的方法,其特征在于:在编译阶段统计程序所有的涉及分支的执行序;在运行时记录所有执行到的分支执行序,并与编译阶段统计结果作比对,以此确定哪些分支执行序没有执行到,没有执行到的执行序,就是隐藏执行序。/n

【技术特征摘要】
1.一种搜索隐藏执行序的方法,其特征在于:在编译阶段统计程序所有的涉及分支的执行序;在运行时记录所有执行到的分支执行序,并与编译阶段统计结果作比对,以此确定哪些分支执行序没有执行到,没有执行到的执行序,就是隐藏执行序。


2.一种搜索隐藏代码的方法,其特征在于:在编译阶段统计程...

【专利技术属性】
技术研发人员:杨力祥
申请(专利权)人:杨力祥
类型:发明
国别省市:北京;11

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

1