对返回导向的编程攻击的检测的制作方法

文档序号:8367479阅读:282来源:国知局
对返回导向的编程攻击的检测的制作方法
【专利说明】对返回导向的编程攻击的检测
【背景技术】
[0001] 各实施例一般涉及计算机安全。
[0002] 计算机开发是可以被用来损害计算机系统或数据的安全性的技术。这样的开发可 以利用计算机系统的漏洞,以便导致在计算机系统上发生非希望的或料想不到的行为。例 如,返回导向的编程(ROP)开发可以涉及标识在可执行的存储器中已经可用的并且后面跟 随返回指令(例如,RET指令)的代码片断系列(例如,现有的库代码的某些部分)。可以 通过将一系列指针值推到调用栈中,然后,哄骗代码执行第一指针值,将这样的片断链接到 所希望的执行序列。此链接的执行序列不遵循原始程序作者预期的程序执行顺序,相反,可 以遵循替换的执行序列。如此,攻击者可以创建虚拟程序序列,而不要求注入外部代码。 附图简述
[0003] 图1A-1B是根据一个或多个实施例的系统的框图。
[0004] 图2是根据一个或多个实施例的序列。
[0005] 图3A-3E是根据一个或多个实施例的序列。
[0006] 图4是根据本发明的实施例的处理器的框图。
[0007] 图5是根据本发明的另一实施例的多域处理器的框图。
[0008] 图6是包括多个核的处理器的实施例的框图。
[0009] 图7是根据本发明的实施例的系统的框图。 详细描述
[0010] 根据一些实施例,可以提供对返回导向的编程(ROP)攻击的检测。在一个或多个 实施例中,可以基于ROP度量(例如,指出系统处于当前ROP攻击下的可能性的度量)来检 测ROP攻击。在某些实施例中,至少部分地基于控制转移事件,与ROP攻击相关联的指令和 /或状态的平均实例,生成ROP度量。例如,在某些实施例中,控制转移事件可以包括诸如子 例程调用指令、子例程返回指令,分支或跳转指令等控制转移指令的实例。进一步,在某些 实施例中,控制转移事件可以包括相关联的指令对(即,在彼此的给定范围内执行的特定 类型的指令)。此外,在某些实施例中,控制转移事件还可以包括分支或返回误预测。
[0011] 参考图1A,所示是根据一个或多个实施例的系统100的框图。如图IA所示,系统 100可以包括处理器110和存储器120。根据一些实施例,系统100可以是任何电子设备中 的全部或一部分,诸如蜂窝电话、计算机、媒体播放器、网络设备等等。
[0012] 根据一些实施例,存储器120可以包括操作系统(OS) 122和保护软件124。在某些 实施例中,操作OS 122和/或保护软件124可以包括保护系统100防止计算机开发和攻击 的功能。例如,保护软件124可以是反病毒应用、入侵检测器、网络防火墙等等。
[0013] 如图所示,在某些实施例中,处理器110可以包括指令控制逻辑130和ROP检测逻 辑140。在一个或多个实施例中,指令控制逻辑130可以包括管理和/或优化处理器110的 性能特征的功能。例如,指令控制逻辑130可以包括用于性能分析、日志记录、预获取、分支 预测、调节等等的功能。进一步,在某些实施例中,ROP检测逻辑140可以包括检测针对系 统100的ROP攻击的功能。下面将参考图1B、2以及3A-3E进一步描述ROP检测逻辑140 的此功能。
[0014] 在一个或多个实施例中,ROP检测逻辑140可以以硬件、软件和/或固件中的任何 形式来实现。例如,ROP检测逻辑140可以以微代码、可编程逻辑、硬编码的逻辑、控制逻辑、 指令集架构、处理器抽象层等等来实现。进一步,ROP检测逻辑140可以在处理器110内, 和/或在可被处理器110访问的任何其他组件或可由处理器110读取的介质(诸如存储器 120)内实现。尽管被示为图IA的实施例中的特定实现,但是,此处所讨论的各实施例的范 围在这方面不受限制。
[0015] 现在参考图1B,所示是根据一个或多个实施例的指令控制逻辑130和ROP检测逻 辑140的框图。如图所示,在某些实施例中,指令控制逻辑130可以包括指令缓冲器132、指 令检测器134、返回栈缓冲区136、分支预测单元137,以及分支指令日志138。
[0016] 在一个或多个实施例中,指令缓冲器132可以是包括对应于在处理器110中处理 的指令的条目的缓冲器。例如,在某些实施例中,指令缓冲器132可以指令引退缓冲器。在 这样的实施例中,随着每一指令完成,从指令缓冲器132中清除对应的条目。这样的指令可 以包括,例如,子例程调用指令(例如,CALL)、子例程返回指令(例如,RET)、分支或跳转指 令(例如,IF-THEN,JMP,GOTO),栈指令(例如,PUSH、P0P)等等。
[0017] 在一个或多个实施例中,指令检测器134包括检测指令缓冲器132的对应于与ROP 攻击相关联的控制转移指令的条目的功能。例如,在某些实施例中,指令检测器134可以检 测对应于子例程调用指令、子例程返回指令、分支或跳转指令、栈指令等等的条目。进一步, 响应于检测到这样的条目,指令检测器134可以向ROP检测逻辑140发送检测信号。在某 些实施例中,检测信号可以指出检测到的指令的类型。
[0018] 在一个或多个实施例中,返回栈缓冲器136存储返回指针,用于处理器110的性能 优化(即,返回预测)。例如,当在程序中执行对子例程的调用时,指令控制逻辑130可以预 测随后将执行来自子例程的对应的返回。相应地,在某些实施例中,返回指针可以被推到返 回栈缓冲器136中,以期待执行预测的返回指令。
[0019] 根据一些实施例,分支预测单元137包括预测由处理器110执行的分支的未来方 向的功能。在某些实施例中,由分支预测单元137所提供的预测可以被用来获取指令,以便 它们可以准备好用于执行和/或推理性地执行,由此,节省当采取分支时获取指令所需的 某些时间。在一个或多个实施例中,分支预测单元137可以包括标识正确的和不正确的分 支预测的功能。例如,分支预测单元137可以标识所有不正确地预测的分支,和/或可以标 识特定类型的分支误预测,诸如误预测的间接分支(即,其中分支目标被保存在寄存器或 存储器中的分支),误预测的远分支指令(即,执行也涉及改变代码段的控制转移的分支) 等等。
[0020] 根据一些实施例,分支指令日志138可以存储给定数量的最近分支相关的指令的 地址信息。例如,在某些实施例中,分支指令日志138可以存储在处理器110中处理的最后 十六个分支相关的指令(包括调用和返回指令)的源和目的地地址。分支指令日志138的 这样的功能可以用于调试目的,并可以被称为最后分支记录(LBR)功能。
[0021] 在某些实施例中,分支指令日志138可以包括有选择地冻结其内容的功能,意味 着,在特定的时间点停止更新存储的地址信息,不管随后是否执行了任何新的分支相关的 指令。在一个或多个实施例中,可以基于从ROP检测逻辑140接收到的信号,触发冻结功能。
[0022] 如图所示,在某些实施例中,ROP检测逻辑140包括累加器142、比较器144、偏置 逻辑146以及控制逻辑148。在一个或多个实施例中,累加器142包括基于在定义的窗口期 间发生的控制转移事件,生成计数的功能。具体而言,在某些实施例中,累加器142可以响 应于检测到控制转移指令(例如,调用或返回指令分支或跳转指令等等)的实例和/或控 制转移指令的误预测,递增或递减计数器。例如,在某些实施例中,累加器142可以响应于 检测到与从调用栈弹出(即,删除)指令返回指针值相关联的控制转移指令(例如,返回指 令),递增计数器。进一步,在某些实施例中,累加器142可以响应于检测到与向调用栈推 (即,存储)指令返回指针值相关联的控制转移指令(例如,调用指令),递减计数器。
[0023] 在一个或多个实施例中,累加器142可以使用指令检测器134检测控制转移指令 的实例。例如,累加器142可以响应于接收到指出检测到返回指令的检测信号,递增计数 器。进一步,在某些实施例中,累加器142可以响应于接收到指出检测到调用指令的检测信 号,递减计数器。注意,在正常操作中(即,当不处于ROP攻击中时),通常,调用指令后跟随 一些指令,然后是对应的返回指令。相应地,在正常操作中,计数器增大一般被计数器减小 平衡,如此,计数器将保持在零值周围的特定范围内。然而,在ROP攻击的情况下,返回指令 的数量可以显著地超出调用指令的数量(被称为返回-调用不平衡)。因此,在ROP攻击 下,计数器可以增大到超过零值周围的特定范围。如此,在此示例中,计数器值可以被用作 ROP度量。
[0024] 在一个或多个实施例中,累加器142可以与返回栈缓冲器136进行交互,以检测返 回预测和/或误预测,基于这样的检测,递增/递减计数。例如,在某些实施例中,累加器 142响应于检测到误预测的返回指令,递增计数器。进一步,在某些实施例中,累加器142响 应于检测到正确地预测的返回指令,递减计数器。
[0025] 在一个或多个实施例中,累加器142可以与分支预测单元137进行交互,以检测分 支预测和/或误预测,基于这样的检测,递增/递减计数。例如,在某些实施例中,累加器 142可响应于检测到任何误预测的分支指令,递增计数器。进一步,在某些实施例中,累加 器142可响应于检测到任何正确地预测的分支指令,递减计数器。在另一个示例中,在某些 实施例中,累加器142可以响应于检测到特定类型的误预测的分支(例如,误预测的间接分 支,误预测的远分支等等),递增计数器。
[0026] 在一个或多个实施例中,累加器142还可以检测栈枢轴(stack pivot)的实例(例 如,与将栈指针移动到新的存储器位置的指令相关联的返回指令)。进一步,响应于检测到 栈枢轴,累加器142可以将计数器递增若干量(例如,1,2, 5,等等)。
[0027] 在一个或多个实施例中,累加器142可以基于多种类型的控制转移事件(例如,调 用指令、返回指令、误预测等等),调整单一计数器。进一步,在某些实施例中,累加器142可 以包括单独的计数器,每一计数器都对应于不同类型的控制转移事件。可另选地,在某些实 施例中,ROP检测逻辑140包括多个累加器142,每一累加器142都对应于不同类型的控制 转移事件。
[0028] 在一个或多个实施例中,累加器142可以仅限于预定义的窗口。例如,在处理器 110中处理特定数量的(例如,10,100,1000,等等)指令之后,累加器142可以复位计数。 在另一个示例中,累加器142可以是存储给定数量的指令的环形缓冲器。在再一个示例中, 累加器142可以在给定时段(例如,1毫秒、1秒、1分钟等等)已经过期之后复位计数。在 这样的实施例中,计数器可以反映在预定义的窗口内发生的返回-调用不平衡(例如,比在 1000个指令的窗口期间处理的调用指令多十个返回指令)。在
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1