当前位置: 首页 > 专利查询>英特尔公司专利>正文

返回控制转移指令制造技术

技术编号:15193665 阅读:75 留言:0更新日期:2017-04-20 14:39
在实施例中,本发明专利技术包括具有解码单元和执行单元的处理器。解码单元用于解码控制转移指令,以及执行单元用于执行控制转移指令,控制转移指令包括调用指令和返回指令。处理器用于在第一模式中操作,其中,若在返回指令之后将被立即执行的下一指令不是调用指令,则处理器将引发故障。

【技术实现步骤摘要】
【国外来华专利技术】
技术介绍
返回导向编程(ROP)是计算机安全开发技术,其中,攻击者使用调用堆栈的软件控制来执行攻击者选择的机器指令序列。这些指令的群集在现有程序代码中通常以程序员预期或非预期的返回(RET)指令结束。预期或非预期的RET指令将执行转移到堆栈上攻击者选择的返回地址,并允许攻击者通过程序代码来保持执行控制,并将执行引导至指令的下一组所选的序列以实现攻击者的意图。攻击者选择的指令序列的群集被称为小工具。一些小工具可由攻击者在被编译成程序或函数库的函数中发现,另一些小工具仅是解码成小工具的任意字节序列。通常,所执行的小工具仅包括数个汇编指令,后跟可执行明确定义的操作的RET指令。通过将一组这些小工具链接在一起,以便来自一个小工具的RET指令加载到下一小工具中,以此类推,恶意软件作者能够在未向程序注入任何代码的情况下,执行较长攻击者期望的指令序列。ROP技术使用诸如堆栈缓冲溢出之类的漏洞来传递包括指向小工具的指针链表的有效载荷,然后重写被用于执行堆栈缓冲溢出的函数的返回地址以指向序列中的第一个小工具。当该函数执行RET指令时,控制转移到第一个小工具而不是函数调用者。该小工具然后可消耗来自堆栈上的有效载荷的一个或多个数据元素。使用该开发技术,恶意软件作者可改变程序的控制流,并引起到程序中的非程序员预期的地址(例如,到指令的中间)的控制转移。附图说明图1是根据本专利技术的实施例的处理器的一部分的框图;图2是根据本专利技术的实施例的状态机的框图;图3是根据本专利技术的实施例的方法的流程图;图4是根据本专利技术的一个实施例的处理器核心的框图;图5是根据本专利技术的实施例的多核心处理器的框图;图6是根据本专利技术的实施例的包括多个核心的处理器的实施例;图7是根据本专利技术的实施例的系统的框图。具体实施方式本专利技术的实施例提供能够确定返回(RET)指令是否正返回到调用(CALL)指令,并且若不是,则采取措施以防止超出返回指令的指令被提交到处理器的架构状态的处理器。以这种方式,程序中至少某些非预期的控制转移可被消除,限制了恶意程序作者可以使用的小工具的数目。更具体地,实施例可提供处理器模式,其中,返回指令可配备状态机以便硬件可强制返回指令仅返回到调用(CALL)指令。该控制流强制可减少程序中恶意小工具的漏洞。本专利技术的实施例可被期望在不要求所保护的代码被重新编译的情况下来防止ROP攻击。本专利技术的实施例可特别地适用于移动的和其他便携式低功率系统,因为用于减轻ROP的仅软件的技术(例如,通过使用功能上等价但更大更复杂的序列来重写二进制信息以移除RET的所有实例)通常导致大得多的二进制信息并增加程序的执行时间,因此不适用于功率效率是主要关注的移动应用。本专利技术的实施例还可被期望避免使用可能导致误报的CALL/RET计数器、统计、和/或启发式算法。随着更多的计算机系统被用在互联网、文本、以及多媒体应用中,额外的处理器支持已随时间被引入。在一个实施例中,指令集可以与一个或多个计算机架构相关联,该一个或多个计算机架构包括数据类型、指令、寄存器架构、寻址模式、存储器架构、中断和异常处理、以及外部输入和输出(I/O)。在实施例中,指令集架构(ISA)可通过一个或多个微架构来实现,该一个或多个微架构包括用于实现一个或多个指令集的处理器逻辑和电路。因此,具有不同微架构的处理器可共享公共指令集的至少一部分。例如,来自加利福尼亚州圣克拉拉的因特尔公司的奔腾4处理器、CoreTM、以及AtomTM处理器,以及实现几乎相同版本的x86指令集(具有已被添加更新版本的某些扩展)但具有不同的内部设计、来自加利福尼亚州森尼韦尔的超微半导体公司的处理器。类似地,其他处理器开发公司(例如,ARM控股有限公司、MIPS、或它们的被许可方或采用者)所设计的处理器可共享公共指令集的至少一部分,但可包括不同的处理器设计。例如,ISA的相同寄存器架构可使用新的或公知的技术在不同的微架构中以不同的方式来实现,包括专用物理寄存器、使用寄存器重命名机制(例如,使用寄存器别名表(RAT)、重新排序缓冲器(ROB)以及引退寄存器文件)的一个或多个动态分配的物理寄存器。在一个实施例中,寄存器可包括一个或多个寄存器、寄存器架构、寄存器文件、或软件程序员可寻址的或不可寻址的其他寄存器组。指令可包括一个或多个指令格式。这类指令格式可指示将指定的各个字段(位的数目、位的位置等)、以及将被执行的操作和该操作将在其上被执行的(一个或多个)操作数。某些指令格式可通过指令模板(或子格式)来进一步间断地定义。例如,给定指令格式的指令模板可被定义为具有指令格式的字段的不同子集和/或被定义为具有被不同地解释的给定字段。在一个实施例中,指令使用指令格式(若被定义,并在该指令格式的指令模板的给定的一个指令模板中)被表达,并指定或指示操作以及操作将在其上操作的操作数。在实施例中,ISA可包括第一控制转移指令(在本文被称为CALL指令),该第一控制转移指令用于通过使得执行CALL的处理器执行不同于顺序地(例如,以地址顺序)跟随第一程序中的CALL的下一指令的指令,来将控制从第一程序、过程、函数、例程、模块、或其他组代码或指令(通常将被称为程序)转移到第二程序。通常,处理器的执行控制将在处理器执行进行调用的第二程序部分之后,返回到调用程序。为了提供返回到调用程序的执行控制,CALL的执行可包括将下一指令的地址推送到、写入、或存储在调用堆栈或处理器可访问的其他数据结构上。然后,第二控制转移指令(在本文被称为RET指令)可被第二程序用来在第二程序的期望的部分已被执行之后,将控制转移到第一程序中的该地址。在本专利技术的实施例中,处理器模式(在本文被称为RET_TO_CALL模式)可被提供,其中,CALL指令的行为以及RET指令的行为被修改。当不是处于RET_TO_CALL模式时,CALL指令由处理器的执行包括将顺序地跟随CALL的下一指令的地址推送到堆栈上。当处于RET_TO_CALL模式时,CALL指令由处理器的执行包括将CALL指令的地址推送到堆栈上。当处于RET_TO_CALL模式时,RET指令由处理器的执行包括处理器检查RET指令返回控制的位置是否是有效调用点(例如,包含CALL操作码)。若是,则执行控制被转移到该有效调用点,CALL作为非操作(NOP)指令被执行,以及然后执行控制被转移到顺序地(以地址顺序)跟随CALL的下一指令。若该位置不是有效调用点,则处理器生成控制流违规,因此阻止试图将控制返回到不是紧随有效调用点的指令的小工具的执行。在实施例中,结合执行RET指令并将控制返回到有效调用点的处理器,基于软件的策略检查可被用于将RET指令匹配到调用点,例如,检查调用点是执行控制从其被转移到通向该特定RET指令的指令序列的特定调用点。现在参考图1,示出的是根据本专利技术的实施例的处理器的一部分的框图。如图1所示,处理器的部分100包括诸如顺序或乱序处理器之类的流水线处理器的各个部分。如所看出的,可以是给定ISA的宏指令的输入指令被提供给解码单元110,该解码单元110被配置为将指令解码为,例如,一个或多个较小的指令,例如,微操作(μop)。如所看出的,解码单元110根据本专利技术的实施例包括CTI逻辑115。通常,CTI逻辑115可分析本文档来自技高网...
<a href="http://www.xjishu.com/zhuanli/55/201580041757.html" title="返回控制转移指令原文来自X技术">返回控制转移指令</a>

【技术保护点】
一种处理器,包括:解码单元,所述解码单元用于解码多个控制转移指令,所述多个控制转移指令包括调用指令和返回指令;以及执行单元,所述执行单元用于执行所述多个控制转移指令;其中,所述处理器用于在第一模式中操作,其中,若在所述返回指令之后将被立即执行的下一指令不是所述调用指令,则所述处理器将引发故障。

【技术特征摘要】
【国外来华专利技术】2014.09.12 US 14/484,7511.一种处理器,包括:解码单元,所述解码单元用于解码多个控制转移指令,所述多个控制转移指令包括调用指令和返回指令;以及执行单元,所述执行单元用于执行所述多个控制转移指令;其中,所述处理器用于在第一模式中操作,其中,若在所述返回指令之后将被立即执行的下一指令不是所述调用指令,则所述处理器将引发故障。2.如权利要求1所述的处理器,其中,在所述第一模式中,所述调用指令的执行包括将所述调用指令的地址推送到堆栈上。3.如权利要求2所述的处理器,其中,所述处理器还用于在第二模式中操作,其中,所述调用指令的执行包括将紧随所述调用指令的指令的地址推送到所述堆栈上。4.如权利要求1所述的处理器,其中,在所述第一模式中,所述返回指令的执行包括,若在所述返回指令之后将被立即执行的下一指令是所述调用指令,则配备状态以使得所述下一指令作为非操作指令被执行。5.如权利要求4所述的处理器,其中,在所述第一模式中,当所述状态被配备时,所述状态响应于通过所述返回指令的执行从所述堆栈弹出所述调用指令而被解除。6.如权利要求4所述的处理器,其中,所述状态结合上下文切换被保存。7.如权利要求4所述的处理器,其中,所述状态结合处理器权限级别的变化被保存。8.一种方法,包括:通过处理器解码返回指令;在第一模式中,通过所述处理器确定紧随所述返回指令之后的下一指令是否不是调用指令;以及响应于在所述第一模式中确定所述下一指令不是调用指令而引发故障。9.如权利要求8所述的方法,还包括:在解码所述返回指令之前,通过所述处理器来解码调用指令;以及在所述第一模式中执行所述调用指令包括将所述调用指令的地址推送到堆栈上。10.如权利要求9所述的方法,还包括在第二模式中执行所述调用指令包括将紧随所述调用指令的指...

【专利技术属性】
技术研发人员:柏居·帕特勒韦德亚斯·尚博格拉维·沙伊塔
申请(专利权)人:英特尔公司
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1