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

一种针对代码复用编程的软件安全性检测方法技术

技术编号:12476724 阅读:69 留言:0更新日期:2015-12-10 12:46
针对代码复用编程的软件安全性检测方法,包括指令序列反汇编、收集基本功能代码片段、攻击代码生成、攻击代码记录和软件安全性报告五个阶段;指令序列反汇编阶段,对返回指令之前的字节序列进行反汇编;基本功能代码片段收集阶段,其输入为上一阶段收集的指令序列;判断指令序列是否属于某种基本功能,对于属于基本功能的指令序列,将其作为该基本功能的代码片段进行收集;攻击代码生成阶段,按照预定义的攻击模板组合各基本功能的代码片段,生成攻击代码,对于攻击代码中包含副作用的代码片段,采用副作用消除策略消除其副作用,确保攻击代码功能的正常实现;攻击代码记录阶段,将成功消除副作用的攻击代码记录到相应的测试结果文件中。

【技术实现步骤摘要】

本专利技术涉及软件安全性检测,特别涉及一种检测软件是否易受到代码复用编程攻击的软件安全性检测方法。
技术介绍
目前针对软件的攻击方式呈现多样化和自动化的特点,使得系统和软件安全受到严重的挑战。随着数据执行保护和地址随机化等防御措施在操作系统上的部署,传统的代码注入攻击不再有效。而代码复用编程不需要注入攻击代码,通过对目标程序中存在的代码片段进行复用从而实施攻击,可以绕过这些安全防御技术,对计算机系统安全造成了严重的威胁。因此,对软件进行针对代码复用编程的安全性检测具有十分现实的意义,可以有效地缓解代码复用编程的攻击,提高软件的安全质量。本专利技术提出。收集待检测程序中存在的代码片段,根据多种组合规则组合代码片段生成攻击代码,实现多种攻击行为的检测,多方面检测软件的安全性。在攻击代码生成过程中,加入对带有副作用代码片段(会对程序状态产生额外操作)的使用,提高了生成攻击代码的成功率,从而更为全面和准确地检测软件被利用或攻击的可能性,提高针对代码复用编程的软件安全性。
技术实现思路
为了更加有效地生成攻击代码、检测针对代码复用编程的软件安全性,本专利技术目的是,提供一种引入副作用代码片段、针对代码复用编程的软件安全性进行检测的方法。收集待检测程序中存在的多种基本功能的代码片段,将这些收集到的代码片段作为攻击代码生成的候选集;根据预定义的多种攻击模板(即代码片段组合规则)组合候选集中的各基本功能代码片段,生成攻击代码;记录生成的各攻击代码,报告待检测程序中存在的安全隐患。通过在攻击代码生成过程中引入副作用代码片段,从而有效地提高了攻击代码生成成功率,提高了安全性检测的精确度。本专利技术技术方案是:,包括指令序列反汇编、收集基本功能代码片段、攻击代码生成、攻击代码记录和软件安全性报告等5个阶段。指令序列反汇编阶段,对返回指令之前的字节序列进行反汇编。由于x86平台指令的密集性,一个字节序列可能对应多种反汇编结果,即多个指令序列。基本功能代码片段收集阶段,其输入为上一阶段收集的指令序列。判断指令序列是否属于某种基本功能。对于属于基本功能的指令序列,将其作为该基本功能的代码片段进行收集。攻击代码生成阶段,按照预定义的攻击模板组合各基本功能的代码片段,生成攻击代码。对于攻击代码中包含副作用的代码片段,采用副作用消除策略消除其副作用,确保攻击代码功能的正常实现。攻击代码记录阶段,将成功消除副作用的攻击代码记录到相应的测试结果文件中。软件安全性报告阶段,输出各测试结果文件中记录的攻击代码,报告用户待检测程序中潜在的可实现各种攻击行为的复用代码(即攻击代码),以评价软件潜在的安全隐患。本专利技术的关键操作如下:(I)返回指令的搜索。在待检测程序的可执行段中搜索存在的返回指令;(2)字节序列反汇编。对返回指令之前的字节序列进行逆向反汇编,直到反汇编完成。反汇编结果为多个指令序列;(3)基本功能代码片段收集。本专利技术中预定义了多种基本功能。对于收集到的指令序列,采用语义求解器求解验证其是否属于某种基本功能。如果属于,将指令序列作为该基本功能的代码片段收集,每个基本功能对应一个代码片段集;(4)代码片段分配。本专利技术中预定义了多种攻击模板,攻击模板由基本功能语句构成,每条基本功能语句存在相应的基本功能代码片段集。遍历各个攻击模板,对于攻击模板中的每条基本功能语句,从对应的基本功能代码片段集中搜索操作数匹配的代码片段。每条基本功能语句对应多个匹配的代码片段,这些代码片段组成该基本功能语句的分配代码片段集。(5)攻击代码生成。遍历攻击模板中的各条基本功能语句,从每条基本功能语句的分配代码片段集中选择一个代码片段。这些选择的代码片段的每种组合,构成一个攻击代码。由于每条基本功能语句的分配代码片段集中包含多个代码片段,所以攻击代码存在多种代码片段组合方式,即每个攻击模板可生成多个攻击代码。其中,要使用副作用判断、定义-使用链收集、副作用消除和攻击代码记录等操作;(6)副作用判断。遍历攻击代码中的代码片段,通过定义-使用链判断各代码片段是否带有副作用;(7)定义-使用链收集。分析攻击代码中各代码片段之间的数据流,收集攻击代码中存在的定义-使用链;(8)副作用消除。针对攻击代码中存在的副作用代码片段,采用引入基本功能的代码片段对其副作用进行消除,从而保证攻击代码正常执行;(9)攻击代码记录。将成功消除副作用的攻击代码的详细信息记录到对应的测试结果文件中。(10)软件安全性报告。输出各测试结果文件中的攻击代码,报告用户待检测程序中潜在的代码复用威胁以及各类攻击行为在待检测程序中实现的可能,有效检测软件存在的安全隐患。本专利技术的有益效果是,在判断代码片段是否属于特定基本功能时采用语义求解器求解的方法,避免人工分析复杂指令序列,可以收集到人工无法收集到的代码片段,提高了基本功能代码片段收集的数量。在攻击代码生成阶段,引入副作用代码片段并给出消除副作用策略消除其副作用,提高了攻击代码生成成功率。定义的攻击模板涵盖了多种攻击行为,从多方面检测软件存在的针对代码复用攻击的安全隐患。相较于以往的技术,本专利技术能更为精确地检测出软件中存在的代码复用编程类的安全隐患,以便通过改进编程提高软件安全质量。【附图说明】图1针对代码复用编程的软件安全性检测流程图;图2返回指令搜索流程图;图3字节序列反汇编流程图;图4基本功能代码片段收集流程图;图5代码片段分配流程图;图6攻击代码生成流程图;图7副作用判断流程图;图8定义-使用链收集流程图;图9副作用消除流程图;图10攻击代码记录流程图;图11软件安全性报告流程图。具体实施方法图1为本软件安全性检测方法的总体流程图。本方法的输入是待检测程序,输出是待检测程序中潜在的可被攻击者利用的攻击代码。首先在待检测程序的可执行段中收集各基本功能的代码片段;然后根据预定义的攻击模板组合收集到的各基本功能代码片段,生成攻击代码;由于在攻击代码生成过程中加入副作用代码片段,所以在攻击代码生成后需要对攻击代码中副作用代码片段采用副作用消除策略进行副作用消除;如果攻击代码中代码片段副作用消除成功,则该攻击代码可用,记录到对应的测试结果文件中;最后输出各测试结果文件中的攻击代码,报告用户待检测程序中存在的复用代码编程安全隐患。图2为返回指令搜索的流程图,搜索待检测程序的可执行段中存在的返回指令。使用如下数据结构:ELF文件头数据结构,描述整个文件的基本属性,其中成员变量程序头表偏移是程序头表在文件中的偏移值;程序头表,以数组形式存储程序头数据结构;程序头数据结构,描述程序各个段信息,包含权限属性(可读、可写和可执行)、程序头偏移和程序头大小等成员变量。步骤20为初始动作。步骤21从程序ELF文件头中获取程序头表偏移。步骤22从程序头表中按顺序取程序头为当前程序头。步骤23判断当前程序头是否是可执行段,即程序头结构体中权限属性是否等于可执行。如果是,跳转到步骤24 ;否则跳转到步骤22。步骤24将当前程序头中的程序头偏移赋值给可执行段起始偏移,将程序头偏移和程序头大小的和赋值给可执行段结束偏移。步骤25设置指针初始化为可执行段的起始偏移。步骤26判断指针指向的字节是否是返回指令。如果是,跳转到步骤27;否则跳转到步骤28。步骤27对返回指令之前的本文档来自技高网...
一种<a href="http://www.xjishu.com/zhuanli/55/CN105138914.html" title="一种针对代码复用编程的软件安全性检测方法原文来自X技术">针对代码复用编程的软件安全性检测方法</a>

【技术保护点】
一种针对代码复用编程的软件安全性检测方法,其特征是包括指令序列反汇编、收集基本功能代码片段、攻击代码生成、攻击代码记录和软件安全性报告五个阶段;指令序列反汇编阶段,对返回指令之前的字节序列进行反汇编;基本功能代码片段收集阶段,其输入为上一阶段收集的指令序列;判断指令序列是否属于某种基本功能,对于属于基本功能的指令序列,将其作为该基本功能的代码片段进行收集;攻击代码生成阶段,按照预定义的攻击模板组合各基本功能的代码片段,生成攻击代码,对于攻击代码中包含副作用的代码片段,采用副作用消除策略消除其副作用,确保攻击代码功能的正常实现;攻击代码记录阶段,将成功消除副作用的攻击代码记录到相应的测试结果文件中;软件安全性报告阶段,输出各测试结果文件中记录的攻击代码,报告用户待检测程序中潜在的可实现各种攻击行为的复用代码即攻击代码,以评价软件潜在的安全隐患;关键操作如下:(1)返回指令的搜索,在待检测程序的可执行段中搜索存在的返回指令;(2)字节序列反汇编,对返回指令之前的字节序列进行逆向反汇编,直到反汇编完成;反汇编结果为多个指令序列;(3)基本功能代码片段收集,预定义多种基本功能;对于收集到的指令序列,采用语义求解器求解验证其是否属于某种基本功能;如果属于,将指令序列作为该基本功能的代码片段收集,每个基本功能对应一个代码片段集;(4)代码片段分配;预定义多种攻击模板,攻击模板由基本功能语句构成,每条基本功能语句存在相应的基本功能代码片段集;遍历各个攻击模板,对于攻击模板中的每条基本功能语句,从对应的基本功能代码片段集中搜索操作数匹配的代码片段;每条基本功能语句对应多个匹配的代码片段,这些代码片段组成该基本功能语句的分配代码片段集;(5)攻击代码生成;遍历攻击模板中的各条基本功能语句,从每条基本功能语句的分配代码片段集中选择一个代码片段。这些选择的代码片段的每种组合,构成一个攻击代码。由于每条基本功能语句的分配代码片段集中包含多个代码片段,所以攻击代码存在多种代码片段组合方式,即每个攻击模板可生成多个攻击代码。其中,要使用副作用判断、定义‑使用链收集、副作用消除和攻击代码记录等操作;(6)副作用判断;遍历攻击代码中的代码片段,通过定义‑使用链判断各代码片段是否带有副作用;(7)定义‑使用链收集;分析攻击代码中各代码片段之间的数据流,收集攻击代码中存在的定义‑使用链;(8)副作用消除;针对攻击代码中存在的副作用代码片段,采用引入基本功能的代码片段对其副作用进行消除,从而保证攻击代码正常执行;(9)攻击代码记录;将成功消除副作用的攻击代码的详细信息记录到对应的测试结果文件中。(10)软件安全性报告;输出各测试结果文件中的攻击代码,报告用户待检测程序中潜在的代码复用威胁以及各类攻击行为在待检测程序中实现的可能,有效检测软件存在的安全隐患。...

【技术特征摘要】

【专利技术属性】
技术研发人员:曾庆凯朱晨晖
申请(专利权)人:南京大学
类型:发明
国别省市:江苏;32

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

1