【技术实现步骤摘要】
本专利技术涉及一种程序在遭受内存篡改攻击的检测和漏洞定位的方法和工具,特别 是在没有源代码的二进制级别基础上,通过对二进制程序进行运行时的动态分析和跟 踪来检测程序内存篡改攻击并定位漏洞位置的基于二进制的内存篡改攻击的检测和漏 洞定位系统。
技术介绍
目前,大多数的网络攻击以及蠕虫病毒都是由内存相关的程序漏洞所导致的,内 存漏洞能够导致,攻击者通过恶意输入对内存进行任意读写操作,从而控制程序行为, 甚至获取系统root权限。许多漏洞仅仅存在于那些采用不安全语言(例如C/C++)编 写的程序中。在C语言中,由于不存在强类型检查和缓冲区边界检査,程序中就可能 存在内存相关的漏洞。缓冲区溢出、堆篡改和格式化字符串是三种常见的内存漏洞。 缓冲区溢出是由对缓冲区进行读写时没有进行边界检查导致的;堆篡改是由于堆 的管理数据结构被破坏所导致;格式化字符串则是源于对标准输入输出函数不规范的 使用。许多研究人员都提出了针对此类安全问题的检测和防范方法,但是,这些方法通 常只关注攻击检测和攻击过滤,而没有找到程序漏洞所在的位置,这对于程序员进行 漏洞程序的彻底修复并没有实质的帮助。目前,专门针对内存漏洞定位方面的工作并不多。几个跟漏洞定位相关的工作都 至少存在如下中的某个缺点(1)实现细节过于复杂;(2)存在固有的不精确性;(3) 效率低下;(4)没有对库函数做特殊的处理。
技术实现思路
专利技术目的本专利技术针对现有技术的不足,提供了一种基于二进制的内存篡改攻击 的检测和漏洞定位系统。技术方案本专利技术公开了一种基于二进制的内存篡改攻击的检测和漏洞定位系统, 包括以下部分 ...
【技术保护点】
一种基于二进制的内存篡改攻击的检测和漏洞定位系统,其特征在于,包括以下部分:代码转换单元(20)、基本块数据依赖关系记录单元(21)、代码插入单元(22)以及漏洞定位单元(23); 所述代码转换单元(20)用于将二进制级别的代码转换成 Valgrind中间代码形式VEX; 所述基本块数据依赖关系记录单元(21),用于记录基本块内数据之间的相互依赖关系,为漏洞定位单元(23)中定位被篡改的内存地址部分提供数据依赖信息; 所述代码插入单元(22)包括颜色传播代码插 入部分(221)、攻击检测代码插入部分(222)和内存污染指令记录代码插入部分(223); 其中,颜色代码插入部分(221)用于实现动态染色分析功能;攻击检测代码插入部分(222)用于检测内存数据的异常;内存污染指令记录代码插入部分( 223)用于记录污染内存的写指令; 所述漏洞定位单元(23)包括被篡改的内存地址定位部分(231)和篡改该内存的指令定位部分(232); 其中,被篡改的内存地址定位部分(231)通过基本块内数据依赖关系记录单元(21)所记录的信 息找 ...
【技术特征摘要】
1、一种基于二进制的内存篡改攻击的检测和漏洞定位系统,其特征在于,包括以下部分代码转换单元(20)、基本块数据依赖关系记录单元(21)、代码插入单元(22)以及漏洞定位单元(23);所述代码转换单元(20)用于将二进制级别的代码转换成Valgrind中间代码形式VEX;所述基本块数据依赖关系记录单元(21),用于记录基本块内数据之间的相互依赖关系,为漏洞定位单元(23)中定位被篡改的内存地址部分提供数据依赖信息;所述代码插入单元(22)包括颜色传播代码插入部分(221)、攻击检测代码插入部分(222)和内存污染指令记录代码插入部分(223);其中,颜色代码插入部分(221)用于实现动态染色分析功能;攻击检测代码插入部分(222)用于检测内存数据的异常;内存污染指令记录代码插入部分(223)用于记录污染内存的写指令;所述漏洞定位单元(23)包括被篡改的内存地址定位部分(231)和篡改该内存的指令定位部分(232);其中,被篡改的内存地址定位部分(231)通过基本块内数据依赖关系记录单元(21)所记录的信息找到被外部输入篡改的内存地址;篡改该内存的指令定位部分(232)通过内存污染指令记录代码插入部分(223)所记录的信息找到篡改该内存的写指令的地址,即完成最终的定位。2、 根据权利要求l所述的基于二进制的内存篡改攻击的检测和漏洞定位系统,其 特征在于,所述基本块数据依赖关系记录单元(21)包括以下步骤步骤S100,在Valgrind生成的中间代码VEX中判断语句类型,若语句为临时变量 写语句,则跳到步骤S200;若语句为寄存器写语句,则跳到步骤S300;否则,瑕fe到步 骤S1100;步骤S200,判断临时变量写语句中源表达式的类型,若表达式为内存读取操作, 则跳到步骤S400;若语句为寄存器读取操作,则跳到步骤S500;否则,跳到步骤S800;步骤S300,判断寄存器写语句中源表达式的类型,若表达式为临时变量读取操作, 跳到步骤S600;否则,跳到步骤S1100;步骤S400,判断内存读取表达式中源内存是否被污染,若是,跳到步骤S700;否 则跳到步骤S1100;步骤S500,判断寄存器读取表达式中源寄存器是否被污染,若是,跳到步骤S900; 否则跳到步骤S1100;步骤S600,判断临时变量读取表达式中临时变量是否被污染,若是,跳到步骤S1000;否则跳到步骤S1100;步骤S700,记录被外部输入污染的内存的地址和目标临时变量,跳到步骤S1100; 步骤S800,记录源临时变量和目的临时变量之间的依赖关系,跳到步骤S1100; 步骤S900,通过记录的依赖关系找到污染源寄存器的内存地址,并记录该内存地址与目的临时变量,跳到步骤S1100;步骤SIOOO,通过记录的依赖关系找到污染源临时变量的内存地址,并记录该内存地址与目的寄存器,...
【专利技术属性】
技术研发人员:茅兵,谢立,房陈,
申请(专利权)人:南京大学,
类型:发明
国别省市:84[中国|南京]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。