CN1564098A - 一种防止缓冲区溢出攻击的动态堆栈内存管理方法 - Google Patents
一种防止缓冲区溢出攻击的动态堆栈内存管理方法 Download PDFInfo
- Publication number
- CN1564098A CN1564098A CNA200410014600XA CN200410014600A CN1564098A CN 1564098 A CN1564098 A CN 1564098A CN A200410014600X A CNA200410014600X A CN A200410014600XA CN 200410014600 A CN200410014600 A CN 200410014600A CN 1564098 A CN1564098 A CN 1564098A
- Authority
- CN
- China
- Prior art keywords
- program
- return address
- memory management
- local variable
- management process
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000007726 management method Methods 0.000 title claims description 15
- 230000003139 buffering effect Effects 0.000 title 1
- 238000000034 method Methods 0.000 claims abstract description 31
- 230000008569 process Effects 0.000 claims description 17
- 238000005516 engineering process Methods 0.000 claims description 14
- 238000004458 analytical method Methods 0.000 claims description 6
- 241000287219 Serinus canaria Species 0.000 claims description 5
- 238000004590 computer program Methods 0.000 claims description 2
- 230000006870 function Effects 0.000 description 25
- 230000008859 change Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000007613 environmental effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 241000857902 Bursera graveolens Species 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Executing Machine-Instructions (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种防止缓冲区溢出攻击的动态堆栈内存管理方法。在计算机程序执行的时候,由于返回地址和局部变量之间的相对位置随机动态地改变,无法改写返回地址,从而可以有效地防止利用缓冲区溢出来对计算机系统进行攻击。本发明包括以下权利要求:动态堆栈内存管理方法,具有此动态堆栈内存管理特征的目标程序和能产生这种目标程序的编译器,具有此动态堆栈内存管理特征的内存设备(硬件设备或软件设备),具有此动态堆栈内存管理特征的计算机系统。
Description
一.技术领域
本发明涉及动态堆栈内存管理方法,防止缓冲区溢出是一种常见的对计算机系统进行攻击的方法。本发明提出了一种动态堆栈内存管理方法,它可以有效地阻止缓冲区溢出攻击。
二.技术背景
缓冲区是程序运行时候在计算机内存中存放数据的地方。当程序试图将一段数据写到某一段内存缓冲区中时,如果数据的长度超过缓冲区的长度,就会发生缓冲区溢出。攻击者可以利用这一弱点对计算机进行攻击(参见[1]E.Spafford.The Internet Worm Program:Analysis.Computer Communication Review,January 1989)。攻击者把一个超过缓冲区长度的字符串写入到缓冲区。由于写入的超长的字符串覆盖了相邻的存储单元,常常会导致两种结果。一是引起程序运行失败,严重的可导致系统崩溃;另外一种结果就是利用这种漏洞执行恶意指令。如果被攻击的程序在超级用户权限上执行,那么攻击者也可以获得系统超级用户的权限。结果是一个匿名的因特网攻击者往往有机会获得一台主机的部分或全部的控制权。缓冲区溢出攻击已经成为操作系统、数据库,万维网服务器等大型应用程序最普遍的漏洞之一。
现有的解决办法
针对上述的问题,目前为止已经存在多种解决办法。和本发明较为接近的主要有两种技术。一是美国IMMUNIX公司的StackGuard技术(参见[2]Crispin Cowan,Steve Beattie,RyarFinnin Day,Calton Pu,Perry Wagle,and Eric Walthinsen,Protecting systems from stacksmashing attacks with StackGuard.Linux Expo
http://www.cse.ogi.edu//~crispin/,May 1999),另一个是日本IBM研究院的Proplice技术(参见[3]Hiroaki Etoh,Gcc extension for protectingapplications from stack smashing attacks,
http://www.trl.ibm.com/projects/security/ssp,June2000)。这两种技术都是通过修改C语言的编译器,在生成的目标代码中附加上缓冲区溢出检测功能。其优点是在原来的程序在不需要任何的改动。拿StackGuard技术来说,为了探测是否有攻击者对返回地址进行攻击,当一个新的函数被调用时,它将一个″canary″值(一个单字)放到返回地址的前面。如果当函数返回时,发现这个canary的值被改变了,就证明可能有人正在试图进行缓冲区溢出攻击。程序会立刻响应,并将被攻击的进程的相关信息记录下来,然后终止被攻击的进程。日本IBM研究院的Proplice技术在借鉴了stackguard技术的基础上,重新安排了局部变量的顺序。这样当字符串变量被写入超长的字符串时,别的类型的局部变量的值不会遭到破坏,从而把攻击的危害减少到最小程度。
但是通过分析源程序或分析使用这两种技术编译后的目标程序,攻击者可以确定运行时堆栈具体结构。即攻击者通过分析代码可以确切获得返回地址和分配的局部变量之间的相对偏移。攻击者可以根据运行时候的堆栈结构来改变返回地址的值,但同时并不改变″canary″的值(参见[4]Bulba and Kil3r.Bypassing StackGuard and StackShield,Phrack Magazine56
http://www.phrack.org/phrack/56/p56-0x05,May 2000)。从而绕过stackguard技术和Proplice技术对返回地址的保护,有效地实行缓冲区攻击。
三.发明内容
本发明为了防止攻击者通过分析原程序或者分析编译后的目标程序,确定运行时堆栈结构,对计算机系统实行攻击,提出了一种新的堆栈内存管理方法。从而使攻击者无法准确确定返回地址的位置,无法通过改写返回地址来进行缓冲区溢出攻击。
本发明提出的动态内存管理方法是这样的:在计算机程序执行时,每次子过程被调用并分配当前过程的堆栈空间时,象正常情况一样保存调用参数,返回地址。但是保存帧指针和分配局部变量的时候,在帧指针和局部变量起始地址之间分配一段额外内存空间或者在返回地址和帧指针之间额外分配一段额外内存空间。此额外空间的大小在程序执行的时候随机决定。这样堆栈内存中返回地址和局部变量的相对位置无法通过分析源程序或编译后的目标程序得到,可以有效地防止利用堆栈缓冲区溢出来对计算机系统进行攻击。
在分配局部参数内存空间时,在帧指针和局部变量起始地址之间多分配一段内存空间或者在返回地址和帧指针之间多分配一段内存空间。这样局部变量和返回地址之间的相对偏移就增加了一段额外的长度;这段额外长度的具体大小在每次运行开始时通过产生一个随机数获得。
本发明方法中额外长度的内存缓冲区中也可以放入类似StackGuard技术中的″canary″值,从而检测出当前执行程序是否正在被攻击。
如图1所示,本技术在分配局部参数的内存空间的时候,会在基址寄存器和局部变量之间多分配一段内存空间。这样局部变量和返回地址之间的相对偏移就增加了一段额外的长度。为了保证攻击者无法通过分析原程序或编译后的目标程序来推测出这段额外长度,本技术要求这段额外长度在静态分析编译后的目标代码时是未知的。额外长度的具体大小在每次运行的时候通过产生一个随机数获得。因此即使是同一个程序,每次执行的时候这段额外长度的值都会不一样。
由于攻击者无法准确预测出局部变量和返回地址间的相对偏移,无法准确将返回地址的值改向自己的恶意攻击程序。从而很难实施有效地缓冲区溢出攻击。
本发明的额外长度由随机函数发生器子程序来实现。
利用本发明编译完成的计算机目标程序执行时具有上述特征。相应的编译器能产生上述特征的目标程序。
本发明的优点:
本发明提出的一种新的对返回地址进行保护的方法,它可以同时检测出当前执行程序是否正在被攻击并可以防止被攻击。它的特点是无法通过静态地分析源程序或目标程序来推测获得返回地址和分配的局部变量之间的相对偏移。由于产生的额外的长度是随机的,即使使用动态跟踪工具跟踪执行目标程序,也无法确定下次执行时返回地址和分配的局部变量之间的相对偏移。攻击者由于无法事先知道返回地址的准确位置,无法修改返回地址,从而有效地防止了攻击者利用堆栈缓冲区溢出进行攻击。
四、附图说明
图1传统程序运行时堆栈内存结构和使用本技术编译后的程序运行时堆栈内存结构(局部变量和返回地址之间增加了一段随即的长度)的示意图
图2普通的程序执行时的堆栈内存结构
图3使用缓冲区攻击后的程序执行时的堆栈内存结构
图4使用本发明后堆栈调用时的结构
图5一个C程序在启动保护功能前和启动保护功能后编译执行的结果
如图5所示:一个C程序在启动保护功能前和启动保护功能后编译执行后的结果。我们使用的编译器是公开原码的LINUX GCC。为了观察方便,在每次进入和退出子过程时打印出分配和释放的额外动态空间。在启动堆栈保护后,在程序每次启动执行时产生一个随机数。随机数的值每次执行时都不一样大。每次进入子过程时分配这段额外空间,而退出子过程时释放这段额外空间。当然在实际应用中额外空间的分配和释放都是在后台进行的,没有必要显示出来。
五、具体实施方式
上面是本发明的基本原理,可以有多种实现方式。比如可以使用特别的内存设备(包括软件设备和硬件设备)来实现。也可以使用特别的计算机系统来实现。也可以改写编译器来生成具有上述功能的目标程序。总之本原理精神范围内的各种各样的实现方式都应该包括进来。下面举出一个示例来具体说明使用本方法的程序的执行过程。
I.正常程序的执行过程
我们以图2为例来说明正常的程序执行流程。我们使用函数foo被函数bar调用的例子来加以说明。假设函数被调用时堆栈帧从高地址向低地址方向增长。图2中函数foo把环境变量ENV_STR的内容使用C语言的库函数getenv得到后,使用C语言的库函数strcpy拷贝到大小为128字节的字符串数组buffer中。foo被调用后,为了保存foo的动态执行环境,下面的信息被保存在堆栈中。
调用参数 |
返回地址 |
前堆栈帧指针 |
局部变量 |
我们下面使用SP来代表堆栈指针,使用FP来代表帧指针,使用RA来代表返回地址。
●函数foo被调用前
函数foo被调用前,堆栈指针(SP)指向堆栈帧的最底部,帧指针(FP)指向bar的前一堆栈帧的帧指针变量(FP)。从帧指针(FP)的下一个地址到堆栈指针(SP)之间存放了函数bar的局部变量。
●函数foo被调用后
首先在堆栈中保存了foo的调用参数,然后保存了返回bar的返回地址。然后保存了前一帧指针(FP)。最后分配了foo的局部参数。此时堆栈指针(SP)指向最下位。函数foo便可以开始执行了。
●函数foo执行后
函数foo执行终了后,按照上记的相反的顺序,堆栈指针(SP)和帧指针(FP)也回到了函数foo被调用前的值。然后返回到foo的返回地址RA指向的程序,继续执行bar部分的程序。
II.典型的缓冲区溢出攻击方式
函数foo的堆栈构造很容易从foo的源程序和编译后的目标程序中分析出来。然后按照分析的结果来对执行的程序进行攻击。我们以图3来对攻击过程进行说明。假设攻击者已经改写了环境变量,在字符串拷贝的时候,返回地址被ADDR_X给覆盖了,而局部变量的内容被恶意攻击代码覆盖了。并且ADDR_X指向这段攻击代码。比如函数foo被调用后,会执行strcpy。由于strcpy一般不会检查输入字符串的大小,这样从局部变量一直到RA返回地址部分都被改写。函数foo执行结束后,没有返回到bar程序中继续执行,而是返回到了那段恶意攻击代码处。这样恶意攻击程序就掌握了主动权并开始执行。而且由于前帧指针也被改写了,返回到bar时正确的帧指针也无法正确得到。这样可能会发生不可预测的执行错误。
III.利用动态堆栈内存管理技术来防止缓冲区溢出攻击
我们结合图4以函数foo被调用执行时候的堆栈构造过程为例来说明。首先目标程序象正常情况一样保存了调用参数,返回地址和帧指针,但是在分配局部变量的时候,本方法会动
III.利用动态堆栈内存管理技术来防止缓冲区溢出攻击
我们结合图4以函数foo被调用执行时候的堆栈构造过程为例来说明。首先目标程序象正常情况一样保存了调用参数,返回地址和帧指针,但是在分配局部变量的时候,本方法会动态地分配比正常的局部变量需要的空间更大的内存空间。比如在图4中分配大小为alpha空间。alpha的具体大小在运行的时候随机动态地决定。(这个大小为alpha的缓冲区也可以被用做它用)。
在增加alpha大小的缓冲区后,帧指针的值可以指向图中虚线,也可以指向图中实线的位置。程序将随之使用不同的办法来查找调用参数和局部变量。使用本发明的堆栈内存管理方法,即使是同一段程序,每次执行的时候局部变量部分分配的额外空间大小可能都不一样。通过分析源程序和编译后的程序无法检测出返回地址的准确位置。因此很难有效地实施堆栈攻击。
可以使用随机函数发生器来产生随机大小的额外缓冲区长度一个具体的随机函数发生器的例子如下所示。
static int randval=0; RandomGenerator() { if(randval==0) { srand(time(0)); randval=rand()%100+10; } return randval; }
Claims (6)
1、一种新型的动态堆栈内存管理方法。其特征是在计算机程序执行时,每次子过程被调用并分配当前过程的堆栈空间时,象正常情况一样保存调用参数,返回地址。但是保存帧指针和分配局部变量的时候,在帧指针和局部变量起始地址之间分配一段额外内存空间或者在返回地址和帧指针之间额外分配一段额外内存空间。此额外空间的大小在程序执行的时候随机决定。这样堆栈内存中返回地址和局部变量的相对位置无法通过分析源程序或编译后的目标程序得到,可以有效地防止利用堆栈缓冲区溢出来对计算机系统进行攻击。
2、由权利要求1所述的一种新型的动态堆栈内存管理方法,其特征是在分配局部参数内存空间时,在帧指针和局部变量起始地址之间多分配一段内存空间或者在返回地址和帧指针之间多分配一段内存空间。这样局部变量和返回地址之间的相对偏移就增加了一段额外的长度;这段额外长度的具体大小在每次运行的时候通过产生一个随机数获得。
3、由权利要求1所述的一种新型的动态堆栈内存管理方法,其特征是其中额外长度的内存缓冲区中也可以放入类似StackGuard技术中的″canary″值,从而检测出当前执行程序是否正在被攻击。
4、由权利要求1所述的一种新型的动态堆栈内存管理方法,其特征是权利要求1中所述的额外长度由随机函数发生器子程序来实现。
5、由权利要求1所述的一种新型的动态堆栈内存管理方法,其特征是计算机目标程序执行时具有上述权利要求1的特征。
6、由权利要求1所述的一种新型的动态堆栈内存管理方法,其特征是相应的编译器能产生权利要求1的特征的目标程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB200410014600XA CN1294468C (zh) | 2004-04-09 | 2004-04-09 | 一种防止缓冲区溢出攻击的动态堆栈内存管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB200410014600XA CN1294468C (zh) | 2004-04-09 | 2004-04-09 | 一种防止缓冲区溢出攻击的动态堆栈内存管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1564098A true CN1564098A (zh) | 2005-01-12 |
CN1294468C CN1294468C (zh) | 2007-01-10 |
Family
ID=34478470
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB200410014600XA Expired - Fee Related CN1294468C (zh) | 2004-04-09 | 2004-04-09 | 一种防止缓冲区溢出攻击的动态堆栈内存管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1294468C (zh) |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100383735C (zh) * | 2006-03-02 | 2008-04-23 | 浙江大学 | 嵌入式系统中基于sram的局部变量支持方法 |
CN101887497A (zh) * | 2010-06-24 | 2010-11-17 | 北京安天电子设备有限公司 | 一种基于堆栈分配规律的缓冲区溢出的检测方法 |
CN101309149B (zh) * | 2008-06-30 | 2012-05-23 | 成都市华为赛门铁克科技有限公司 | 一种地址处理方法和装置 |
CN102707933A (zh) * | 2005-02-18 | 2012-10-03 | 高通股份有限公司 | 用于管理返回堆栈的方法和设备 |
CN104679645A (zh) * | 2013-11-28 | 2015-06-03 | 中国航空工业集团公司航空动力控制系统研究所 | 一种栈空间余量实时检测方法 |
CN105022956A (zh) * | 2015-08-14 | 2015-11-04 | 中国科学院计算技术研究所 | 一种抵御代码重用攻击的方法 |
CN105450470A (zh) * | 2015-12-02 | 2016-03-30 | 北京数字新思科技有限公司 | 一种同源跨屏数据嗅探方法 |
CN106856470A (zh) * | 2015-12-09 | 2017-06-16 | 中国电信股份有限公司 | 用于防范网络攻击的方法以及装置 |
CN106919366A (zh) * | 2017-02-15 | 2017-07-04 | 杭州中天微系统有限公司 | 实现堆栈自适应保护的处理器 |
CN107480523A (zh) * | 2017-08-17 | 2017-12-15 | 郑州云海信息技术有限公司 | 一种Intel并Linux64平台上缓冲区溢出利用方法 |
CN107908954A (zh) * | 2017-11-13 | 2018-04-13 | 湖南大学 | 一种基于地址压缩技术的动态检测gpu上内存溢出的方法 |
CN108475223A (zh) * | 2016-01-06 | 2018-08-31 | 国际商业机器公司 | 在硬件管理的堆栈架构中受调用者保护的堆栈返回地址 |
CN109840410A (zh) * | 2017-12-28 | 2019-06-04 | 中国科学院计算技术研究所 | 一种进程内数据隔离与保护的方法和系统 |
CN111310171A (zh) * | 2020-02-21 | 2020-06-19 | 华大半导体有限公司 | 一种硬件级主动防御的实现方法及装置 |
CN111356987A (zh) * | 2017-09-18 | 2020-06-30 | 深圳传音通讯有限公司 | 动态内存的识别方法和装置 |
CN111868722A (zh) * | 2018-03-16 | 2020-10-30 | 德克萨斯仪器股份有限公司 | 具有硬件支持的存储器缓冲区溢出检测的处理器 |
CN112463536A (zh) * | 2020-11-27 | 2021-03-09 | 宁波拓普集团股份有限公司 | 一种软件堆栈区域非法篡改监控系统及方法 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101241464B (zh) * | 2007-02-05 | 2010-08-18 | 中兴通讯股份有限公司 | 一种检测堆栈帧破坏的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003167737A (ja) * | 2001-11-30 | 2003-06-13 | Nec Corp | スタック使用方法 |
-
2004
- 2004-04-09 CN CNB200410014600XA patent/CN1294468C/zh not_active Expired - Fee Related
Cited By (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102707933A (zh) * | 2005-02-18 | 2012-10-03 | 高通股份有限公司 | 用于管理返回堆栈的方法和设备 |
CN102707933B (zh) * | 2005-02-18 | 2017-03-01 | 高通股份有限公司 | 用于管理返回堆栈的方法和设备 |
CN100383735C (zh) * | 2006-03-02 | 2008-04-23 | 浙江大学 | 嵌入式系统中基于sram的局部变量支持方法 |
CN101309149B (zh) * | 2008-06-30 | 2012-05-23 | 成都市华为赛门铁克科技有限公司 | 一种地址处理方法和装置 |
CN101887497A (zh) * | 2010-06-24 | 2010-11-17 | 北京安天电子设备有限公司 | 一种基于堆栈分配规律的缓冲区溢出的检测方法 |
CN104679645A (zh) * | 2013-11-28 | 2015-06-03 | 中国航空工业集团公司航空动力控制系统研究所 | 一种栈空间余量实时检测方法 |
CN105022956A (zh) * | 2015-08-14 | 2015-11-04 | 中国科学院计算技术研究所 | 一种抵御代码重用攻击的方法 |
CN105022956B (zh) * | 2015-08-14 | 2018-11-09 | 中国科学院计算技术研究所 | 一种抵御代码重用攻击的方法 |
CN105450470A (zh) * | 2015-12-02 | 2016-03-30 | 北京数字新思科技有限公司 | 一种同源跨屏数据嗅探方法 |
CN105450470B (zh) * | 2015-12-02 | 2019-03-19 | 北京数字新思科技有限公司 | 一种同源跨屏数据嗅探方法 |
CN106856470A (zh) * | 2015-12-09 | 2017-06-16 | 中国电信股份有限公司 | 用于防范网络攻击的方法以及装置 |
CN108475223A (zh) * | 2016-01-06 | 2018-08-31 | 国际商业机器公司 | 在硬件管理的堆栈架构中受调用者保护的堆栈返回地址 |
CN108475223B (zh) * | 2016-01-06 | 2021-04-20 | 国际商业机器公司 | 检测计算环境的堆栈的损坏的方法、系统和计算机程序产品 |
CN106919366B (zh) * | 2017-02-15 | 2019-06-04 | 杭州中天微系统有限公司 | 实现堆栈自适应保护的处理器 |
CN106919366A (zh) * | 2017-02-15 | 2017-07-04 | 杭州中天微系统有限公司 | 实现堆栈自适应保护的处理器 |
CN107480523A (zh) * | 2017-08-17 | 2017-12-15 | 郑州云海信息技术有限公司 | 一种Intel并Linux64平台上缓冲区溢出利用方法 |
CN111356987A (zh) * | 2017-09-18 | 2020-06-30 | 深圳传音通讯有限公司 | 动态内存的识别方法和装置 |
CN111356987B (zh) * | 2017-09-18 | 2021-05-11 | 深圳传音通讯有限公司 | 动态内存的识别方法和装置 |
CN107908954A (zh) * | 2017-11-13 | 2018-04-13 | 湖南大学 | 一种基于地址压缩技术的动态检测gpu上内存溢出的方法 |
CN107908954B (zh) * | 2017-11-13 | 2021-04-30 | 湖南大学 | 一种基于地址压缩技术的动态检测gpu上内存溢出的方法 |
CN109840410A (zh) * | 2017-12-28 | 2019-06-04 | 中国科学院计算技术研究所 | 一种进程内数据隔离与保护的方法和系统 |
CN109840410B (zh) * | 2017-12-28 | 2021-09-21 | 中国科学院计算技术研究所 | 一种进程内数据隔离与保护的方法和系统 |
CN111868722A (zh) * | 2018-03-16 | 2020-10-30 | 德克萨斯仪器股份有限公司 | 具有硬件支持的存储器缓冲区溢出检测的处理器 |
CN111310171A (zh) * | 2020-02-21 | 2020-06-19 | 华大半导体有限公司 | 一种硬件级主动防御的实现方法及装置 |
CN112463536A (zh) * | 2020-11-27 | 2021-03-09 | 宁波拓普集团股份有限公司 | 一种软件堆栈区域非法篡改监控系统及方法 |
CN112463536B (zh) * | 2020-11-27 | 2022-08-05 | 宁波拓普集团股份有限公司 | 一种软件堆栈区域非法篡改监控系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN1294468C (zh) | 2007-01-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1294468C (zh) | 一种防止缓冲区溢出攻击的动态堆栈内存管理方法 | |
US7877802B2 (en) | System and method for proactive computer virus protection | |
Robertson et al. | Run-time Detection of Heap-based Overflows. | |
US10310991B2 (en) | Timely address space randomization | |
Akritidis et al. | Preventing memory error exploits with WIT | |
US6735666B1 (en) | Method of providing direct user task access to operating system data structures | |
US7581089B1 (en) | Method of protecting a computer stack | |
Lhee et al. | {Type-Assisted} Dynamic Buffer Overflow Detection | |
JP6474398B2 (ja) | コードスタック管理 | |
US20060095895A1 (en) | Method and apparatus for inserting code | |
EP1870829A1 (en) | Securing software by enforcing data flow integrity | |
US8037529B1 (en) | Buffer overflow vulnerability detection and patch generation system and method | |
CN105468965A (zh) | 一种动态堆栈内存管理方法 | |
US20130145130A1 (en) | Data processing apparatus and method for performing register renaming without additional registers | |
JP2011170836A (ja) | 情報処理装置及びプログラム、情報処理方法、記録媒体 | |
US20210150028A1 (en) | Method of defending against memory sharing-based side-channel attacks by embedding random value in binaries | |
Younan et al. | Efficient protection against heap-based buffer overflows without resorting to magic | |
Shehab et al. | RCR for preventing stack smashing attacks bypass stack canaries | |
WO2004095275A2 (en) | Method and apparatus for creating an execution shield | |
Yang-Seo et al. | A new stack buffer overflow hacking defense technique with memory address confirmation | |
Wang et al. | Revisiting address space randomization | |
Champagne et al. | The reduced address space (ras) for application memory authentication | |
Bang et al. | Enhancing a Lock-and-key Scheme with MTE to Mitigate Use-After-Frees | |
US7191307B1 (en) | Memory management unit technique to detect cross-region pointer stores | |
Devkota et al. | Dynamic Memory Allocation: Implementation and Misuse |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C19 | Lapse of patent right due to non-payment of the annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |