[发明专利]一种防止堆栈溢出攻击的保护方法及系统在审
申请号: | 202110228765.0 | 申请日: | 2021-03-02 |
公开(公告)号: | CN112948818A | 公开(公告)日: | 2021-06-11 |
发明(设计)人: | 朱黎;刘远;郭镔 | 申请(专利权)人: | 北京明略昭辉科技有限公司 |
主分类号: | G06F21/52 | 分类号: | G06F21/52;G06F9/448 |
代理公司: | 青岛清泰联信知识产权代理有限公司 37256 | 代理人: | 赵燕 |
地址: | 100089 北京市海淀区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 防止 堆栈 溢出 攻击 保护 方法 系统 | ||
本申请公开了一种防止堆栈溢出攻击的保护方法及系统,方法包括:构造canary值步骤:发生函数调用时,构造任一canary值;插入步骤:在被调用的子函数栈空间插入所述canary值进行数据填充;记录步骤:在被调用的子函数的前后各添加一代码,通过两个所述代码分别计算所述canary值和返回值的异或结果;比较步骤:对比两个所述canary值和返回值的异或结果;输出步骤:若所述异或结果相等,所述函数正常跳转并将跳转结果返回;若所述异或结果不相等,则阻止程序的跳转。本发明在尽可能小的运算量下,能够检测到绕过canary值直接修改返回地址的攻击行为。
技术领域
本发明属于防止堆栈溢出攻击的保护领域,具体涉及一种防止堆栈溢出攻击的保护方法及系统。
背景技术
现代操作系统中,应用程序往往难以做到极尽完善,再加上编程语言的局限性,导致各种各样程序漏洞的出现。以堆栈溢出为代表的缓冲区溢出攻击已经成为最普遍的安全漏洞。利用它可以破坏程序正常执行流程,更严重的是它能使攻击者通过普通用户获取系统权限从而进行对敏感数据的非法操作,对系统环境造成极大的威胁。攻击者在利用堆栈溢出漏洞时,通常会破坏当前的函数栈。例如,最常见的一种攻击方式是攻击者利用strcpy()函数不检查字符数组是否越界的特点来进行地址的覆盖,攻击者在程序代码的字符数组中写入超过数组长度的数据,直到函数栈中返回地址被覆盖,使得该函数在返回时跳转到填入的恶意代码处执行。为了尽可能避免缓冲区溢出漏洞被攻击者利用,如今编译器已经在编译层面对堆栈进行保护。
编译保护技术通过编译器对函数返回地址进行保护,发现返回地址被篡改之后,阻止函数执行流程改变。如图1所示,当发生函数调用时,会在子函数栈空间中插入一个canary word的数据填充,由于栈溢出方向是从低地址到高地址,因此在返回地址被溢出之前,该canary值首先会被覆盖,通过检测这个canary word是否改变来检测函数栈是否被破坏。常见的canary word有如下几种:
第一种是固定值填充,一个canary word通常包含NULL(0x00),CR(0x0d),LF(0x0a)这样的字符。由于绝大多数溢出攻击漏洞都是由于字符串处理函数不做数组越界检查引起的,而这些字符串都是以NULL作为结尾,使用这样的canary填充可以使字符串处理函数结束复制,从而防止溢出攻击。
第二种是随机值填充,canary值是在程序初始化时随机产生的,然后这个值被保存到一个未被映射到虚拟地址空间的内存页中,当攻击者试图通过指针访问保存随机数的内存时就会引发段错误。
第三种是通过一个随机数和函数栈中所有控制信息,返回地址通过异或运算得到canary word。
现有技术存在如下缺点:第一种生成canary值的方法采用固定字符填充容易被攻击者查出canary word的位置,如果跳过该填充区域直接修改其后的数据,会导致该保护方式无效;第二种生成canary值的方法会产生一个随机数填充,但这个随机数会保存在函数栈中,攻击者仍有机会获取该函数的值;第三种采用计算一个随机数和函数栈中所有控制信息,返回地址值的方法,虽然可以检测到所有控制信息,返回地址的修改,但涉及的运算量多,消耗较大。
发明内容
为解决上述技术问题本申请实施例提供了一种防止堆栈溢出攻击的保护方法及系统。一种防止堆栈溢出攻击的保护方法,其中,包括:
构造canary值步骤:发生函数调用时,构造任一canary值;
插入步骤:在被调用的子函数栈空间插入所述canary值进行数据填充;
记录步骤:在被调用的子函数的前后各添加一代码,通过两个所述代码分别计算所述canary值和返回值的异或结果;
比较步骤:对比两个所述canary值和返回值的异或结果;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京明略昭辉科技有限公司,未经北京明略昭辉科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110228765.0/2.html,转载请声明来源钻瓜专利网。