计算机系统中基于处理器跟踪实施的控制流完整性技术方案

技术编号:22174515 阅读:61 留言:0更新日期:2019-09-21 15:10
描述了一种用于执行控制流完整性(control flow integrity,CFI)方法的计算机处理节点,所述方法在所述处理节点上运行的受保护进程上执行。所述CFI方法包括拦截源于在运行时环境中执行的所述受保护进程的执行的系统调用。在计算机系统的内核内运行的快速路径从内核存储器中访问与所述系统调用相对应的处理器跟踪数据包。所述快速路径尝试在所述处理器跟踪数据包与已标记信用的控制流图(control flow graph,CFG)定义内的具有关联信用值的程序控制流(边)条目之间建立匹配关系。所述信用值表示程序控制流的可信度。因此,所述方法还包括:在所述匹配之后,如果所述关联信用值不满足指定阈值,则有条件地调用慢速路径用于进一步处理所述处理器跟踪数据包,否则,提供允许执行所述系统调用的指示。

Control Flow Integrity Based on Processor Tracking Implementation in Computer System

【技术实现步骤摘要】
【国外来华专利技术】计算机系统中基于处理器跟踪实施的控制流完整性相关申请案交叉申请本专利技术要求2017年2月6日递交的第62/455,523号美国临时专利申请案和2018年2月2日递交的第15/887,468号美国专利申请案的在先申请优先权,这两个在先申请的全部内容以及其引用的任何内容以引用的方式并入本文本中。专利申请的
本专利申请大体上涉及计算机系统中的实时/在线网络防御系统领域。更具体地,本专利申请涉及一种包括控制流完整性(controlflowintegrity,CFI)监控能力的计算机系统,该CFI监控能力基于对通过硬件实现的处理器跟踪功能(例如英特尔处理器跟踪)提供的处理器跟踪输出的在线分析。
技术介绍
已经实施了各种网络防御方法来对抗网络攻击。为了应对针对防止代码注入的网络防御,网络攻击者调整了他们的方法来利用/重用现有程序代码。攻击者通过复杂的调用序列以意想不到的方式利用现有代码,而非向程序添加新代码。例如,返回导向编程及其变体通过任意执行现有代码来利用现有程序代码中的弱点。控制流完整性(controlflowintegrity,CFI)作为执行如下操作的一种工具/属性已进入大众视野:利用计算机代码模块之间已知/已建立的控制流调用模式,通过识别/拒绝在计算机代码模块间执行不规范控制流的尝试来识别和对抗基于代码重用的网络攻击。控制流完整性对于网络防御开发者而言并非新概念。然而,通常与执行基于CFI的网络防御相关联的高计算资源开销阻碍了基于CFI的网络防御的使用。高开销和相关联的性能退化导致这种方法对在线/实时处理环境而言不实用。为了在实时处理环境中提供高效的基于CFI的网络防御能力,人们认为必须在以下项之间达成平衡:精确性(即,实施的粒度必须足够精细以尽可能多地消除攻击面);效率(即,必需的运行时开销应很小);以及透明性(即,该方法应该对应用透明,易于在现有OS和硬件上部署,并且与现有安全机制大体兼容)。通过基于硬件的处理器跟踪执行CFI被认为前景广阔。当前,硬件中存在若干控制流跟踪机制。每种形式的基于硬件的CFI实现方式表示精确性、跟踪开销、解码开销和可用过滤机制之间的一组不同权衡结果。分支跟踪存储(BranchTraceStore,BTS)CFI实现方式将每个控制传输事件(例如调用、返回和所有类型的跳转)捕获为存储器驻留BTS缓冲区中的单独记录实例。每个所得记录包含分支指令的源和目标的地址。因此,无需对记录进行解码。然而,BTS在跟踪期间引入了非常高的处理开销,并且由于缺少事件过滤机制而缺乏灵活性。最后分支记录(LastBranchRecord,LBR)CFI实现方式支持事件过滤(例如过滤掉条件分支)。然而,LBR仅将16或32个最近分支对(源和目标)记录到寄存器堆栈中。虽然LBR的跟踪开销非常低,但由于在任何时间点可用于分析的分支对的历史有限,因此它很难提供精确的保护。BTS和LBR可能能防御与返回导向编程类似的攻击,因为它们能够动态跟踪控制流。然而,BTS和LBR需要在产生高开销(例如BTS)和由于不精确跟踪而降低最终安全级别(例如LBR)之间进行权衡。英特尔在英特尔的酷睿M和第五代英特尔酷睿处理器中引入了处理器跟踪功能。这些处理器中都包括具有其自己的IPT硬件的CPU核,IPT硬件会为运行程序生成数据包形式的跟踪信息。处理器跟踪配置操作仅限于使用某些特殊模块寄存器(model-specificregister,MSR)的特权代理(例如操作系统)。跟踪的数据包以压缩形式写入预配置的内存缓冲区中,以最小化输出带宽并减少跟踪开销。软件解码器基于预定义格式对处理器跟踪数据包进行解码。控制代理提供额外的信息,包括程序二进制文件和一些运行时数据,以精确地重构程序流。对踪迹的激进压缩有助于收集更多控制流跟踪信息,包括控制流、执行模式和时序——而所有这些都比BTS产生的跟踪开销少得多。然而,高度编码会导致解码速度比跟踪慢几个数量级。参考下文中的表1,提供了包含9个执行控制流(执行流)的集合和对应的IPT跟踪数据包(若有记录)的示例。表1在上述基于IPT的处理器踪迹生成示例中,仅在非静态已知(例如条件)控制流发生改变时才记录处理器跟踪数据包。当处理器执行无条件直接分支时,不会记录处理器跟踪数据包。参见表1,执行控制流3和8。在记录了条件跟踪数据包的情况下,分支被压缩为一个比特,该比特标识是否满足致使条件分支流被采用的条件。参见表1,执行控制流1(采用了分支)和7(未采用分支)。其它控制流将生成间接分支的目标地址、异常和中断。参见表1,执行控制流2和9(TIP数据包)。在其它控制流示例中,记录包含异步事件执行控制流的源地址的处理器跟踪数据包(例如FUP跟踪数据包)。下文提供的表2列出了流改变指令(changeofflowinstruction,CoFI)类型和IPT提供的对应处理器跟踪输出。表2通过使用基于IPT的处理器跟踪数据包生成规则,针对每个退役指令记录的信息的平均大小小于1比特。此外,IPT输出日志生成配置方案支持基于当前特权级别(currentprivilegelevel,CPL)的事件过滤。例如,可以使用CR3值来配置日志生成,CR3值表示页面目录基址寄存器或某些指令指针(instructionpointer,IP)范围,这两者都可以用于预过滤(和丢弃)处理器跟踪数据包。在IPT提供的相对快速的处理器踪迹生成机制中,与解码记录的处理器跟踪数据包相关联的成本更高。IPT提供的高度编码(但紧凑)的处理器跟踪数据包不完整。因此,当期望/需要重构导致(有问题的)处理器跟踪数据包的程序流时,处理器跟踪数据包的解码器在解码期间将记录的处理器数据包与对应的二进制文件相关联。例如,在从处理器跟踪数据包重构执行控制流期间,IPT解码器库的实现方式使用抽象层指令流,抽象层指令流逐指令解析程序二进制文件,并将跟踪的数据包与解析的二进制指令组合,以进行整体解码。英特尔处理器跟踪数据包生成机制具有若干有益特征,包括:精确跟踪、低跟踪开销和事件过滤。然而,IPT还具有非期望的特征,包括生成的处理器跟踪数据包不完整和随之的解码速度慢。因此,IPT输出本身对性能分析、调谐和软件调试等离线分析很有用。处理器跟踪的IPT方法折衷了不利的慢速解码和期望的处理器跟踪数据包快速生成。IPT在其当前的监控/分析执行控制流的实现方式中依赖于离线重构来获取来自已执行码块的完整控制流信息。专利申请的
技术实现思路
本专利申请实施例提供了一种方法和计算机系统,所述计算机系统包括硬件处理器(例如,包含IPT功能硬件的英特尔处理器)和包含帮助执行所述方法的指令的非瞬时性计算机可读介质。实施例提供了一种技术方案,该技术方案降低了在计算机系统的运行时环境中执行的受保护进程上执行控制流完整性(controlflowintegrity,CFI)实施对内核资源的需求程度。根据第一方面,一实施例提供了一种CFI实施方法,所述方法在计算机系统的运行时环境中执行的受保护进程上执行,所述方法包括:拦截源于在所述运行时环境中执行的所述受保护进程的执行的系统调用;所述计算机系统的内核内的快速路径从内核存储器中访问与所述系统调用相对应的处理器跟踪数据包;所述快速路径将所述处理器本文档来自技高网
...

【技术保护点】
1.一种控制流完整性(control flow integrity,CFI)实施方法,其特征在于,所述方法在计算机系统的运行时环境中执行的受保护进程上执行,所述方法包括:拦截源于在所述运行时环境中执行的所述受保护进程的执行的系统调用;所述计算机系统的内核内的快速路径从内核存储器中访问与所述系统调用相对应的处理器跟踪数据包;所述快速路径将所述处理器跟踪数据包匹配到已标记信用的控制流图(control flow graph,CFG)定义内的程序控制流(边)条目,所述条目具有表示程序控制流的可信度的关联信用值;以及在所述匹配之后,如果所述关联信用值不满足指定阈值,则调用慢速路径用于进一步处理所述处理器跟踪数据包,否则,提供允许执行所述系统调用的指示。

【技术特征摘要】
【国外来华专利技术】2017.02.06 US 62/455,523;2018.02.02 US 15/887,4681.一种控制流完整性(controlflowintegrity,CFI)实施方法,其特征在于,所述方法在计算机系统的运行时环境中执行的受保护进程上执行,所述方法包括:拦截源于在所述运行时环境中执行的所述受保护进程的执行的系统调用;所述计算机系统的内核内的快速路径从内核存储器中访问与所述系统调用相对应的处理器跟踪数据包;所述快速路径将所述处理器跟踪数据包匹配到已标记信用的控制流图(controlflowgraph,CFG)定义内的程序控制流(边)条目,所述条目具有表示程序控制流的可信度的关联信用值;以及在所述匹配之后,如果所述关联信用值不满足指定阈值,则调用慢速路径用于进一步处理所述处理器跟踪数据包,否则,提供允许执行所述系统调用的指示。2.根据权利要求1所述的CFI实施方法,其特征在于,通过在绘制CFG的配置过程期间对所述受保护进程执行的模糊测试操作来确定所述关联信用值。3.根据权利要求2所述的CFI实施方法,其特征在于,通过使用随机数据输入执行所述模糊测试操作。4.根据权利要求1所述的CFI实施方法,其特征在于,将所述允许执行的指示提供给所述系统调用的对应处理程序。5.根据权利要求1所述的CFI实施方法,其特征在于,所述处理器跟踪数据包为英特尔处理器跟踪数据包。6.根据权利要求1所述的CFI实施方法,其特征在于,所述程序流条目对应于所述受保护进程的第一码块与第二码块之间的执行流。7.根据权利要求6所述的CFI实施方法,其特征在于,所述已标记信用的CFG定义内的所述程序流条目对应于条件控制流。8.根据权利要求1所述的CFI实施方法,其特征在于,所述已标记信用的CFG定义从包含下述项的保守CFG中获得:表示条件控制流的条目...

【专利技术属性】
技术研发人员:刘宇涛陈海波石培涛王心然
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东,44

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

1