一种基于硬件的缓冲区溢出攻击检测方法与流程

文档序号:11387074阅读:562来源:国知局
一种基于硬件的缓冲区溢出攻击检测方法与流程

本发明涉及一种基于硬件的缓冲区溢出攻击检测方法,它是一种利用硬件安全模块实时检测嵌入式处理器运行过程中受到的缓冲区溢出攻击的一种方法,属于嵌入式处理器保护技术领域。本发明尤其可以被用于提高嵌入式处理器自我保护能力,保证嵌入式处理器运行过程的稳定性和安全性,增强嵌入式系统的整体可靠性。



背景技术:

随着科学技术的不断发展和创新,嵌入式系统的硬件复杂度和性能不断提高,得到了广泛的应用,从大型运输工具、工业设备到家用电器、个人便携式设备,嵌入式系统在我们的社会生活中扮演了越来越重要的角色。并且,随着家庭网络和无线网络(homerf,bluetooth,无线以太网,移动互联网等)的逐渐流行,使得网络也变得越来越普及,具有移动特性的嵌入式系统日趋普及。随着嵌入式系统应用越来越广泛,随之表现出来的安全问题也日益严重,针对嵌入式系统的恶意攻击逐渐流行和蔓延开来,涉及政府机构、军事部门、科研院校、金融商业系统,严重干扰了人们的日常生活,侵犯了公民隐私,造成巨大的经济损失,甚至威胁到国防安全。因此,对嵌入式系统系统的安全性和可靠性都提出了越来越高的要求。

在所有针对嵌入式系统的攻击中,缓冲区溢出攻击被认为是头号公敌。它的攻击手段主要包括栈溢出、堆溢出、悬挂指针引用、格式化字符串漏洞和整数错误等。根据提供的近几年的统计数据,利用缓冲区溢出实施的攻击事件占所有系统攻击事件的50%以上。缓冲区溢出攻击的危害性很大,它可以使程序运行失败、系统死机,还可能被攻击者利用造成拒绝服务攻击,或利用它执行非授权指令,进行各种非法操作。为了有效检测和防御缓冲区溢出攻击,传统是利用软件去检测和防御,存在防御不全面,检测速度慢,检测不够全面等问题,本发明提出了一种使用与嵌入式处理器并行的硬件模块,在处理器运行期间实时检测缓冲区溢出攻击的方法,有效的保证了嵌入式系统运行的安全性。本发明是基于openrisc的处理器,经过一些修改,可应用于其他嵌入式处理器。



技术实现要素:

1、目的:

本发明的目的是提供一种基于硬件的缓冲区溢出攻击检测方法,它是在嵌入式处理器的运行过程中,使用硬件安全模块实时监测嵌入式处理器的多个寄存器,对比静态模型和动态模型,分析并正确检测出是否受到缓冲区溢出攻击,保证嵌入式系统的安全可靠运行。

2、技术方案:

见图1,本发明为一种基于硬件的缓冲区溢出攻击检测方法,该方法具体步骤如下:

步骤一:数据准备

在程序的交叉编译链接阶段,将程序分成多个以跳转指令为起始的代码段作为基本块,使用编译器和安全标签分析软件对基本块生成安全标签(以下称为静态标签),建立程序的静态模型,得到程序的相关信息,称为静态数据。

步骤二:系统准备

将编译好的程序和静态数据一起下载到嵌入式系统(以下称为目标系统)的存储器件中,目标系统内包含了嵌入式处理器,硬件安全模块,以及相关的外围器件(包含存储器件)组成一个完整可运行的soc系统。

步骤三:系统运行

目标系统开始运行,存储器件中的数据随着嵌入式处理器的程序运行被读取,得到静态标签,生成静态模型,同时,硬件安全模块实时监控嵌入式处理器的指令取指(if),数据读(load)和写(store)操作以及相关的多个寄存器,动态生成安全标签(以下称为动态标签),建立动态模型。

步骤四:系统检测及告警

硬件安全模块强制执行预先设定的安全策略,通过对比静态标签和动态标签,结合静态模型和动态模型,分析并正确检测出是否受到缓冲区溢出攻击,一旦发现非法操作,则发送中断信号,触发嵌入式处理器应急响应机制,嵌入式处理器可以根据情况做出判断,是否中止系统运行或者发出告警并恢复。否则继续步骤三。

其中,本发明的一种基于硬件的缓冲区溢出攻击检测模块的结构主要包括五个部分,控制模块,静态模型模块,动态模型模块,运算分析模块和存储器模块:

控制模块:负责向其它模块发出控制信号,使各个模块配合工作;

静态模型模块:接收控制模块的控制信号,读取存储器模块的数据,建立

静态模型;

动态模型模块:接收控制模块的控制信号,监控嵌入式处理器,生成动态标签,建立动态模型;

运算分析模块:接收控制模块的控制信号,从静态模型模块和动态模型模块读取数据,进行分析比较并反馈结果给控制模块;

存储器模块:接收控制模块的控制信号,读取存储器件的数据,解密生成静态标签。

3.优点

本发明可以通过硬件模块实时检测缓冲区溢出攻击,解决了嵌入式系统的安全问题。本发明具备以下几个优点:

(1)本发明采用了静态模型和动态模型互相对比,大大提高了检测精度,保证了攻击检测的准确性;

(2)本发明包含一个硬件安全模块,与处理器并行运行,不占用处理器计算能力,有效的提高了检测的速度,同时对嵌入式系统的影响也是最小的;

(3)本发明所涉及的硬件安全模块,采用了标准ip核设计,为后继的维护和移植提供了方便;

(4)本发明所涉及的硬件结构具有良好的可扩展性和更新能力,通过简单更改相关系统参数的数值就可以应用于其它类型的嵌入式系统中。

附图说明

图1是本发明技术涉及的方法流程图。

图2是本发明核心硬件整体结构图。

具体实施方式

本发明的核心硬件部分如图2所示,该部分需要完成静态模型的读取、解密和建立,动态模型的建立,静态动态模型的运算、分析、比较和攻击判断功能。整体核心硬件模块的结构主要包括五个部分,控制模块,静态模型模块,动态模型模块,运算分析模块和存储器模块:

1.控制模块:负责向其它模块发出控制信号,使各个模块配合工作;

2.静态模型模块:接收控制模块的控制信号,读取存储器模块的数据,建立静态模型;

3.动态模型模块:接收控制模块的控制信号,监控嵌入式处理器,生成动态标签,建立动态模型;

4.运算分析模块:接收控制模块的控制信号,从静态模型模块和动态模型模块读取数据,进行分析比较并反馈结果给控制模块;

5.存储器模块:接收控制模块的控制信号,读取存储器件的数据,解密生成静态标签。

在具体实施过程中,包含一个状态机的控制模块控制其他各模块的循环调用,融合各个模块完成不同功能并互相通信,最终调用运算分析模块判断出系统是否受到缓冲区溢出攻击,若受到攻击,则给出告警信号,算法终止;若未受攻击,则继续运行。

安全策略设计:

一、代码段是程序运行的核心,代码段的攻击主要有:

1.代码段被篡改;

2.缓冲区溢出,程序跳转到攻击者植入的代码段执行。

二、本发明主要针对缓冲区溢出攻击,因此,我们设定缓冲区溢出保护的安全策略如下:

1、确保代码段的完整性;

2、确保执行的指令都是从可执行的内存段获取的;

3、跳转指令的目标在可执行的内存段内。

攻击判断的算法是本发明提出的方法的核心部分,有以下几个步骤。

步骤一:静态标签数据提取:数据准备阶段,应用程序的各个段的起始地址及深度在交叉编译阶段就可以被完全确定,通过对应用程序反汇编,我们可以得到相应的段参数。size代表段的深度,vma代表段的起始地址,因此可以确定应用程序的每个段的确切位置,完成每个段的安全标签的静态提取,并通过安全算法得到静态标签数据,进一步分析得到应用程序的静态模型,生成应用程序专用的静态数据文件。

步骤二、静态数据文件下载:系统准备阶段,使用jtag软件将静态数据文件下载到目标系统的存储器件。在本专利中,是一个与处理器独立的外部存储器件,该器件与处理器和静态模型模块以通用总线相连。系统运行时,存储器件与处理器的总线连接是关闭的,从外部无法直接访问,从而能有效的避免物理攻击行为的发生。

步骤三、数据生成:系统运行阶段,静态标签模块从存储器模块读取数据,通过安全算法解密数据得到静态标签,建立静态模型。动态模型模块通过总线获取嵌入式处理器的指令取指(if),数据读(load)和写(store)操作以及相关的多个寄存器,通过安全算法生成动态标签,建立动态模型。

步骤四、攻击检测:系统检测及告警阶段,运算分析模块主要完成两个作用。一是对比动态标签和静态标签,对比动态模型和静态模型;二是判断是否执行了预期的安全策略。当检测到一次取指令操作时候,根据当前的安全标签值判断当前指令是否是在可执行内存段取得。如果发现动态标签值与静态标签值不一致,再进一步判断当前指令地址是否在可执行的内存段,则可正确判断出系统是否受到缓冲区溢出攻击,并根据判断结果发出相应的报警信号,触发嵌入式处理器应急响应。

算法的结束与否取决于攻击判断模块。若该模块检测到系统受到攻击,则给出报警信号,算法终止;若未受攻击,则由控制模块继续控制各个模块依次运行。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1