【技术实现步骤摘要】
控制流完整性保护方法及装置
本专利技术涉及计算机领域,尤其涉及一种控制流完整性保护方法及装置。
技术介绍
内存漏洞是指程序员在软件编写的过程中,对内存的操作上有时间上或者空间上的设计失误,产生使得程序可能做出违反程序本身设计的行为的问题。攻击者利用程序的内存漏洞,可以构造出各种攻击,执行恶意行为。由于冯诺依曼结构将指令也作为数据存在内存中执行,所以早期攻击者会将恶意代码作为数据注入内存,然后劫持控制流执行注入的恶意代码。例如一条间接分支指令jmprax,如果攻击者通过内存漏洞控制了rax寄存器的值,那么就可以通过rax的值使间接分支指令的跳转目标指向已经注入的恶意代码,实现控制流劫持,实现恶意攻击。现在的操作系统普遍采用了不可执行位技术,即标记每个内存页是可读,可写还是可执行。程序的代码段会被标记为可执行但不可写,而数据段则会被标记为不可执行。这样攻击者的恶意代码由于是作为数据注入内存的,所以被标记为不可执行,当攻击者试图执行恶意代码时则会因违法内存页标记报错。为了绕过不可执行位保护技术,研究者提出了 ...
【技术保护点】
1.一种控制流完整性保护方法,其特征在于,包括:/n获取待保护程序的控制流图,确定所有间接分支指令和对应的合法目标地址;/n在每个合法目标地址前插入带有标签信息的NOP指令,并将对应的间接分支指令的跳转目标地址,指向NOP指令所在地址,所述标签信息根据间接分支指令所在地址确定;/n其中,所述NOP指令,用于间接分支指令执行时,通过验证NOP指令中的标签信息和间接分支指令的源地址一致后,执行跳转后的指令。/n
【技术特征摘要】
1.一种控制流完整性保护方法,其特征在于,包括:
获取待保护程序的控制流图,确定所有间接分支指令和对应的合法目标地址;
在每个合法目标地址前插入带有标签信息的NOP指令,并将对应的间接分支指令的跳转目标地址,指向NOP指令所在地址,所述标签信息根据间接分支指令所在地址确定;
其中,所述NOP指令,用于间接分支指令执行时,通过验证NOP指令中的标签信息和间接分支指令的源地址一致后,执行跳转后的指令。
2.根据权利要求1所述的控制流完整性保护方法,其特征在于,所述将对应的间接分支指令的跳转目标地址,指向NOP指令所在地址之后,还包括:
若检测到间接分支指令执行,跳转至对应的目标地址,并检查跳转后的指令是否为NOP指令;
若为NOP指令,则判断NOP指令中的标签信息是否与间接分支指令的源地址一致,若一致,则执行跳转后的指令。
3.根据权利要求1所述的控制流完整性保护方法,其特征在于,所述在每个合法目标地址前插入带有标签信息的NOP指令,并将对应的间接分支指令的跳转目标地址,指向NOP指令所在地址,包括:
若有多个间接分支指令需跳转至同一目标地址,则在目标地址前依次插入与每个间接分支指令对应的带有标签信息的NOP指令,并将每一间接分支指令的跳转目标地址,分别指向对应的NOP指令所在地址。
4.根据权利要求1所述的控制流完整性保护方法,其特征在于,所述标签信息,根据间接分支指令所在源地址的低位确定,相应地,所述验证NOP指令中的标签信息和间接分支指令的源地址一致,具体为:
验证NOP指令的标签信息,与间接分支指令源地址的低位是否一致。
5.一种控制流完整性保护装置,其特征在于,包括:
跳转关系获取模块,用于获取待保护程序的控制流图,确定所有间接分支指令和对应的合法目标地...
【专利技术属性】
技术研发人员:陈李维,佘才睿,李锦峰,史岗,孟丹,
申请(专利权)人:中国科学院信息工程研究所,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。