控制流完整性检测方法、装置及系统制造方法及图纸

技术编号:22387797 阅读:57 留言:0更新日期:2019-10-29 06:38
本申请提供一种控制流完整性检测系统以及方法,该检测系统包括存储器以及检测模块,在执行子程序时,存储器接收第一返回地址以及与第一返回地址对应的第一标签,将第一标签存储到应用软件不能读写的第一存储区域中第一地址对应的区域;在子程序执行完时,检测模块可以接收来自第一存储区域中第一地址对应的区域的第二标签,并验证第二标签的值是否与预设值相等,当第二标签的值与预设值不等时,表示第一返回地址被修改,检测模块生成告警信号。通过增加应用软件不可读写的标签,并在子程序执行完时,验证执行子程序时与返回地址一起存储的标签的值是否与预设值相等,能够确定控制流是否被劫持,保护控制流完整性。

Control flow integrity detection method, device and system

【技术实现步骤摘要】
控制流完整性检测方法、装置及系统
本专利技术涉及计算机领域,尤其涉及一种控制流完整性检测方法、装置及系统。
技术介绍
控制流劫持是一种能够改变程序正常执行流程的攻击方式,由于程序普遍存在缓冲区溢出等漏洞,攻击者可以通过栈溢出等漏洞改写程序中的返回地址,劫持控制流并破坏控制流完整性(controlflowintegrity,CFI),实现攻击的意图。目前,为了抵御劫持控制流的攻击,主要的防御机制是监视程序运行时的控制流,若控制流被改变,则说明程序运行时受到攻击,此时会终止程序并进行警告。
技术实现思路
本专利技术实施例公开了一种控制流完整性检测方法、装置及系统,通过增加应用软件不可读写的比特位传输和存储标签,并验证调用子程序时以及子程序执行完时标签是否相同,从而能够确定控制流是否被劫持,保护控制流完整性。第一方面,本申请提供一种控制流完整性检测系统,所述检测系统包括随机存取存储器RAM以及检测模块,其中,所述RAM,用于接收第一返回地址和与所述第一返回地址对应的第一标签,将所述第一标签与所述第一返回地址分别存储到所述RAM中第一存储区域中第一地址对应的区域和第二存储区域中第二地址对应的区域,其中,所述第一存储区域的访问权限为应用软件不可读写;所述检测模块,用于:接收第二标签,其中,所述第二标签来自所述第一存储区域中所述第一地址对应的区域;验证所述第二标签的值是否等于预设值;当所述第二标签的值不等于预设值时,所述检测模块生成告警信号。通过将第一返回地址对应的第一标签以及第一返回地址分别存储到存储器第一存储区域中第一地址对应的区域和第二存储区域中第二地址对应的区域,其中,第一标签的值是预设值中的任意一个。当第一返回地址被攻击者用应用软件修改时,对应的第一标签会被硬件修改为非预设值,在寄存器等其它模块需要获取第一返回地址,从存储第一返回地址与第一标签的存储区域读取第一返回地址与第一标签时,检测模块会接收到来自第一存储区域中第一地址对应的区域的第二标签,并验证第二标签的值是否与预设值相等,若不等,则表示与第一标签对应的第一返回地址被修改,控制流完整性被破坏,实现对控制流完整性的检测。在一种可能的实现方式中,所述存储器还用于:所述存储器还用于:在确定所述第一返回地址被更新时,更新存储于所述第一存储区域中第一地址对应的区域的第一标签,其中,更新后的第一标签的值不等于所述预设值。在将第一标签存储到第一存储区域中第一地址对应的区域中以及将第一返回地址存储第二存储区域中第二地址对应的区域中之后,若所述存储器接收到不包括标签的数据,且该数据用于更新第一返回地址时,存储器中的硬件电路会生成一个标签以更新存储于第一存储区域中第一地址对应的区域中的第一标签,并且由存储器中的硬件电路生成的标签的值与预设值不相同,从而使检测模块在获取到来自第一存储区域中第一地址对应的区域中的标签之后,若该标签的值与预设值不同,则表示第一地址被修改过。在一种具体的实现方式中,所述系统还包括:第一寄存器,用于将所述第一返回地址和所述第一标签发送给所述RAM;第二寄存器,用于生成所述第一标签,并向所述第一寄存器发送所述第一标签以及所述第一返回地址。当第一返回地址被攻击者用应用软件修改时,对应的第一标签会被硬件修改为非预设值,在第二寄存器输出第一返回地址时,通过第二寄存器中的硬件电路生成第一标签,从而使第一标签不能被应用软件读写。能够防止第一标签与第一返回地址在存储到存储器中之后,攻击者在通过应用软件修改第一返回地址时,通过应用软件将第一存储区域中第一地址对应的区域中的标签值改为预设标签的值。在一种具体的实现方式中,所述系统还包括:第一寄存器,用于将所述第一返回地址和所述第一标签发送给所述RAM;第二寄存器,用于将所述第一返回地址发送给标签生成模块;所述标签生成模块,用于在接收到所述第一返回地址之后,生成所述第一标签,并向所述第一寄存器发送所述第一标签和所述第一返回地址。通过增加标签生成模块,标签生成模块在接收到第二寄存器输出的第一返回地址时,生成第一标签,然后将向第一寄存器发送第一标签与第一返回地址,并由第一寄存器发送给所述存储器进行存储。在一种具体的实现方式中,所述第一寄存器,还用于接收所述第二标签与第二返回地址,其中,所述第二返回地址来自所述第二存储区域中第二地址对应的区域;在验证所述第二标签的值是否等于预设值之前,所述检测模块还用于:在所述第一寄存器接收所述第二标签和所述第二返回地址时,接收所述RAM发送的所述第二标签;或者,在所述第一寄存器接收所述第二标签和所述第二返回地址之后,接收所述第一寄存器发送的所述第二标签。上述检测模块可以设置于第一寄存器输入端或者第一寄存器的输出端,在检测模块设置于第一寄存器的输入端时,在第一寄存器接收来自存储器的第二返回地址与第二标签时,检测模块通过接收存储器发送的第二标签并进行验证;在检测模块设置于第一寄存器的输出端时,第一寄存器在接收到第二返回地址与第二标签之后,检测模块通过接收第一寄存器发送的标签并进行验证。在一种具体的实现方式中,所述第一寄存器是连接寄存器,所述第二寄存器是程序计数器寄存器。在一种具体的实现方式中,所述检测模块还用于:当所述第一寄存器接收来自所述第二寄存器或者所述标签生成模块的所述第一标签和所述第一返回地址时,所述检测模块接收所述第一标签,对所述第一标签进行验证;在所述第一标签等于预设值的情况下,所述第一寄存器将所述第一返回地址与所述第一标签发送给所述RAM。由于检测模块并不能识别接收到的标签来自于哪一个寄存器,因此在第二寄存器或者标签生成模块在生成第一标签之后,第一寄存器接收来自第二寄存器或者标签生成模块的第一标签与第一返回地址时,检测模块同样会接收到第一标签,并对第一标签进行验证,在第一标签的值等于预设值的情况下,第一寄存器才会将第一返回地址与所述第一标签发送给所述存储器。本申请提供的控制流完整性检测系统,通过增加比特位,设置新增的比特位的访问权限为应用软件不可读写,采用硬件生成标签并采用新增的比特位传输和存储所述标签,从而能够防止攻击者修改标签的值,然后在子程序调用时,将标签值与返回地址一起存储,由于标签值不能被软件修改,攻击者在对RAM中的返回地址进行攻击时不能将标签同时修改为正确的标签值,从而能够使检测模块在子程序执行完之后获取到所述标签时,能够验证来自RAM中的标签是否与预设的标签相同,并在不同的情况下确定控制流被劫持,进而产生告警信息。第二方面,本申请实施例提供一种控制流完整性检测方法,所述方法应用于处理器,所述处理器包括检测模块和第一寄存器,所述处理器与随机存取存储器RAM连接,所述方法包括:所述第一寄存器将第一返回地址和与所述第一返回地址对应的第一标签发送给所述RAM,其中,所述第一标签与所述第一返回地址分别存储到所述RAM中第一存储区域中第一地址对应的区域和第二存储区域中第二地址对应的区域,所述第一存储区域的访问权限为应用软件不可读写;所述检测模块接收第二标签,其中,所述第二标签来自所述第一存储区域中第一地址对应的区域;所述检测模块验证所述第二标签的值是否等于预设值,当所述第二标签的值不等于预设值时,所述检测模块生成告警信号。在一种具体的实现方式中,所述处理器还包括第二寄本文档来自技高网...

【技术保护点】
1.一种控制流完整性检测系统,其特征在于,所述检测系统包括存储器以及检测模块,其中,所述存储器,用于接收第一返回地址和与所述第一返回地址对应的第一标签,将所述第一标签与所述第一返回地址分别存储到所述存储器中第一存储区域中第一地址对应的区域和第二存储区域中第二地址对应的区域,其中,所述第一存储区域的访问权限为应用软件不可读写;所述检测模块,用于:接收第二标签,其中,所述第二标签来自所述第一存储区域中所述第一地址对应的区域;验证所述第二标签的值是否等于预设值;当所述第二标签的值不等于预设值时,所述检测模块生成告警信号。

【技术特征摘要】
1.一种控制流完整性检测系统,其特征在于,所述检测系统包括存储器以及检测模块,其中,所述存储器,用于接收第一返回地址和与所述第一返回地址对应的第一标签,将所述第一标签与所述第一返回地址分别存储到所述存储器中第一存储区域中第一地址对应的区域和第二存储区域中第二地址对应的区域,其中,所述第一存储区域的访问权限为应用软件不可读写;所述检测模块,用于:接收第二标签,其中,所述第二标签来自所述第一存储区域中所述第一地址对应的区域;验证所述第二标签的值是否等于预设值;当所述第二标签的值不等于预设值时,所述检测模块生成告警信号。2.根据权利要求1所述的系统,其特征在于,所述存储器还用于:在确定所述第一返回地址被更新时,更新存储于所述第一存储区域中第一地址对应的区域的第一标签,其中,更新后的第一标签的值不等于所述预设值。3.根据权利要求1或2所述的系统,其特征在于,所述系统还包括:第一寄存器,用于将所述第一返回地址和所述第一标签发送给所述存储器;第二寄存器,用于生成所述第一标签,并向所述第一寄存器发送所述第一标签以及所述第一返回地址。4.根据权利要求1或2所述的系统,其特征在于,所述系统还包括:第一寄存器,用于将所述第一返回地址和所述第一标签发送给所述存储器;第二寄存器,用于将所述第一返回地址发送给标签生成模块;标签生成模块,用于在接收到所述第一返回地址之后,生成所述第一标签,并向所述第一寄存器发送所述第一标签和所述第一返回地址。5.根据权利要求3或4所述的系统,其特征在于,所述第一寄存器,还用于接收所述第二标签与第二返回地址,其中,所述第二返回地址来自所述第二存储区域中第二地址对应的区域;在验证所述第二标签的值是否等于预设值之前,所述检测模块还用于:在所述第一寄存器接收所述第二标签和所述第二返回地址时,接收所述存储器发送的所述第二标签;或者,在所述第一寄存器接收所述第二标签和所述第二返回地址之后,接收所述第一寄存器发送的所述第二标签。6.根据权利要求2-5任一项所述的系统,其特征在于,所述第一寄存器是连接寄存器,所述第二寄存器是程序计数器寄存器。7.一种控制流完整性检测方法,其特征在于,所述方法应用于处理器,所述处理器包括检测模块和第一寄存器,所述处理器与存储器连接,所述方法包括:所述第一寄存器将第一返回地址和与所述第一返回地址对应的第一标签发送给所述存储器,其中,所述第一标签与所述第一返回地址分别存储到所述存储器中第一存储区域中第一地址对应的区域和第二存储区域中第二地址对应的区域,所述第一存储区域的访问权限为应用软件不可读写;所述检测模块接收第二标签,其中,所述第二标签来自所述第一存储区域中第一地址对应的区域;所述检测模块验证所述第二标签的值是否等于预设值,当所述第二标签的值不等于预设值时,所述检测模块生成告警信号。8.根据权利要求7所述的方法,其特征在于,所述处理器还包括第二寄存器,所述方法还包括:在所述第一寄存器将第一返回地址和与所述第一返回地址对应的第一标签发送给所述存储器之前,所述第二寄存器生成所述第...

【专利技术属性】
技术研发人员:钱雅超章庆隆汤倩莹
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东,44

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

1