CN111898120A - 控制流完整性保护方法及装置 - Google Patents
控制流完整性保护方法及装置 Download PDFInfo
- Publication number
- CN111898120A CN111898120A CN202010611766.9A CN202010611766A CN111898120A CN 111898120 A CN111898120 A CN 111898120A CN 202010611766 A CN202010611766 A CN 202010611766A CN 111898120 A CN111898120 A CN 111898120A
- Authority
- CN
- China
- Prior art keywords
- instruction
- indirect branch
- address
- nop
- branch instruction
- 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
Images
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)
- Storage Device Security (AREA)
Abstract
本发明实施例提供一种控制流完整性保护方法及装置,该方法包括:获取待保护程序的控制流图,确定所有间接分支指令和对应的合法目标地址;在每个合法目标地址前插入带有标签信息的NOP指令,并将对应的间接分支指令的跳转目标地址,指向NOP指令所在地址,所述标签信息根据间接分支指令所在地址确定;其中,NOP指令用于间接分支指令执行时,通过验证NOP指令中的标签信息和间接分支指令的源地址一致后,执行跳转后的指令。由于每个合法目标地址前插入带有标签信息的NOP指令,可以对不同间接转移的合法目的地址进行区分,实现了细粒度的控制流完整性保护;通过NOP指令实现,硬件开销小,不影响性能,并且具有较好的兼容性。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种控制流完整性保护方法及装置。
背景技术
内存漏洞是指程序员在软件编写的过程中,对内存的操作上有时间上或者空间上的设计失误,产生使得程序可能做出违反程序本身设计的行为的问题。攻击者利用程序的内存漏洞,可以构造出各种攻击,执行恶意行为。
由于冯诺依曼结构将指令也作为数据存在内存中执行,所以早期攻击者会将恶意代码作为数据注入内存,然后劫持控制流执行注入的恶意代码。例如一条间接分支指令jmprax,如果攻击者通过内存漏洞控制了rax寄存器的值,那么就可以通过rax的值使间接分支指令的跳转目标指向已经注入的恶意代码,实现控制流劫持,实现恶意攻击。
现在的操作系统普遍采用了不可执行位技术,即标记每个内存页是可读,可写还是可执行。程序的代码段会被标记为可执行但不可写,而数据段则会被标记为不可执行。这样攻击者的恶意代码由于是作为数据注入内存的,所以被标记为不可执行,当攻击者试图执行恶意代码时则会因违法内存页标记报错。
为了绕过不可执行位保护技术,研究者提出了代码重用攻击,即利用程序自身的代码片段实现各个小功能,再利用间接分支指令将代码片段链接起来实现完整的攻击,因为代码片段本身是程序自己的代码,都标记为可执行,所以可以绕过不可执行位保护。这种攻击主要有ROP攻击及其变种,如JOP攻击。
研究者发现控制流完整性保护(Control-flow Integrity,CFI)可以有效防御代码重用攻击。控制流完整性保护通过静态或者动态分析获取程序的合法控制流图,在程序运行时检查控制流是否符合控制流图,如果符合则说明程序行为合法,不符合则说明存在攻击行为。
目前CPU只有粗粒度的硬件设计,一般引入一个特殊的空指令来标记合法的目的地址,而不对不同的目的地址进行细粒度区分。例如Intel CET中的IBT用相同指令ENDBRANCH标记了所有的合法的跳转目标的入口。当一个间接转移发生时,处理器会检查转移的目的地址是否是ENDBRANCH指令,如果不是,则认为发生了攻击。ARM的BTI也是类似的设计。目前的基于软件的CFI技术会引入巨大的性能开销,比如原始的CFI最大开销为45%。而现在应用的粗粒度CFI技术普遍为粗粒度CFI,对间接转移的目的地址之间不进行区分。仍然给攻击者留下了很大的攻击空间。
发明内容
为了解决上述问题,本发明实施例提供一种控制流完整性保护方法及装置。
第一方面,本发明实施例提供一种控制流完整性保护方法,包括:获取待保护程序的控制流图,确定所有间接分支指令和对应的合法目标地址;
在每个合法目标地址前插入带有标签信息的NOP指令,并将对应的间接分支指令的跳转目标地址,指向NOP指令所在地址,所述标签信息根据间接分支指令所在地址确定;
其中,所述NOP指令,用于间接分支指令执行时,通过验证NOP指令中的标签信息和间接分支指令的源地址一致后,执行跳转后的指令。
进一步地,所述将对应的间接分支指令的跳转目标地址,指向NOP指令所在地址之后,还包括:
若检测到间接分支指令执行,跳转至对应的目标地址,并检查跳转后的指令是否为NOP指令;
若为NOP指令,则判断NOP指令中的标签信息是否与间接分支指令的源地址一致,若一致,则执行跳转后的指令。
进一步地,所述在每个合法目标地址前插入带有标签信息的NOP指令,并将对应的间接分支指令的跳转目标地址,指向NOP指令所在地址,包括:
若有多个间接分支指令需跳转至同一目标地址,则在目标地址前依次插入与每个间接分支指令对应的带有标签信息的NOP指令,并将每一间接分支指令的跳转目标地址,分别指向对应的NOP指令所在地址。
进一步地,所述标签信息,根据间接分支指令所在源地址的低位确定,相应地,所述验证NOP指令中的标签信息和间接分支指令的源地址一致,具体为:
验证NOP指令的标签信息,与间接分支指令源地址的低位是否一致。
第二方面,本发明实施例提供一种控制流完整性保护装置,包括:跳转关系获取模块,用于获取待保护程序的控制流图,确定所有间接分支指令和对应的合法目标地址;
NOP指令生成模块,用于在每个合法目标地址前插入带有标签信息的NOP指令,并将对应的间接分支指令的跳转目标地址,指向NOP指令所在地址,所述标签信息根据间接分支指令所在地址确定;
其中,所述NOP指令,用于间接分支指令执行时,通过验证NOP指令中的标签信息和间接分支指令的源地址一致后,执行跳转后的指令。
进一步地,该装置还包括:
NOP指令验证模块,用于若检测到间接分支指令执行,跳转至对应的目标地址,并检查跳转后的指令是否为NOP指令;
地址验证模块,用于若为NOP指令,则判断NOP指令中的标签信息是否与间接分支指令的源地址一致,若一致,则执行跳转后的指令。
进一步地,所述NOP指令生成模块还用于:
若有多个间接分支指令需跳转至同一目标地址,则在目标地址前依次插入与每个间接分支指令对应的带有标签信息的NOP指令,并将每一间接分支指令的跳转目标地址,分别指向对应的NOP指令所在地址。
进一步地,所述标签信息,根据间接分支指令所在源地址的低位确定,相应地,所述验证NOP指令中的标签信息和间接分支指令的源地址一致,具体为:
验证NOP指令的标签信息,与间接分支指令源地址的低位是否一致。
第三方面,本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现本发明第一方面控制流完整性保护方法的步骤。
第四方面,本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现本发明第一方面控制流完整性保护方法的步骤。
本发明实施例提供的控制流完整性保护方法及装置,每个合法目标地址前插入带有标签信息的NOP指令,可以对不同间接转移的合法目的地址进行区分,实现了细粒度的控制流完整性保护;通过NOP指令实现,硬件开销小,不影响性能,并且具有较好的兼容性。通过验证NOP指令中的标签信息和间接分支指令的源地址一致,实现了可靠的控制流完整性保护。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的控制流完整性保护方法流程图;
图2为本发明实施例提供的间接分支指令跳转示意图;
图3为本发明实施例提供的控制流完整性保护装置结构图;
图4为本发明实施例提供的一种电子设备的实体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
代码重用攻击,例如,攻击者可以确定地执行一条指令jmp RAX,这是一条间接跳转指令。如果攻击者可以控制RAX的值,就可以劫持控制流跳转到任意地址的指令序列。如果下一条指令序列也以另一个间接分支结尾,还可以用同样的方法继续跳转到其他任意地址序列。每一条间接分支都可以是不同的种类或者单一种类:间接调用(例如call RAX)间接跳转(例如jmp RAX)返回指令(return,从栈上弹出一个地址并跳转)。
CFI可以大致分为粗粒度和细粒度:细粒度指每个(间接)的控制流的源和目的地址都使用标记。例如a到b,c到d,做出细致的区分。而粗粒度一般指只标记一个代码片段可以被作为间接控制流转移的目的地址。如果a到b,c到d是合法的,那么b和d会被标记为合法的目的。而a到d和c到b在粗粒度CFI中也是合法的。因此可见,细粒度的CFI是更加安全的,但是会引入巨大的性能开销。而粗粒度的CFI实现更加简单,仍然给攻击者留下了很大的攻击空间。
图1为本发明实施例提供的控制流完整性保护方法流程图,如图1所示,本发明实施例提供一种控制流完整性保护方法,包括:
101、获取待保护程序的控制流图,确定所有间接分支指令和对应的合法目标地址。
此为静态分析阶段,可利用现有的静态分析工具,获取需要保护的程序的控制流图。控制流图中包括了所有的间接跳转指令,以及间接跳转指令需要跳转到的目标地址。
102、在每个合法目标地址前插入带有标签信息的NOP指令,并将对应的间接分支指令跳转目标地址指向NOP指令所在地址,标签信息根据间接分支指令所在地址确定。NOP指令,用于间接分支指令执行时,通过验证NOP指令中的标签信息和间接分支指令的源地址一致后,执行跳转后的指令。
本发明实施例的NOP指令为广义的NOP指令,指没有影响程序上下文状态和控制流的指令,如预取指令也属于广义的NOP指令。通过对代码进行插桩和重拍,加入NOP指令,具体方法为:根据静态分析合法的间接分支指令和目标地址配对,以间接分支指令所在的源地址,生成间接分支指令对应的标签(如以间接分支指令所在的源地址作为间接分支指令的标签),然后在目的地址前插入NOP指令,作为目的地址的标签,并将跳转关系由跳转至目标地址改为跳转至NOP指令的地址。
插入的NOP指令含有额外标签信息,NOP指令可以用体系结构中所有的一些不影响体系结构状态的指令构造,比如RISC-V架构下,可以利用x0寄存器,add,x0,imm,x0就可以将额外信息存储在立即数imm中。而x86架构可以用prefetch指令,prefetch addr可以将信息存储在addr中。而这些指令都不会改变处理器的寄存器和运算单元状态,不影响程序执行。
作为标签的NOP指令中的信息则与间接分支指令源地址匹配。图2为本发明实施例提供的间接分支指令跳转示意图,如图2所示,间接分支指令的源地址为0xa,静态分析获取到存在合法的目标指令insB,则在insB前插入NOP指令,作为可选实施例,NOP指令中的信息为0xa的低位(具体位数根据安全需要和NOP指令中能存储的信息位数综合决定),这样作为标签的NOP指令则与间接分支指令的源地址一致,构造了匹配的标签。间接分支指令执行时,验证标签的匹配关系,验证一致性通过后,便可跳转执行NOP指令的后续指令,并确保系统安全性。
本发明实施例的控制流完整性保护方法,每个合法目标地址前插入带有标签信息的NOP指令,可以对不同间接转移的合法目的地址进行区分,实现了细粒度的控制流完整性保护;通过NOP指令实现,硬件开销小,不影响性能,并且具有较好的兼容性。通过验证NOP指令中的标签信息和间接分支指令的源地址一致,实现了可靠的控制流完整性保护。
基于上述实施例的内容,作为一种可选实施例,将对应的间接分支指令的跳转目标地址,指向NOP指令所在地址之后,还包括:若检测到间接分支指令执行,跳转至对应的目标地址,并检查跳转后的指令是否为NOP指令;若为NOP指令,则判断NOP指令中的标签信息是否与间接分支指令的源地址一致,若一致,则执行跳转后的指令。
在程序运行时,可由处理器自动进行检查,减小性能开销。当执行到间接分支指令时,处理器会记录下一条指令需要进行检查,并记录现在间接分支指令的源地址,当跳转到目标指令时,处理器则会开始进行检查。
首先检查该指令必须是作为标签的NOP指令的格式,表明这是一个标记的间接目标,否则说明存在攻击。然后对NOP指令内的信息进行比对,比对该信息中的标签与之前的间接分支指令所在源地址是否相匹配。如果两者一致,则说明这是合法的程序控制流转移;如果不一致,则说明存在攻击,警告并终止程序运行。如图2,当执行到0xa处的间接分支指令时,处理器记录需要进行cfi检查,并记录现在的地址0xa,跳转到目标指令后,首先处理器检查这条指令必须是一条NOP指令,然后再对NOP中的信息与0xa比较,两者必须一致才是合法的。
本发明实施例的控制流完整性保护方法,通过判断NOP指令中的标签信息是否与间接分支指令的源地址一致,能够有效确保间接分支指令的可靠性,从而实现细粒度控制流完整性保护。
基于上述实施例的内容,作为一种可选实施例,在每个合法目标地址前插入带有标签信息的NOP指令,并将对应的间接分支指令的跳转目标地址,指向NOP指令所在地址,包括:若有多个间接分支指令需跳转至同一目标地址,则在目标地址前依次插入与每个间接分支指令对应的带有标签信息的NOP指令,并将每一间接分支指令的跳转目标地址,分别指向对应的NOP指令所在地址。
目前的CFI技术对等价边情况(即单个目标地址对应多个跳转源地址)没有很好的解决方法,而本发明实施例中,只需要在目标指令前对每个合法源间接分支指令都插入对应的nop指令即可。即多个间接分支指令都可以跳转到同一个合法目标地址,只需要在该目标地址前插入多条nop指令,每条nop的信息与每个对应的间接分支指令所在地址对应即可。作为标签的nop指令执行后并不会影响程序正常执行,因而很好地解决了等价边问题。
基于上述实施例的内容,作为一种可选实施例,标签信息,根据间接分支指令所在源地址的低位确定,相应地,验证NOP指令中的标签信息和间接分支指令的源地址一致,具体为:验证NOP指令的标签信息,与间接分支指令源地址的低位是否一致。
具体位数根据安全需要和NOP指令中能存储的信息位数综合决定,在具体实施过程中,可根据间接分支指令所在源地址的低位确定。相应地,验证NOP指令的标签信息,与间接分支指令源地址的低位是否一致,具体为:根据NOP指令的标签信息解出间接分支指令源地址的低位,若解析出的低位与跳转的间接分支指令所在源地址的低位一致,则NOP指令的标签信息,与间接分支指令源地址的低位一致。
图3为本发明实施例提供的控制流完整性保护装置结构图,如图3所示,该控制流完整性保护装置包括:跳转关系获取模块301和NOP指令生成模块302。其中,跳转关系获取模块301用于获取待保护程序的控制流图,确定所有间接分支指令和对应的合法目标地址;NOP指令生成模块302用于在每个合法目标地址前插入带有标签信息的NOP指令,并将对应的间接分支指令的跳转目标地址,指向NOP指令所在地址,标签信息根据间接分支指令所在地址确定;其中,NOP指令,用于间接分支指令执行时,通过验证NOP指令中的标签信息和间接分支指令的源地址一致后,执行跳转后的指令。
本发明实施例提供的控制流完整性保护装置,通过判断NOP指令中的标签信息是否与间接分支指令的源地址一致,能够有效确保间接分支指令的可靠性,从而实现细粒度控制流完整性保护。通过验证NOP指令中的标签信息和间接分支指令的源地址一致,实现了可靠的控制流完整性保护。
基于上述实施例的内容,作为一种可选实施例,该装置还包括:NOP指令验证模块,用于若检测到间接分支指令执行,跳转至对应的目标地址,并检查跳转后的指令是否为NOP指令;地址验证模块,用于若为NOP指令,则判断NOP指令中的标签信息是否与间接分支指令的源地址一致,若一致,则执行跳转后的指令。
基于上述实施例的内容,作为一种可选实施例,NOP指令生成模块还用于:若有多个间接分支指令需跳转至同一目标地址,则在目标地址前依次插入与每个间接分支指令对应的带有标签信息的NOP指令,并将每一间接分支指令的跳转目标地址,分别指向对应的NOP指令所在地址。
基于上述实施例的内容,作为一种可选实施例,标签信息,根据间接分支指令所在源地址的低位确定,相应地,验证NOP指令中的标签信息和间接分支指令的源地址一致,具体为:验证NOP指令的标签信息,与间接分支指令源地址的低位是否一致。
本发明实施例提供的装置实施例是为了实现上述各方法实施例的,具体流程和详细内容请参照上述方法实施例,此处不再赘述。
图4为本发明实施例提供的一种电子设备的实体结构示意图,如图4所示,该电子设备可以包括:处理器(processor)401、通信接口(Communications Interface)402、存储器(memory)403和总线404,其中,处理器401,通信接口402,存储器403通过总线404完成相互间的通信。通信接口402可以用于电子设备的信息传输。处理器401可以调用存储器403中的逻辑指令,以执行包括如下的方法:获取待保护程序的控制流图,确定所有间接分支指令和对应的合法目标地址;在每个合法目标地址前插入带有标签信息的NOP指令,并将对应的间接分支指令的跳转目标地址,指向NOP指令所在地址,标签信息根据间接分支指令所在地址确定;其中,NOP指令,用于间接分支指令执行时,通过验证NOP指令中的标签信息和间接分支指令的源地址一致后,执行跳转后的指令。
此外,上述的存储器403中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明上述各方法实施例的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的传输方法,例如包括:获取待保护程序的控制流图,确定所有间接分支指令和对应的合法目标地址;在每个合法目标地址前插入带有标签信息的NOP指令,并将对应的间接分支指令的跳转目标地址,指向NOP指令所在地址,标签信息根据间接分支指令所在地址确定;其中,NOP指令,用于间接分支指令执行时,通过验证NOP指令中的标签信息和间接分支指令的源地址一致后,执行跳转后的指令。
以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种控制流完整性保护方法,其特征在于,包括:
获取待保护程序的控制流图,确定所有间接分支指令和对应的合法目标地址;
在每个合法目标地址前插入带有标签信息的NOP指令,并将对应的间接分支指令的跳转目标地址,指向NOP指令所在地址,所述标签信息根据间接分支指令所在地址确定;
其中,所述NOP指令,用于间接分支指令执行时,通过验证NOP指令中的标签信息和间接分支指令的源地址一致后,执行跳转后的指令。
2.根据权利要求1所述的控制流完整性保护方法,其特征在于,所述将对应的间接分支指令的跳转目标地址,指向NOP指令所在地址之后,还包括:
若检测到间接分支指令执行,跳转至对应的目标地址,并检查跳转后的指令是否为NOP指令;
若为NOP指令,则判断NOP指令中的标签信息是否与间接分支指令的源地址一致,若一致,则执行跳转后的指令。
3.根据权利要求1所述的控制流完整性保护方法,其特征在于,所述在每个合法目标地址前插入带有标签信息的NOP指令,并将对应的间接分支指令的跳转目标地址,指向NOP指令所在地址,包括:
若有多个间接分支指令需跳转至同一目标地址,则在目标地址前依次插入与每个间接分支指令对应的带有标签信息的NOP指令,并将每一间接分支指令的跳转目标地址,分别指向对应的NOP指令所在地址。
4.根据权利要求1所述的控制流完整性保护方法,其特征在于,所述标签信息,根据间接分支指令所在源地址的低位确定,相应地,所述验证NOP指令中的标签信息和间接分支指令的源地址一致,具体为:
验证NOP指令的标签信息,与间接分支指令源地址的低位是否一致。
5.一种控制流完整性保护装置,其特征在于,包括:
跳转关系获取模块,用于获取待保护程序的控制流图,确定所有间接分支指令和对应的合法目标地址;
NOP指令生成模块,用于在每个合法目标地址前插入带有标签信息的NOP指令,并将对应的间接分支指令的跳转目标地址,指向NOP指令所在地址,所述标签信息根据间接分支指令所在地址确定;
其中,所述NOP指令,用于间接分支指令执行时,通过验证NOP指令中的标签信息和间接分支指令的源地址一致后,执行跳转后的指令。
6.根据权利要求5所述的控制流完整性保护装置,其特征在于,还包括:
NOP指令验证模块,用于若检测到间接分支指令执行,跳转至对应的目标地址,并检查跳转后的指令是否为NOP指令;
地址验证模块,用于若为NOP指令,则判断NOP指令中的标签信息是否与间接分支指令的源地址一致,若一致,则执行跳转后的指令。
7.根据权利要求5所述的控制流完整性保护装置,其特征在于,所述NOP指令生成模块还用于:
若有多个间接分支指令需跳转至同一目标地址,则在目标地址前依次插入与每个间接分支指令对应的带有标签信息的NOP指令,并将每一间接分支指令的跳转目标地址,分别指向对应的NOP指令所在地址。
8.根据权利要求5所述的控制流完整性保护装置,其特征在于,所述标签信息,根据间接分支指令所在源地址的低位确定,相应地,所述验证NOP指令中的标签信息和间接分支指令的源地址一致,具体为:
验证NOP指令的标签信息,与间接分支指令源地址的低位是否一致。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至4任一项所述控制流完整性保护方法的步骤。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至4任一项所述控制流完整性保护方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010611766.9A CN111898120B (zh) | 2020-06-29 | 2020-06-29 | 控制流完整性保护方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010611766.9A CN111898120B (zh) | 2020-06-29 | 2020-06-29 | 控制流完整性保护方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111898120A true CN111898120A (zh) | 2020-11-06 |
CN111898120B CN111898120B (zh) | 2023-10-10 |
Family
ID=73207304
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010611766.9A Active CN111898120B (zh) | 2020-06-29 | 2020-06-29 | 控制流完整性保护方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111898120B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112966258A (zh) * | 2021-03-22 | 2021-06-15 | 西安电子科技大学 | 控制流完整性保护方法、系统、装置及可读存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005196729A (ja) * | 2003-12-10 | 2005-07-21 | Renesas Technology Corp | コンパイラおよび命令コード出力装置 |
CN101946232A (zh) * | 2008-03-17 | 2011-01-12 | 飞思卡尔半导体公司 | 基于地址的条件调试指令的认定 |
CN103116485A (zh) * | 2013-01-30 | 2013-05-22 | 西安电子科技大学 | 一种基于超长指令字专用指令集处理器的汇编器设计方法 |
CN103218206A (zh) * | 2012-01-18 | 2013-07-24 | 上海算芯微电子有限公司 | 指令分支的预跳转方法和系统 |
KR20150078806A (ko) * | 2013-12-31 | 2015-07-08 | 고려대학교 산학협력단 | 프로그램의 간접 분기 모니터링 방법 및 시스템 |
CN109508536A (zh) * | 2017-09-15 | 2019-03-22 | 华为技术有限公司 | 一种篡改程序流攻击的检测方法和装置 |
CN109643345A (zh) * | 2016-09-27 | 2019-04-16 | 英特尔公司 | 用于确定性代码流完整性保护的技术 |
-
2020
- 2020-06-29 CN CN202010611766.9A patent/CN111898120B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005196729A (ja) * | 2003-12-10 | 2005-07-21 | Renesas Technology Corp | コンパイラおよび命令コード出力装置 |
CN101946232A (zh) * | 2008-03-17 | 2011-01-12 | 飞思卡尔半导体公司 | 基于地址的条件调试指令的认定 |
CN103218206A (zh) * | 2012-01-18 | 2013-07-24 | 上海算芯微电子有限公司 | 指令分支的预跳转方法和系统 |
CN103116485A (zh) * | 2013-01-30 | 2013-05-22 | 西安电子科技大学 | 一种基于超长指令字专用指令集处理器的汇编器设计方法 |
KR20150078806A (ko) * | 2013-12-31 | 2015-07-08 | 고려대학교 산학협력단 | 프로그램의 간접 분기 모니터링 방법 및 시스템 |
CN109643345A (zh) * | 2016-09-27 | 2019-04-16 | 英特尔公司 | 用于确定性代码流完整性保护的技术 |
CN109508536A (zh) * | 2017-09-15 | 2019-03-22 | 华为技术有限公司 | 一种篡改程序流攻击的检测方法和装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112966258A (zh) * | 2021-03-22 | 2021-06-15 | 西安电子科技大学 | 控制流完整性保护方法、系统、装置及可读存储介质 |
CN112966258B (zh) * | 2021-03-22 | 2022-12-30 | 西安电子科技大学 | 控制流完整性保护方法、系统、装置及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111898120B (zh) | 2023-10-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109643345B (zh) | 用于确定性代码流完整性保护的技术 | |
EP3069254B1 (en) | Improved control flow integrity system and method | |
KR100942795B1 (ko) | 악성프로그램 탐지장치 및 그 방법 | |
EP3574426B1 (en) | Method to secure a software code | |
Kong et al. | Improving software security via runtime instruction-level taint checking | |
WO2018063756A1 (en) | System, apparatus and method for performing on-demand binary analysis for detecting code reuse attacks | |
US20160171213A1 (en) | Apparatus and method for controlling instruction execution to prevent illegal accesses to a computer | |
Danger et al. | CCFI-cache: A transparent and flexible hardware protection for code and control-flow integrity | |
CN111898120B (zh) | 控制流完整性保护方法及装置 | |
CN111898130B (zh) | 一种细粒度控制流完整性保护实现方法及系统 | |
US11256786B2 (en) | Method to secure a software code | |
US20240012886A1 (en) | Code flow protection with error propagation | |
CN111898119B (zh) | 控制流完整性保护方法、装置、设备及存储介质 | |
CN114981811A (zh) | 用于软件安全的装置和方法 | |
CN114707143B (zh) | 内存数据损坏攻击的监测方法和装置 | |
Wang et al. | IRePf: An Instruction Reorganization Virtual Platform for Kernel Stack Overflow Detection | |
US20220092171A1 (en) | Malicious code protection for computer systems based on system call table modification and runtime application patching | |
Zou et al. | Identify stack overflow exploits with dynamic binary instrumentation | |
CN118246007A (zh) | 一种基于内存标记扩展的eBPF程序隔离方法 | |
Fei et al. | Security in embedded systems | |
CN115982028A (zh) | 一种数据流完整性检测方法、装置、设备及介质 | |
Priya et al. | Reduction of code reuse attacks using code randomization and recursive traversal algorithm |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |