CN104520868A - 用于检测调用堆栈篡改的系统 - Google Patents

用于检测调用堆栈篡改的系统 Download PDF

Info

Publication number
CN104520868A
CN104520868A CN201380041553.5A CN201380041553A CN104520868A CN 104520868 A CN104520868 A CN 104520868A CN 201380041553 A CN201380041553 A CN 201380041553A CN 104520868 A CN104520868 A CN 104520868A
Authority
CN
China
Prior art keywords
subroutine
address
storehouse
computing
reg
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
Application number
CN201380041553.5A
Other languages
English (en)
Other versions
CN104520868B (zh
Inventor
F·加尔多
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Rambus Inc
Original Assignee
Inside Secure SA
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Inside Secure SA filed Critical Inside Secure SA
Publication of CN104520868A publication Critical patent/CN104520868A/zh
Application granted granted Critical
Publication of CN104520868B publication Critical patent/CN104520868B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/56External testing equipment for static stores, e.g. automatic test equipment [ATE]; Interfaces therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/251Local memory within processor subsystem

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明涉及一种用于检测子例程调用堆栈修改的方法,包括以下步骤:当调用子例程时,将返回地址放置在堆栈的顶部;在子例程结束时,使用堆栈顶部的地址作为返回地址,并从堆栈中移除该地址;当调用子例程时,利用第一运算(OP)将返回地址积累在存储单元(REG)中;在子例程结束时,利用与第一运算相反的第二运算将来自堆栈顶部的地址积累在存储单元中;以及当存储单元的内容与其初始值(REG0)不同时检测到变更。

Description

用于检测调用堆栈篡改的系统
技术领域
本发明涉及处理器系统中的子例程调用堆栈内容的意外变更的检测,特别涉及检测欺诈尝试。
背景技术
子例程调用堆栈是处理器系统中的用于存储所谓“返回”地址(即,当子例程的执行结束时,在该“返回”地址处继续程序的执行)的保留存储区。术语“堆栈”反映存储区的后进先出(LIFO)管理方式,其特别好地适合于处理嵌套的子例程。将在下文中使用关于堆栈的管理的常用术语,诸如“推入”到堆栈上和从堆栈“弹出”,应理解为底层操作实际上是通过管理存储区的读和写指针来获得的。
调用堆栈的意外变更可以在子例程结束时导致程序执行跳到由堆栈中的变更后的值标识的任意位置。该变更可能是由于欺诈尝试引起的,在所述欺诈尝试中,欺诈者试图将执行转移到一条海盗代码(pirate code)或绕过安全检查。
堆栈的修改可以通过激光攻击来实现,即,在与堆栈进行的读事务期间将脉冲激光束指引到存储器的堆栈区上或数据总线上。在总线上传送的值也可以通过在读事务期间在电源电压中产生脉冲而被变更。
为了更好地说明此问题,考虑用C语言编写的以下伪代码:
图1示出该伪代码的执行。调用堆栈的内容被显示在每个块的上方,其中每个块示出子例程或函数的执行。假定在该表示中堆栈是从底部填充的。
在其执行期间,函数main()调用函数func1();当函数func1()被执行时,相应的返回地址1被推入到堆栈上。函数func1()调用函数func2();相应的返回地址2被推入到堆栈上。函数func2()调用函数func3();另一返回地址3被推入到堆栈上。
函数func3()的执行的结束是通过专用的“返回”指令的执行来识别的。该指令导致地址3从堆栈中被弹出、以及导致执行从该地址继续,在这种情况下,函数func2()的执行继续。函数func2()然后调用VerifyPIN()函数,该函数的作用是例如验证PIN码的输入。相应的返回地址4被推入到堆栈上。
当VerifyPIN()函数的执行结束时,地址4从堆栈中被弹出,并且执行从该地址继续,在这种情况下,在函数func2()中继续。
当各函数结束其执行时,返回地址从堆栈中被弹出,并且执行最后返回到main()函数内的地址1。
在图2中,在函数func3()的执行期间,欺诈者改变堆栈的最后地址3。欺诈者设法将该地址替换为4,该4是VerifyPIN()函数的返回地址。因此,当函数func3()的执行结束时,执行在地址4继续。用于验证PIN代码的输入的VerifyPIN()函数由此被绕过。
欺诈者不需要知道他想要绕过的函数的确切返回地址4。通过反复试验,他可以简单地找到除返回地址之外的任意地址,其在没有执行位于返回地址和该任意地址之间的代码部分之后不会引起错误。
已知有用于避免这种类型的欺诈的各种解决方案。例如,美国专利7,581,089建议使用两个冗余调用堆栈。当调用子例程时,每个返回地址被推入到两个堆栈上。在子例程的执行结束时,系统检查返回地址存在于两个堆栈中。即使欺诈者能够改变两个堆栈中的地址,这种变更的成功机会是随机的:以相同的方式同时改变两个堆栈是特别困难的。
尽管这种解决方案是有效的,但是它要求额外的复杂性,这增加了电路表面积并降低了电路的性能。
发明内容
因此,需要一种低复杂性的解决方案来检测子例程调用堆栈内容的变更。
该需要可以通过用于检测子例程调用堆栈修改的方法来解决,所述方法包括以下步骤:当调用子例程时,将返回地址放置在堆栈的顶部;在子例程结束时,使用堆栈顶部的地址作为返回地址,并从堆栈中移除该地址;当调用子例程时,利用第一运算将返回地址积累在存储单元(memorylocation)中;在子例程结束时,利用与第一运算相反的第二运算将来自堆栈顶部的地址积累在存储单元中;以及当存储单元的内容与其初始值不同时检测到变更。
第一和第二运算可以是按位异或(bitwise exclusive-OR)。
第一和第二运算可以是加法和减法。
返回地址和堆栈顶部的地址可以是在对堆栈的访问事务期间取自存储器总线的值。
初始值可以是随机的。
可以提供一种用于检测子例程调用堆栈修改的装置,其与处理器相关联地包括:存储初始值、通过程序指令可读和可写的存储单元;运算器,其配置成将存储单元的值替换为存储单元的内容和与调用堆栈交换的当前值之间的运算的结果;以及检测电路,其配置成识别当前执行的指令,并且如果所识别的指令是子例程调用,则将运算器配置成执行第一类型的运算,并且如果所识别的指令是子例程返回,则将运算器配置成执行与第一类型的运算相反的第二类型的运算。
附图说明
根据仅出于示例性目的提供的在附图中表示的本发明的特定实施例的以下描述,其他优点和特征将变得更加明显,在附图中:
图1如上所述图解示例性伪代码执行,示出调用堆栈内容的演变;
图2如上所述图解图1的执行示例中的欺诈尝试;并且
图3示出调用堆栈变更检测装置的实施例。
具体实施方式
在图1中,在调用程序mian()中的函数func1()与从函数func1()返回之间,地址1、2、3和4在相继的函数调用时被推入到调用堆栈上。在该同一阶段,在相继的函数返回时,地址3、4、2和1从堆栈中被弹出。
应注意的是,推入和弹出序列包括相同的地址。弹出序列的顺序不一定是与推入序列相反的顺序,如地址3和4所示,因为几个子例程可以在同一函数中被调用。然而如下属性仍然保持:同一地址在堆栈总线上出现两次,一次是以写模式,一次是以读模式。
为了检测调用堆栈的变更、或者在堆栈总线上传送的值的变更,建议至少对于被程序设计员估计为关键性的程序部分,验证每个堆栈地址在调用子例程和从子例程返回之间在总线上出现两次。
为了执行这样的检查,一种解决方案可以是存储推入到堆栈上以及从堆栈中弹出的地址的完整序列,以便在最后检查每个地址出现偶数次。这种解决方案是低效的。
优选的是,使用在每次推入和弹出时执行的递归运算来在专用存储单元(例如寄存器)中积累相继的地址。递归运算可以使得在一个地址上执行的第二次运算取消在该地址上执行的第一次运算的效果。
这可以通过使用两个相反的运算来实现,一个用于每个推入,另一个用于每个弹出。第一个运算例如是加法,而第二个运算例如是减法。
在图1以及为main()程序中的函数func1()实现验证的示例中,被初始化为值REG0的寄存器中积累的内容将是:
REG=REG0+1+2+3–3+4–4–2–1
=REG0
如果一切如预期那样发生,在程序main()中返回时,寄存器内容恢复到其初始值REG0
在图2的示例中,寄存器内容将是:
REG=REG0+1+2+3–4–2–1
=REG0+3–4≠REG0
在从函数func1()返回时寄存器内容与初始内容不同的事实表明堆栈中的地址被改变了。
可注意到的是,该过程“保护”函数func1()中的所有嵌套子例程:其使得下述得到满足:这些子例程的任何返回地址的变更会导致验证的失败。
可替换地,第一个运算可以是乘法,而第二个运算可以是除法。
然而,可能优选的是,使用作为自身的逆运算的单一运算,例如按位异或运算。这种运算还具有快速并且在硬件中容易实现的特征。
初始值REG0可以是随机的,并且在每次调用要检查的函数时被更新。如果初始值是固定的,则欺诈者可能会倾向于通过激光攻击来改变寄存器的内容,以便当子例程返回发生时使寄存器恢复到其初始值。
例如对于程序main()中的所有子例程调用都系统地实现这种验证是没有必要的。这甚至会是无效的。实际上,对欺诈者有用的函数可以嵌套在程序main()下面的几个层次中。在这种情况下,欺诈在返回到程序main()时被检测到,但是仅仅在对欺诈者有用的函数已经被执行之后。
因此合乎期望的是,程序设计员识别关键子例程、并且以足够的嵌套层次(level of nesting)分别单独地保护它们。为了该目的,寄存器REG可以通过软件访问,允许程序设计员在要保护的子例程调用前插入寄存器的初始化指令,以及在子例程的返回后插入用于读取寄存器的内容并检查其是否已经发生变更的指令。例如,在图1中,如果函数func2()应该受到保护(并且因此嵌套在函数func2()中的所有函数应该受到保护),则可以在函数func1()的定义中使用以下伪代码:
图3示意性地示出与处理器相关联的验证装置的实施例。处理器可包括由指令解码器10控制的算数和逻辑单元ALU。解码器10可通过指令提取单元12接收指令代码。可提供存储器接口14用于在中央存储器MEM中读取用于单元12的指令代码。当前要在存储器中提取的指令可通过包含于称作“程序计数器”或PC的专用寄存器中的地址(即,ALU单元通过总线B向存储器接口14传送的地址)来识别。此外,总线B可以用于在ALU单元和存储器MEM之间交换数据。
子例程调用堆栈CS可在存储器MEM的保留区域中实施。子例程调用堆栈CS存储的数据是可以指向存储器MEM的包含要执行程序的指令的区域的地址。
子例程调用是通过在ALU单元中执行CALL指令来操作的。ALU单元计算返回地址并将其推入到堆栈上。返回地址通常是紧随在该调用之后的指令的地址,并且例如通过将固定偏移加到程序计数器PC的当前值来定义返回地址。此外,CALL指令可将子例程的第一指令的地址作为参数传送—ALU单元然后可用该地址更新程序计数器PC。
子例程返回可通过RET指令的执行来操作。ALU单元然后从堆栈中弹出最后的地址,并用该地址更新程序计数器PC。
应注意的是,在CALL指令执行时推入到堆栈上的地址以及在RET指令执行时从堆栈弹出的地址依次出现在总线B的数据线上,其中第一个地址出现在写事务中而第二个地址出现在读事务中。
检验装置16可以包括寄存器REG,其配置成积累推入到调用堆栈上和从调用堆栈中弹出的这些地址。使用运算器OP来执行该积累,所述运算器OP优选地配置成计算寄存器REG的内容和出现在总线B的数据线上的值之间的按位异或。
可以提供检测电路18以识别当前指令是否是子例程调用或返回。为此目的,检测电路18接收指令解码器10中可获得的指令代码。每次检测到这样的指令时,电路18启用(EN)寄存器REG中的积累。如果除了异或以外的相反运算被用于积累,则电路18也可以取决于指令是调用还是返回来选择运算。
寄存器REG的内容可以是通过ALU单元可写和可读的,类似于通常在处理器中提供的工作寄存器的内容。寄存器REG因此可通过程序指令来访问。
本领域技术人员将会想到所述实施例的各种变更和修改。尽管公开了特定的软件/硬件划分来实现所需的功能,但是清楚的是,取决于速度和硅表面积之间的期望的折衷,其他划分方案是可能的。本公开中所使用的术语“子例程”或“函数”旨在是通用的并且适用于使用用于存储返回地址的堆栈通过跳跃和返回机制执行的任何程序段。

Claims (8)

1.一种用于检测子例程调用堆栈修改的方法,对于在初始子例程中嵌套的子例程序列中的每个子例程,所述方法包括以下步骤:
●当调用当前子例程时,将返回地址放置在所述堆栈的顶部;
●在所述当前子例程结束时,使用位于所述堆栈顶部的地址作为返回地址,并从所述堆栈中移除所述地址;
●将单个存储单元(REG)分配给所述子例程序列;
●在调用所述初始子例程之前,保存所述存储单元的初始值(REG0);
●当调用所述当前子例程时,利用第一运算(OP)将所述返回地址积累在所述存储单元(REG)中;
●在所述当前子例程结束时,利用与所述第一运算相反的第二运算将来自所述堆栈顶部的所述地址积累在所述存储单元中;以及
●在从所述初始子例程返回时,当所述存储单元的内容与所述初始值(REG0)不同时检测到修改。
2.根据权利要求1所述的方法,其中所述第一和第二运算是按位异或。
3.根据权利要求1所述的方法,其中所述第一和第二运算是加法和减法。
4.根据权利要求1所述的方法,其中所述返回地址和位于所述堆栈顶部的地址是在对所述堆栈的访问事务期间取自存储器总线的值。
5.根据权利要求1至4中任一项所述的方法,其中所述初始值(REG0)是随机的。
6.一种用于检测子例程调用堆栈修改的装置,与处理器相关联地包括:
●存储初始值、通过程序指令可读和可写的存储单元(REG);
●运算器(OP),其配置成将所述存储单元的值替换为所述存储单元的内容和与所述调用堆栈交换的当前值之间的运算的结果;以及
●检测电路(18),其配置成识别当前执行的指令以及:
-如果所识别的指令是子例程调用(CALL),则将所述运算器配置成执行第一类型的运算,以及
-如果所识别的指令是子例程返回(RET),则将所述运算器配置成执行与所述第一类型的运算相反的第二类型的运算。
7.根据权利要求6所述的装置,其中所述第一和第二类型的运算是异或运算。
8.根据权利要求6所述的装置,其中所述第一和第二类型的运算是加法和减法。
CN201380041553.5A 2012-08-06 2013-07-31 用于检测调用堆栈篡改的系统 Active CN104520868B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
FR1257635A FR2994290B1 (fr) 2012-08-06 2012-08-06 Systeme de detection de modification d'une pile d'appel de sous-programme
FR1257635 2012-08-06
PCT/FR2013/051854 WO2014023894A1 (fr) 2012-08-06 2013-07-31 Systeme de detection de modification d'une pile d'appel de sous-programme

Publications (2)

Publication Number Publication Date
CN104520868A true CN104520868A (zh) 2015-04-15
CN104520868B CN104520868B (zh) 2017-08-08

Family

ID=47594871

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380041553.5A Active CN104520868B (zh) 2012-08-06 2013-07-31 用于检测调用堆栈篡改的系统

Country Status (5)

Country Link
US (1) US9268559B2 (zh)
EP (1) EP2880588B1 (zh)
CN (1) CN104520868B (zh)
FR (1) FR2994290B1 (zh)
WO (1) WO2014023894A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109446798A (zh) * 2018-09-21 2019-03-08 中国科学院信息工程研究所 检测堆栈中返回地址被篡改历史的装置
CN109446797A (zh) * 2018-09-21 2019-03-08 中国科学院信息工程研究所 检测堆栈中返回地址被篡改的装置
CN109508538A (zh) * 2018-09-21 2019-03-22 中国科学院信息工程研究所 一种检测堆栈中返回地址被篡改的堆栈结构
CN109508539A (zh) * 2018-09-21 2019-03-22 中国科学院信息工程研究所 检测堆栈中返回地址被篡改的链式堆栈结构

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9767272B2 (en) * 2014-10-20 2017-09-19 Intel Corporation Attack Protection for valid gadget control transfers
US11314855B2 (en) * 2018-12-05 2022-04-26 Webroot Inc. Detecting stack pivots using stack artifact verification
US11720471B2 (en) * 2021-08-09 2023-08-08 International Business Machines Corporation Monitoring stack memory usage to optimize programs

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030182572A1 (en) * 2001-12-06 2003-09-25 Cowan Stanley Crispin Pointguard: method and system for protecting programs against pointer corruption attacks
CN1447244A (zh) * 2003-04-03 2003-10-08 杭州中天微系统有限公司 一种设计在cpu里的侦测缓冲区溢出的方法
US7669243B2 (en) * 2005-03-31 2010-02-23 Texas Instruments Incorporated Method and system for detection and neutralization of buffer overflow attacks
CN101866406A (zh) * 2010-06-18 2010-10-20 中国科学院软件研究所 一种栈溢出攻击防御方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040168078A1 (en) * 2002-12-04 2004-08-26 Brodley Carla E. Apparatus, system and method for protecting function return address
US7546587B2 (en) * 2004-03-01 2009-06-09 Microsoft Corporation Run-time call stack verification
US7467272B2 (en) * 2004-12-16 2008-12-16 International Business Machines Corporation Write protection of subroutine return addresses
JP5090661B2 (ja) * 2006-04-12 2012-12-05 株式会社エヌ・ティ・ティ・ドコモ ソフトウェア動作モデル化装置、ソフトウェア動作監視装置、ソフトウェア動作モデル化方法及びソフトウェア動作監視方法
US7581089B1 (en) * 2006-04-20 2009-08-25 The United States Of America As Represented By The Director Of The National Security Agency Method of protecting a computer stack
US8141163B2 (en) * 2007-07-31 2012-03-20 Vmware, Inc. Malicious code detection
FR2977694A1 (fr) * 2011-07-08 2013-01-11 St Microelectronics Rousset Microprocesseur protege contre un debordement de pile

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030182572A1 (en) * 2001-12-06 2003-09-25 Cowan Stanley Crispin Pointguard: method and system for protecting programs against pointer corruption attacks
CN1447244A (zh) * 2003-04-03 2003-10-08 杭州中天微系统有限公司 一种设计在cpu里的侦测缓冲区溢出的方法
US7669243B2 (en) * 2005-03-31 2010-02-23 Texas Instruments Incorporated Method and system for detection and neutralization of buffer overflow attacks
CN101866406A (zh) * 2010-06-18 2010-10-20 中国科学院软件研究所 一种栈溢出攻击防御方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109446798A (zh) * 2018-09-21 2019-03-08 中国科学院信息工程研究所 检测堆栈中返回地址被篡改历史的装置
CN109446797A (zh) * 2018-09-21 2019-03-08 中国科学院信息工程研究所 检测堆栈中返回地址被篡改的装置
CN109508538A (zh) * 2018-09-21 2019-03-22 中国科学院信息工程研究所 一种检测堆栈中返回地址被篡改的堆栈结构
CN109508539A (zh) * 2018-09-21 2019-03-22 中国科学院信息工程研究所 检测堆栈中返回地址被篡改的链式堆栈结构

Also Published As

Publication number Publication date
WO2014023894A1 (fr) 2014-02-13
EP2880588A1 (fr) 2015-06-10
FR2994290B1 (fr) 2018-04-06
US20150220328A1 (en) 2015-08-06
CN104520868B (zh) 2017-08-08
EP2880588B1 (fr) 2020-10-28
FR2994290A1 (fr) 2014-02-07
US9268559B2 (en) 2016-02-23

Similar Documents

Publication Publication Date Title
CN104520868A (zh) 用于检测调用堆栈篡改的系统
CN109643345B (zh) 用于确定性代码流完整性保护的技术
CN103140841B (zh) 保护存储器的部分的方法和装置
US8583880B2 (en) Method for secure data reading and data handling system
US8099636B2 (en) System and method for protecting memory stacks using a debug unit
US8645923B1 (en) Enforcing expected control flow in program execution
EP1974272B1 (en) Method and apparatus for detecting a fault condition and restoration thereafter using user context information
US7917753B2 (en) Transferring control between programs of different security levels
US9804975B2 (en) Hardware-enforced prevention of buffer overflow
EP3308314B1 (en) Secure mode state data access tracking
Petsios et al. Dynaguard: Armoring canary-based protections against brute-force attacks
CN103793651A (zh) 基于Xen虚拟化的内核完整性检测方法
US20160171213A1 (en) Apparatus and method for controlling instruction execution to prevent illegal accesses to a computer
KR20080037060A (ko) 메모리 장치와 이 메모리 장치의 작동 방법
Roth et al. Implicit buffer overflow protection using memory segregation
EP3413532A1 (en) Monitoring control-flow integrity
KR100928865B1 (ko) 컴퓨터 시스템에서의 스택 확장 및 보호 방법과 그 장치
US20210049261A1 (en) Method for activating sensors in a multi-unit device
JP6119345B2 (ja) Icチップ、icカード、検証処理方法、及び検証処理プログラム
WO2018058414A1 (en) Overflow detection

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: Fa Guomeileyi

Patentee after: Weimei Anshi Co., Ltd

Address before: Fa Guomeilvai

Patentee before: Inside Secure

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20200325

Address after: California, USA

Patentee after: Rambus Inc.

Address before: Fa Guomeileyi

Patentee before: Weimei Anshi Co., Ltd