[go: up one dir, main page]

CN110268411A - 计算机系统中基于处理器跟踪实施的控制流完整性 - Google Patents

计算机系统中基于处理器跟踪实施的控制流完整性 Download PDF

Info

Publication number
CN110268411A
CN110268411A CN201880010090.9A CN201880010090A CN110268411A CN 110268411 A CN110268411 A CN 110268411A CN 201880010090 A CN201880010090 A CN 201880010090A CN 110268411 A CN110268411 A CN 110268411A
Authority
CN
China
Prior art keywords
cfg
data packet
stream
tracking data
cfi
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
Application number
CN201880010090.9A
Other languages
English (en)
Other versions
CN110268411B (zh
Inventor
刘宇涛
陈海波
石培涛
王心然
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN110268411A publication Critical patent/CN110268411A/zh
Application granted granted Critical
Publication of CN110268411B publication Critical patent/CN110268411B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/3604Analysis of software for verifying properties of programs
    • G06F11/3612Analysis of software for verifying properties of programs by runtime analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/362Debugging of software
    • G06F11/3636Debugging of software by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

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

Description

计算机系统中基于处理器跟踪实施的控制流完整性
相关申请案交叉申请
本发明要求2017年2月6日递交的第62/455,523号美国临时专利申请案和2018年2月2日递交的第15/887,468号美国专利申请案的在先申请优先权,这两个在先申请的全部内容以及其引用的任何内容以引用的方式并入本文本中。
专利申请的技术领域
本专利申请大体上涉及计算机系统中的实时/在线网络防御系统领域。更具体地,本专利申请涉及一种包括控制流完整性(control flow integrity,CFI)监控能力的计算机系统,该CFI监控能力基于对通过硬件实现的处理器跟踪功能(例如英特尔处理器跟踪)提供的处理器跟踪输出的在线分析。
背景技术
已经实施了各种网络防御方法来对抗网络攻击。为了应对针对防止代码注入的网络防御,网络攻击者调整了他们的方法来利用/重用现有程序代码。攻击者通过复杂的调用序列以意想不到的方式利用现有代码,而非向程序添加新代码。例如,返回导向编程及其变体通过任意执行现有代码来利用现有程序代码中的弱点。控制流完整性(control flowintegrity,CFI)作为执行如下操作的一种工具/属性已进入大众视野:利用计算机代码模块之间已知/已建立的控制流调用模式,通过识别/拒绝在计算机代码模块间执行不规范控制流的尝试来识别和对抗基于代码重用的网络攻击。
控制流完整性对于网络防御开发者而言并非新概念。然而,通常与执行基于CFI的网络防御相关联的高计算资源开销阻碍了基于CFI的网络防御的使用。高开销和相关联的性能退化导致这种方法对在线/实时处理环境而言不实用。为了在实时处理环境中提供高效的基于CFI的网络防御能力,人们认为必须在以下项之间达成平衡:精确性(即,实施的粒度必须足够精细以尽可能多地消除攻击面);效率(即,必需的运行时开销应很小);以及透明性(即,该方法应该对应用透明,易于在现有OS和硬件上部署,并且与现有安全机制大体兼容)。
通过基于硬件的处理器跟踪执行CFI被认为前景广阔。当前,硬件中存在若干控制流跟踪机制。每种形式的基于硬件的CFI实现方式表示精确性、跟踪开销、解码开销和可用过滤机制之间的一组不同权衡结果。分支跟踪存储(Branch Trace Store,BTS)CFI实现方式将每个控制传输事件(例如调用、返回和所有类型的跳转)捕获为存储器驻留BTS缓冲区中的单独记录实例。每个所得记录包含分支指令的源和目标的地址。因此,无需对记录进行解码。然而,BTS在跟踪期间引入了非常高的处理开销,并且由于缺少事件过滤机制而缺乏灵活性。最后分支记录(Last Branch Record,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列出了流改变指令(change of flow instruction,CoFI)类型和IPT提供的对应处理器跟踪输出。
表2
通过使用基于IPT的处理器跟踪数据包生成规则,针对每个退役指令记录的信息的平均大小小于1比特。此外,IPT输出日志生成配置方案支持基于当前特权级别(currentprivilege level,CPL)的事件过滤。例如,可以使用CR3值来配置日志生成,CR3值表示页面目录基址寄存器或某些指令指针(instruction pointer,IP)范围,这两者都可以用于预过滤(和丢弃)处理器跟踪数据包。
在IPT提供的相对快速的处理器踪迹生成机制中,与解码记录的处理器跟踪数据包相关联的成本更高。IPT提供的高度编码(但紧凑)的处理器跟踪数据包不完整。因此,当期望/需要重构导致(有问题的)处理器跟踪数据包的程序流时,处理器跟踪数据包的解码器在解码期间将记录的处理器数据包与对应的二进制文件相关联。例如,在从处理器跟踪数据包重构执行控制流期间,IPT解码器库的实现方式使用抽象层指令流,抽象层指令流逐指令解析程序二进制文件,并将跟踪的数据包与解析的二进制指令组合,以进行整体解码。
英特尔处理器跟踪数据包生成机制具有若干有益特征,包括:精确跟踪、低跟踪开销和事件过滤。然而,IPT还具有非期望的特征,包括生成的处理器跟踪数据包不完整和随之的解码速度慢。因此,IPT输出本身对性能分析、调谐和软件调试等离线分析很有用。处理器跟踪的IPT方法折衷了不利的慢速解码和期望的处理器跟踪数据包快速生成。IPT在其当前的监控/分析执行控制流的实现方式中依赖于离线重构来获取来自已执行码块的完整控制流信息。
专利申请的发明内容
本专利申请实施例提供了一种方法和计算机系统,所述计算机系统包括硬件处理器(例如,包含IPT功能硬件的英特尔处理器)和包含帮助执行所述方法的指令的非瞬时性计算机可读介质。实施例提供了一种技术方案,该技术方案降低了在计算机系统的运行时环境中执行的受保护进程上执行控制流完整性(control flow integrity,CFI)实施对内核资源的需求程度。
根据第一方面,一实施例提供了一种CFI实施方法,所述方法在计算机系统的运行时环境中执行的受保护进程上执行,所述方法包括:
拦截源于在所述运行时环境中执行的所述受保护进程的执行的系统调用;
所述计算机系统的内核内的快速路径从内核存储器中访问与所述系统调用相对应的处理器跟踪数据包;
所述快速路径将所述处理器跟踪数据包匹配到已标记信用的控制流图(controlflow graph,CFG)定义内的程序控制流(边)条目,所述条目具有表示程序控制流的可信度的关联信用值;以及
在所述匹配之后,如果所述关联信用值不满足指定阈值,则有条件地调用慢速路径用于进一步处理所述处理器跟踪数据包,否则,提供允许执行所述系统调用的指示。
在所述第一方面的第一种实现方式中,通过在绘制CFG的配置过程期间对所述受保护进程执行的模糊测试操作来确定所述关联信用值。
根据所述第一方面的所述第一种实现方式的特定实施例,通过使用随机数据输入执行所述模糊测试操作。
在所述第一方面的第二种实现方式中,将所述允许执行的指示提供给所述系统调用的对应处理程序。
在所述第一方面的第三种实现方式中,所述处理器跟踪数据包为英特尔处理器跟踪数据包。
在所述第一方面的第四种实现方式中,所述程序流条目对应于所述受保护进程的第一码块与第二码块之间的执行流。
根据所述第一方面的所述第四种实现方式的特定实施例,所述已标记信用的CFG定义内的所述程序流条目对应于条件控制流。
在所述第一方面的第五种实现方式中,所述已标记信用的CFG定义从包含下述项的保守CFG中获得:表示条件控制流的条目,以及表示非条件控制流的条目。
根据第二方面,一实施例提供了一种用于执行控制流完整性(control flowintegrity,CFI)方法的计算机处理节点,所述计算机处理节点包括:
处理硬件;以及
包括计算机可执行指令的非瞬时性计算机可读介质,所述计算机可执行指令在由所述处理硬件执行时帮助所述计算机处理节点执行包括以下操作的所述CFI方法:
拦截源于在运行时环境中执行的受保护进程的执行的系统调用;
计算机系统的内核内的快速路径从内核存储器中访问与所述系统调用相对应的处理器跟踪数据包;
所述快速路径将所述处理器跟踪数据包匹配到已标记信用的控制流图(controlflow graph,CFG)定义内的程序控制流(边)条目,所述条目具有表示程序控制流的可信度的关联信用值;以及
在所述匹配之后,如果所述关联信用值不满足指定阈值,则有条件地调用慢速路径用于进一步处理所述处理器跟踪数据包,否则,提供允许执行所述系统调用的指示。
在所述第二方面的第一种实现方式中,通过在绘制CFG的配置过程期间对所述受保护进程执行的模糊测试操作来确定所述关联信用值。
根据所述第二方面的所述第一种实现方式的特定实施例,通过使用随机数据输入执行所述模糊测试操作。
在所述第二方面的第二种实现方式中,将所述允许执行的指示提供给所述系统调用的对应处理程序。
在所述第二方面的第三种实现方式中,所述处理器跟踪数据包为英特尔处理器跟踪数据包。
在所述第二方面的第四种实现方式中,所述程序流条目对应于所述受保护进程的第一码块与第二码块之间的执行流。
根据所述第二方面的所述第四种实现方式的特定实施例,所述已标记信用的CFG定义内的所述程序流条目对应于条件控制流。
在所述第二方面的第五种实现方式中,所述已标记信用的CFG定义从包含下述项的保守CFG中获得:表示条件控制流的条目,以及表示非条件控制流的条目。
附图说明
尽管所附权利要求具体阐述了本专利申请的特征,但是本专利申请及其优点最好通过下文结合附图进行的详细描述来理解,其中:
图1说明性地描绘了包含说明性CFI实施机制的整个计算机处理架构的结构/功能组件的组合。
图2为概述用于在特定可执行计算机程序的CFI实施机制的在线操作之前生成控制流图(control flow graph,CFG)定义的说明性方法的操作的流程图。
图3A、3B和3C说明性地描绘了与图2中概述的方法的三个阶段/操作分别提供的输出相关联的示例CFG定义状态。
图4为保守CFG到ITC CFG重构的说明性示例。
图5为概述根据结合图2、图3A、3B和3C中概述的方法提供的CFG定义执行的示例性混合控制流完整性实施机制的操作的流程图。
附图说明
英特尔处理器硬件的英特尔处理器跟踪(INTEL Processor Trace,IPT)特征提供具有最小资源消耗和/或处理器降速的详细处理器跟踪记录。然而,在将IPT用作在线检测机制方面,IPT提出了重大挑战,因为IPT提供的运行时处理器踪迹进行了高度压缩。对压缩的跟踪记录进行解码通常比生成处理器跟踪记录慢几个数量级。例如,本文描述的CFI实施机制合并了离线控制流图(control flow graph,CFG)的构建和处理器跟踪数据包(例如IPT数据包)流的在线控制流监控,以便在在线计算环境中实施CFI。在本说明性示例中,CFG记录格式符合处理器硬件提供的处理器跟踪数据包格式(例如IPT数据包格式),从而能够直接比较各个处理器跟踪数据包和CFG记录。
因此,通过本文示例描述的所述CFI实施机制与计算系统的处理硬件和操作系统架构紧密集成。由此产生的CFI实施机制同时满足在线CFI实施当前对高度精确、高效率和高度透明的要求。本文描述的CFI实施机制检索并使用处理器硬件生成的处理器硬件生成的处理器跟踪数据包(例如英特尔处理器跟踪(INTEL Processor Trace,IPT)数据包)。在在线处理环境中,检索处理器跟踪数据包,并将它们与包含程序码块之间预配置的相关允许/预期调用集合的控制流图(control flow graph,CFG)进行比较,以检测异常/非预期控制流。基于静态(离线)分析来离线生成CFG,该静态(离线)分析通过所涉程序代码的动态分析(例如模糊测试)来完善。此后,在在线环境中,采取补救措施以防止下述情况带来的伤害:基于处理器跟踪数据包和预配置CFG的比较结果(在下文中详细描述)检测到程序计算块之间存在异常/非预期控制流。本文描述的CFI实施机制的精确性源于监控处理器提供的每个处理器跟踪数据包。由于处理器踪迹生成功能是在处理器硬件中实现,所以处理器跟踪记录的提供非常高效,因为在所涉程序的运行时期间增加的开销非常低。本文描述的CFI实施系统还具有透明性,因为无需二进制插桩,并且系统可以很容易地部署在能够在程序的运行时提供处理器跟踪记录的商用硬件处理器上。
另外,通过至少先避免对处理器踪迹动态解码,本文描述的CFI实施机制解决了高解码开销的问题。而可与已压缩IPT输出直接进行比较的控制流图(control flow graph,CFG)定义是离线配置的。CFG定义包含连接码块的一组边。CFG定义边包含与特定程序或相关程序的码块之间的预期控制流(直观地描绘为CFG的图形表示/描绘中的边,即,连接码块的线)相对应的控制流描述。预配置的CFG定义中表示的每个边定义包括针对每个对应控制流的“信用”指示,该“信用”表示在IPT提供的在线处理器跟踪记录中遇到的流的可信度。因此,可以以能够在运行时与处理器硬件生成的已压缩处理器跟踪记录(例如IPT跟踪记录)直接比较的形式来提供和存储所配置的CFG定义的有效边的可管理集合。
首先请关注图1,图1说明性地描绘了用于在示例性计算机处理架构中执行说明性CFI实施机制的硬件和操作系统功能组件(处理器核、内核操作、用户操作)的组合。在配置期间,静态二进制文件分析106阶段分析受保护进程100以生成ITC CFG定义,其中受保护进程100包括受保护可执行二进制文件102和共享库集合104。参见下文中描述的图3B。ITCCFG定义指定表示受保护进程100的可执行块之间的所有间接(条件)流的一组边。
继续参考图1,模糊测试训练模块108(根据模糊测试训练目标)对受保护可执行二进制文件102和共享库集合104应用所生成的一组输入值,以便为静态二进制文件分析106提供的ITC CFG中定义的一组控制流(边)提供信用(可信度等级)标签。例如,将训练的(高可信度)边标记高信用(可信度)值,并与已采用或未采用(Taken or Non-Taken,TNT)信息相关联。将在模糊测试训练期间很少或从未执行过的控制流标记低信用(可信度)值。在CFG定义配置完成后,将ITC CFG的已标记信用的边存储为已标记信用的ITC CFG定义110。
所得已标记信用的ITC CFG定义110的紧凑性便于与内核中运行的一组处理核112生成的处理器跟踪数据包流进行运行时比较。例如,内核模块112基于已标记信用的ITCCFG定义110执行CFI实施。更具体而言,例如,内核模块112配置一组CPU核114来基于以下项生成处理器跟踪数据包流:在受保护进程100的操作期间生成且被拦截的一组程序块调用。例如,根据在系统初始化期间提供给该组处理器核114的CR3值来选择性地启动内核模块112的操作,从而执行进程调用过滤,以在受保护进程100的执行期间执行CFI实施。将该组处理器核114在运行时提供的所得处理器跟踪数据包发送给存储器116中的预配置(FIFO)缓冲区,以供内核模块112进行CFI实施处理。
在受保护进程100的运行时期间,根据上述预配置的调用过滤标准,该组处理器核114开始生成处理器跟踪数据包,这些处理器跟踪数据包随后存储在存储器116的配置缓冲区空间中。在一说明性示例中,触发系统调用(syscall)拦截器115以开始对所得/缓冲的处理器跟踪数据包进行流检查,这些处理器跟踪数据包对应于安全敏感系统调用,并由该组处理器核114存储在存储器116的预配置缓冲区空间中。
在内核模块112的流检查器117对先前存储在存储器116中的处理器跟踪数据包记录进行控制流完整性检查期间,快速路径模块118对从存储器116检索到的处理器跟踪数据包记录的处理操作优先于慢速路径模块119。通常,快速路径模块118会与已标记信用的ICT-CFG定义110中的可信(已标记高信用值的)边进行快速比较,以尽可能排除检索到的处理器踪迹与恶意(已标记信用的ITC CFG定义110中不存在的)或可疑(信用值低的)踪迹相关联的可能性。在一说明性示例中,可疑处理器踪迹/代码会触发进一步处理,即,由慢速路径模块119执行速度较慢的检查。内核模块112的操作在下文中结合图4进一步描述。
转到图2,概述了CFG定义的离线配置的示例。在离线预配置CFG定义以在线实施CFI的特定示例中,在200中,生成/获取包含程序码块(块)之间的所有可能边的保守CFG定义。图3A说明性地描绘了200中提供的保守CFG的简单说明性示例。随后,在210中,保守CFG配置被转换为包含一组间接(条件)边记录且由间接目标连接(indirect targetsconnected,ITC)的CFG定义,其中,这些间接(条件)边记录符合英特尔处理器的IPT特征提供的处理器跟踪数据包的格式。接着,在220中,对程序代码执行覆盖型模糊测试操作(应用一组随机输入并观察所得的调用流),以建立信用(可信度)值和分支信息并将这些信息分配给在210中提供的ITC CFG定义的边。本文在下文结合图2、图3A、3B和3C进一步描述上述每个CFC定义配置操作。
继续参考图2,在200中,对受保护进程100执行静态二进制文件分析以提供保守CFG定义。在一示例性实施例中,在保守CFG定义生成期间,使用现有的基于二进制文件的方法来拆解和分析受保护可执行二进制文件102和共享库集合104。保守CFG中的“保守”是指不能确定的间接分支的所有可能传出边可能会多于必要边,从而导致过多的误报,在IPT处理器跟踪数据包的运行时检查期间,这些误报会将合法控制流识别为潜在的恶意控制流,导致在运行时检查期间不会执行这些合法控制流。在200中,对受保护可执行二进制文件和共享库集合104的模块进行独立分析,以构建模块内CFG边。此后,通过使用动态链接机制暴露的过程链接表(procedure linkage table,PLT)来构建模块间CFG边。不同模块只能通过PLT中的间接跳转以及从被调用者到调用者的对应返回指令来连接。另外,在200中,将特定基本块之间的边相应地添加到保守CFG定义中。要处理全局符号插入问题,即一个符号可能存在于不同模块中,则使用二进制文件中的信息(例如DT NEEDED)字段来查找先前库并将符号绑定到特定地址。另一种类型的模块间分支是因为虚拟动态链接共享对象(virtualdynamically-linked shared object,VDSO)机制,该机制用于加快syscall调用。例如,gettimeofday()通常会引起VDSO函数调用而不是库调用。VDSO段中的函数的优先级高于库。
在200中,当生成模块内CFG边时,每个直接调用/跳转指令具有一个准确的传出目标,并且每个条件分支具有两个可能目标。对于间接调用,使用TYPEARMOR的use-def和活跃度分析的目标会受到限制,并且将返回指令以调用/返回匹配等方式连接到调用站点之后的有效返回地址。如果上述方法不能成功定义CFG边,则依赖对底层二进制框架的分析来保守地解决间接跳转。
生成受保护进程100的保守CFG定义所产生的另一个问题是处理尾调用优化。通常在函数(例如fun_b)的最后部分中会发出尾调用。尾调用重用当前堆栈帧并使用“跳转”命令,而不会调用目标函数(fun_c)并假设其被当前函数(fun_b)的调用者(fun_a)调用。在这种情况下,即使没有从fun_a到fun_c的调用,fun_c的返回指令也应该回到fun_a。生成保守CFG定义中的对应边的过程通过模拟目标函数的执行来检测和处理尾调用。在模拟期间,按顺序执行分支指令,并且收集针对函数条目的任何过程间跳转指令。此外,将这些函数的返回指令连接到最初调用站点之后的返回地址。继续按顺序执行并记录跳转,直到遇到特定的停止条件。
图3A示出了保守CFG的一示例,目的是与下文详细描述的在210中提供的对应ITCCFG定义的块和边的简化集合进行比较。如图3A中提供的说明性示例所示,基本块通过作为边的直接或间接分支彼此连接。在该说明性示例中,每个定义的边与源块(例如BB-4)的出口地址和目标块(例如BB-7)的入口地址相关联。
继续参考图2,在210中,对保守CFG定义的解析提供了包含一组记录的ITC CFG定义,这些记录的格式与该组处理器核114提供的处理器跟踪数据包兼容(例如,便于直接比较处理器跟踪数据包中的字段)。在200中生成的保守CFG定义为英特尔的IPT处理器嵌入功能生成的不兼容已编码(压缩)处理器踪迹。在210中,进一步处理200中提供的保守CFG定义输出以生成一组定义的边,这些边与英特尔的IPT功能的输出兼容,英特尔的IPT功能仅为间接分支提供处理器跟踪数据包。英特尔的当前IPT实现方式为特定的流改变指令(changeof flow instruction,CoFI)类型生成相应的数据包。IPT生成的处理器跟踪数据包中只有两种支持基于CFI实施的检查:(1)指示是否采用了条件分支的TNT处理器跟踪数据包,以及(2)记录间接分支的目标地址的TIP数据包。
在一说明性示例中,在生成ITC CFG期间,仅支持TIP处理器跟踪数据包,以便:(1)避免路径爆炸,以及(2)支持快速地在线搜索一组相对较小/易于扫描的ITC CFG边定义记录。折叠所有具有直接类型的边,使得间接分支的目标基本块彼此连接,每个边将一个间接目标基本块的入口地址与另一个间接目标基本块的入口地址相关联。
现请关注图3B,图3B表示210中通过处理输入保守CFG定义(图3A)而提供的ITCCFG定义。为简单起见,将受保护进程100内的块标识为“BB-n”,其中“n”对应于图3A、3B和3C中提及的第n个基本块。在该说明性示例中,图3A包括直接边和间接边。在210中处理保守CFG以提供IPT兼容边定义(在图3B中描绘)仅涉及考虑为至少一个间接边的目标的基本块。例如,参见BB-2(从BB-1传入的间接边的目标基本块)。而BB-4不是任何间接边的目标。因此,图3B的ITC CFG定义中存在图3A中编号为2、3、5、7、9、10的基本块(basic block,BB)。这些块在本文中称为间接目标基本块(indirect target basic block,IT-BB)。
在源/目标基本块之间的边重连接期间,如果O-CFG中的路径中存在一个间接边,则每个边从一个IT-BB重新关联到最近的IT-BB。例如,在从BB-3到BB-9的O-CFG中,从BB-6到BB-9存在一个间接边,因此,在图3B的ITC CFG定义示例中,存在连接BB-3到BB-9的一个边。而在OCFG中从BB-3到BB-10的路径中没有间接边,所以在ITC CFG中BB-3未连接到BB-10。因此,如果从一个IT-BB到另一个IT-BB没有间接分支,则在运行时期间IPT将不会生成TIP数据包,并且即使两个IT-BB都是IT-BB并由直接边连接,这两个IT-BB之间也应该无连接。此外,由于TIP数据包揭露了间接分支的目标存储器地址,因此(在210中处理210的保守CFG输出时提供的)ITC CFG定义的边将IT-BB的入口地址相互连接,而不是如图3A所示,将一个IT-BB的出口与另一个IT-BB的入口连接起来。例如,图3B中的ITC CFG定义中剩下(保守CFG的最初10个基本块中的)6个IT-BB。重要的是,重新连接图3B中的ITC CFG定义的边,以便在210中提供的ITC CFG定义中定义的边上可以直接搜索IPT在运行时生成的TIP数据包流。
针对210中生成的ITC CFG定义的准确性,假设在随机选择的时间记录BB-x的入口地址,则BB-x必须是IT-BB之一,否则没有针对它的间接分支,从而不会根据IPT的跟踪方案来跟踪TIP数据包。现假设在紧接着的下一个时间记录另一个BB-y的入口地址,则应证明ITC CFG中存在一条连接BB-x和BB-y的边。通过简化,如果ITC CFG中不存在从BB-x到BB-y的边,这意味着O-CFG中从BB-x到BB-y的路径中没有间接分支的边,则不应执行或跟踪BB-y。因此,对于IPT跟踪的任何两个连续的TIP数据包,ITC CFG中必须有一个边来表示此控制流,否则会发生一些异常。
在220中,使用动态模糊测试训练(例如,将随机调用数据提供给函数调用并观察得到的调用模式)结果,通过为ITC CFG定义内的每个ITC CFG边分配信用(可信度)值和TNT信息,来标记210中提供的ITC CFG定义的边。虽然ITC CFG允许直接搜索IPT踪迹,这解决了执行在线CFI实施所需的处理速度的问题,但是210中提供的ITC CFG仍然存在两个安全问题:粗粒度CFI和精度损失。关于粗粒度CFI,运行时流检查期间仍然存在由粗粒度CFI实施引起的大量漏报(未能识别恶意代码的执行)。此外,由保守CFG定义引起的粗粒度CFI实施会导致每个分支的合法目标过多,从而导致旁通保护以及检测不到恶意攻击。
关于精度损失,由于CFG粗化,210中提供的ITC CFG定义可能会削弱保守CFG提供的安全性。这个问题可以使用下述等式(1)中总结的称为平均允许间接目标(AverageIndirect targets Allowed,AIA)的度量来说明:
其中n是间接分支指令的数量,
Ti是第i个间接分支指令的允许目标的集合。
直观而言,AIA越小表示CFG定义越精确。因此,AIA可能是衡量CFI实施力度的最合适度量之一,尤其是当受保护软件涉及大量代码库时。考虑图4中示出的保守至ITC CFG重构示例。在保守CFG中,AIA为2。在ITC CFG中,AIA为3,这意味着ITC CFG定义不如原始定义精确。在本示例中,在重构保守CFG来绘制ITC CFG之后,BB-2和BB-3的允许目标的数量从2变为3。这种精度减损是由于缺少可能使控制流分叉的直接分支信息。能够使执行流分叉的唯一可能直接分支是条件分支,在本具体示例中为从BB-1到BB-2或BB-3的采用或未采用(Taken or Non-Taken,TNT)分支。ITC CFG定义会删除这些边以避免路径爆炸。在220中,ITC CFG配置的这一缺点通过对210中提供的ITC CFG进行模糊测试分析来弥补。幸运的是,该TNT信息由IPT跟踪,IPT可用于在训练阶段加强ITC CFG。
在220中,执行(模糊测试)训练阶段以生成一组信用(可信度)标签值和更多TNT信息,将这些标签值和TNT信息添加到210中在ITC CFG中定义的边记录中。是否为某个边标记高信用(可信度)值的决定取决于在模糊测试训练中是否遇到对应于该边的处理器跟踪数据包。考虑到实现高覆盖率以最小化上下文敏感度高的分析的要求,在220中,生成覆盖型的类似模糊测试的一组输入以用于动态训练。
模糊测试训练是识别实景受保护进程中的漏洞的高效方法。模糊测试涉及尽可能多地生成随机选择的数据。然后将随机选择的数据用作训练受保护进程的输入——这是一种用于识别基本块之间可能的过程流路径以及触发潜在安全问题的暴力破解方法。在说明性示例中使用模糊测试而非其它动态技术(例如,符号执行)是因为模糊测试易于部署且实用。不过替代性实施例中考虑了将信用(可信度)值分配给ITC CFG的边记录的其它形式的动态训练。
例如,模糊测试训练包括以下三个步骤:
步骤1:在QEMU中运行被训练应用,QEMU是执行硬件虚拟化的开源托管虚拟机监视器,在用户仿真模式下在QEMU之上实现插桩逻辑。插桩负责发现由输入引起的任何新状态转变。
步骤2:提供一些初始测试用例并将其存储到一个队列中。逐个获取队列中的测试用例,并对其进行变异以使用均衡的各种模糊测试策略生成新的测试用例。将所得的测试用例依次馈送到在QEMU中运行的受保护进程软件。如果任何变异的测试用例导致了QEMU观察到的新状态转变,则将其添加到队列中以用于后续变异。此阶段将生成可能会触发不同路径探索的测试用例。
步骤3:收集步骤2中生成的测试用例,并将其用作输入,以馈送到在真实硬件上运行的被训练应用,利用IPT跟踪其执行流,以及基于模糊测试分析中提供的处理器跟踪数据为220中提供的ITC CFG定义中的边标记高信用值(指示可信边)。
在220中为边标记信用值可以针对不同需求而变化。例如,可以使用不止两个级别的信用值,通过基于在训练阶段中遇到特定边的次数来分配各个值的方式来标记边。在最简单的情况下,当每个边被分配一个高信用值或低信用值时,使用基于二进制的标签方案。图3C说明性地描绘了220中(模糊测试)训练产生的标记后ITC CFG定义边。在特定说明性示例中,除ITC CFG定义中从BB-2到BB-7的边之外的所有边都被标记高信用值,并且将在训练阶段中获得的TNT数据包的序列与对应的边相关联。该TNT信息很重要,因为通过直接分叉信息,本文描述的CFI实施操作能够防止攻击者减少AIA。分配训练受保护进程所产生的信用(可信度)值以识别和移除210中的处理所产生的未使用间接边,这克服了因重构图4中所示的保守CFG而导致AIA增加这一潜在问题。
重要的是,模糊测试训练只是可用于为210中提供的ITC CFG定义的各个边分配信用值的各种潜在操作之一。所有这些替代方案会根据本文所述的CFI实施机制和方法的各种实现方式来考虑。
描述完CFI实施机制和方法的示例性架构和配置,现请关注图5,图5概括了本文描述的所配置的CFI实施机制(内核模块112)的运行时操作。通常,在执行受保护进程100所涉代码的计算机系统的在线操作期间执行的CFI实施方法包括混合CFI检查机制,该机制包含经过快速路径模块118的相对快速(主要)路径,该路径尝试将每个收到的从存储器116(缓冲器)检索到的处理器跟踪(例如IPT)数据包记录匹配到在已标记信用的ITC CFG定义110中表示的对应可信边。如果在IPT跟踪记录与ITC CFG定义110中的可信边记录之间达成了匹配,则放行处理器踪迹(即,不是安全威胁)。但是,如果在IPT处理器跟踪数据包与可信的ITC CFG边记录之间未达成匹配,则遇到了可疑/异常处理器踪迹(两个块之间的程序流)。若在快速路径模块118的操作期间未达成匹配,则将CFI执行的操作转移到相对较慢的(辅助)路径,此时,信用值低的对应ITC CFG记录与运行时处理器踪迹相匹配。
考虑到绝大多数运行时处理器跟踪数据包最初都被快速路径模块118的操作“拒绝”或“放行”。如果处理器跟踪数据包与已标记信用的ITC CFG定义中的任何边都不匹配,则拒绝该处理器跟踪数据包。然而,如果跟踪数据包与已标记信用的ITC CFG定义110中包含的可信边匹配,则快速路径模块118“放行”该处理器跟踪数据包。仅仅与已标记信用的ITC CGF定义110中的不可信(低信用值)边记录匹配的处理器跟踪数据包会由慢速路径模块119进行开销很大的精确/彻底处理器跟踪处理。
如果经过适当的训练,则基于已标记信用的ITC CFG的处理会将针对极小部分提供的处理器跟踪记录的处理器跟踪数据包处理转移到慢速路径模块119。慢速CFI实施机制的这种条件执行仅限于对在快速路径处理期间与已标记信用的ITC CFG定义110中的低可信度边匹配的处理器跟踪数据包执行,并提供了一种高效且精确的CFI实施机制,以检测对使用受保护进程100的计算机系统的代码重用攻击。
结合先前讨论的图1,下面结合图5的概括步骤描述流检查器117对从存储器116检索到的处理器跟踪数据包执行的混合处理。在说明性示例中,在受保护进程100的操作期间,CFI实施依赖于内核模块112来保护计算机系统。如图1所示,内核模块112通常执行以下操作:(1)配置一组处理器核114(例如IPT)以在受保护进程100的执行流中生成处理器跟踪数据包,(2)拦截特定安全敏感系统调用以触发后续处理器跟踪数据包处理操作,以及(3)在快速和/或慢速路径中检查跟踪的执行流。
图5中概述的操作通过与图1中描绘的系统的其它识别的组件交互来与内核模块112的操作联系起来。在操作图5中概述的步骤之前,根据内核模块112的配置命令操作的该组处理器核114启动并保持对受保护进程110的控制流的跟踪。针对处理器跟踪数据包的生成,该组处理器核114的操作包括以下两个基本步骤:
步骤1:启动对数据包生成的控制操作。有多种控制操作用于确定是否可以生成分支数据包。控制操作由一组IA32_RTIT_*系列的特殊模块寄存器(model-specificregister,MSR)等来启动和配置。在说明性示例中,最重要的是IA32_RTIT_CTL MSR寄存器,其是用于跟踪数据包生成的主要启动和控制MSR。内核模块112设置TraceEn和BranchEn比特以启动该组处理器核114生成基于CoFI的处理器跟踪数据包。该寄存器还清除OS比特并设置用户比特以便专门跟踪用户级控制流。同时,寄存器还设置CR3Filter比特以启动CR3过滤机制,并将IA32_RTIT_CR3_MATCH MSR配置给受保护进程的CR3。最后,该寄存器清除FabricEn比特以直接将跟踪输出发送到存储器116,并设置ToPA比特以启动物理地址表(Table of Physical Addresses,ToPA)输出方案。IA32_RTIT_CTL MSR的其它比特保留为默认值。
步骤2:配置用于跟踪输出的存储区域。在该说明性示例中,英特尔的IPT的跟踪输出可以用于根据两种输出方案之一进行操作:(1)物理地址空间的单个连续区域,或(2)物理存储器的一组大小可变的区域,这些区域通过指针表连接在一起。在特定示例中,内核模块112使用上文称为物理地址表(Table of Physical Addresse,ToPA)的后一种方案,并将跟踪输出存储到具有两个区域的一个ToPA中。
选择流检查的适当触发点会确定内核模块112的操作提供的保护的及时性和性能。一种直观的方法是触发性能监控中断(Performance Monitoring Interrupt,PMI)并检查中断区域中的所有数据包。该方法确保会检查受保护进程110的所有执行流。但是,它可能会带来很大的开销。因此,在说明性示例中,内核模块112在指定的安全敏感端点处执行流检查。虽然这些端点是可配置的,但是内核模块112预定义了一些默认端点以提供合理的安全保证。
例如,预定义端点主要包括指定的安全敏感syscall,例如execve、mmap、mprotect。例如,在图5中概括的内核模块112的运行时操作的步骤500中,内核模块112的系统调用拦截器115通过临时修改syscall表并为每个拦截的syscall安装备用syscall处理程序来拦截安全敏感系统调用(syscall)。每当调用这种syscall时,新安装的处理程序首先通过CR3、进程名称或进程ID等信息来检查受保护进程100是否调用了该syscall。如果是,则开始检查;否则,新安装的处理程序只是将系统调用的执行转发(传递)到对应的原始syscall处理程序以进行常规处理。拦截的安全敏感syscall可以来自受保护可执行二进制文件102或共享库集合104。因此,系统调用拦截器115负责检查可执行和共享的库的执行流。
如果流检查失败,则内核模块向进程发送SIGKILL信号,并向管理员或用户报告检测到控制流违规行为。
在510中,调用快速路径模块118以通过如下操作处理拦截的系统调用:在从存储器116检索到的对应处理器跟踪数据包与已标记信用的ITC CFG定义110的已标记信用的边之间进行匹配操作。快速路径模块118基于以下项验证与拦截的系统调用对应的处理器跟踪数据包:处理器跟踪数据包与已标记信用的ITC CFG定义110的已标记信用的边记录的比较结果。快速路径模块118先对存储在存储器116的ToPA区域中的跟踪数据包进行快速解码。在该阶段,快速路径模块118仅解析处理器跟踪数据包(基于IPT格式)并提取TIP和TNT数据包,而不参考指令流抽象层的二进制文件。借助于用作解码器的同步点的数据包流边界(packet stream boundary,PSB)数据包,该过程可以并行执行以进一步加快解码。另一方面,无需对整个ToPA缓冲区进行解码。相反,快速路径模块118仅检查指定数量的TIP数据包。另外,考虑到应对在一个模块中进行非法入侵并在另一模块中调用系统调用的攻击,会确保内核模块112对跨越多个模块的存储区域的TIP数据包进行解码,并且其中至少一个存储区域在受保护的进程100内。
在获取在运行时收集的与拦截的系统调用对应的间接目标地址之后,快速路径模块118尝试将这些地址与已标记信用的ITC CFG定义110中的边记录的地址进行匹配。具体而言,内核模块112维护已标记信用的ITC CFG 110中表示的边中的源节点的数据结构阵列。每个边的源节点具有相关联的计数字段,该计数字段指示其传出边的数量和指向其目标地址阵列的开始处的指针。例如,根据地址对所有阵列进行排序,使得在匹配期间快速路径模块118可使用二进制搜索以减少时长。为进一步加快匹配过程,内核模块112预留单独的存储器,专门用于存储源节点及其通过高信用边连接的目标和TNT信息,并且在510中将该存储器用作快速路径模块118进行快速匹配的高速缓存。在快速路径检查中,对于记录在TIP数据包中的每个地址,快速路径模块118首先通过搜索源节点的阵列来检查该地址,然后检查其后继地址是否可以在其目标地址的阵列中找到。在快速路径模块118完成(无论成功与否)510中的匹配尝试后,控制操作转到520。
在520中,如果两个地址检查中的任一个未能在处理器跟踪数据包地址与已标记信用的ITC CFG 110中的边的地址之间提供匹配,则快速路径模块118的匹配尝试失败,检测到了代码重用攻击,并且控制操作转到530:发出警报以调用对应的系统调用处理程序来调用对被拒绝的已拦截系统调用的进一步处理,以防止执行恶意的系统调用。
然而,如果在已标记信用的ITC CFG 110中找到了匹配的边条目,则控制操作转到540。在540中,快速路径模块118访问与匹配的边条目相关联的信用值。如果该信用值满足用于指示处理器跟踪数据包与可信边之间的匹配的阈值,则控制操作转到550:快速路径模块118向对应的系统调用处理程序发出响应,以指示系统调用可以执行。
否则,如果在540中处理器跟踪数据包匹配到信用值不满足可信度阈值的边,则控制操作转到560。
在560中,将慢速路径模块119的操作调用给匹配到下述项的系统调用:在与已标记信用的ITC CFG定义110中的且在540中确定具有低信用值的边记录。将流检查转发到慢速路径引擎。例如,除了快速路径模块118在快速匹配中使用的TIP和TNT数据包之外,慢速路径模块119的输入还包括受保护进程100的二进制文件。例如,由慢速路径模块119执行的分析是英特尔对IPT解码器库的参考实现,其使用指令流抽象层,逐指令解析二进制文件,并且合并跟踪的数据包以进行完全解码。在说明性示例中,每当慢速路径检查被触发时,内核模块112就向等待的用户级进程发出回调以结束该任务。
会基于特定系统所需的各种策略和保护级别而考虑针对540中指示的可疑恶意系统调用的各种慢速路径处理操作。在慢速路径模块119中实施的策略可以非常精确,因为内核模块112能够捕获整个执行流并进一步执行上下文敏感分析。在非常基础的层面上,内核模块112确保拦截的系统调用的处理跟踪数据包符合具有细粒度前向边分析的CFI实施的保守CFG实现方式。此外,对于后向边分析,影子堆栈通过指令流抽象层来维护,并与跟踪的数据包进行比较以针对返回分支执行单目标策略。
虽然所提供的说明性示例是结合包括英特尔Skylake处理器的特定处理器环境而描述,而Skylake处理器又包括内置IPT功能,但所描述的混合处理也适用于各种各样的处理器跟踪提供器。在IPT处理环境中,与关键系统调用相关联的处理器跟踪记录会在CFI检查期间进行分析/比较。本文描述的CFI实施机制显然可用于防御类似ROP的控制流劫持攻击。重要的是,混合方法与精心制定的ITC CFG定义预配置相结合能使CFI实施的性能仅小幅下滑。此外,混合CFI实施可以通过增加硬件辅助快速解码器等硬件扩展来进一步减少开销。
总之,混合CFI实施机制,包括用于处理器踪迹和可信CFG边的快速路径匹配的预配置ITC CFG定义,为CFI实施提供了一种完全透明的机制,包括在程序的在线操作期间检测CFI违规行为,其中该程序包括码块之间的有限可管理数量的可信调用。首先通过将完整的CFG定义适配于处理器跟踪生成器(例如ITC)提供的输出的形式来绘制ITC CFG。通过在ITC CFG的模糊测试训练期间使用随机数据输入来动态训练最初绘制的ITC CFG,准确性和效率进一步增强,该模糊测试训练能够(使用信用和分支获取信息)识别和标记预配置的ITC CFG定义中表示的可信边(一个或多个程序的码块之间的程序控制流)。
本领域技术人员应理解,本发明实施例可以作为方法、系统或计算机程序产品来提供。因此,本发明可以使用仅硬件实施例、仅软件实施例或具有软件和硬件的组合的实施例的形式。此外,本发明可以使用在包括计算机可用程序代码的一个或多个计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实现的计算机程序产品的形式。
结合根据本发明实施例的方法、设备(系统)和计算机程序产品的流程图和/或框图描述了示例。应理解,计算机程序指令可用于实现流程图和/或框图中的每个过程和/或每个框以及流程图和/或框图中的过程和/或框的组合。这些计算机程序指令可以提供给通用计算机、专用计算机、嵌入式处理器或任何其它可编程数据处理设备的处理器以生成机器,使得任何其它可编程数据处理设备的计算机或处理器执行的指令生成一种装置,该装置用于实现流程图中的一个或多个过程中的和/或框图中的一个或多个框中的特定功能。
这些计算机程序指令还可以存储在计算机可读存储器中,该计算机可读存储器能指示计算机或任何其它可编程数据处理设备以特定方式工作,使得存储在计算机可读存储器中的指令生成包括指令装置的制品。指令装置实现流程图中的一个或多个过程中的和/或框图中的一个或多个框中的特定功能。
这些计算机程序指令也可以加载到计算机或其它可编程数据处理设备上,以便在计算机或其它可编程设备上执行一系列操作和步骤,从而产生计算机实现的处理。因此,在计算机或其它可编程设备上执行的指令提供用于实现流程图中的一个或多个过程中的和/或框图中的一个或多个框中的特定功能的步骤。
本文引用的所有参考文献,包括出版物、专利申请和专利,均以引用的方式并入本文本中,犹如每个参考文献都被单独具体地指出被引用且进行了完整的阐述。
描述本专利申请的上下文中(尤其是所附权利要求的上下文中)使用的术语“一”、“一个”和“所述”以及类似的指代词应被解释为涵盖单数和复数两者,除非另有说明或与上下文明显矛盾。术语“包含”、“具有”、“包括”和“含有”应被解释为开放式术语(即,是指“包括但不限于”),除非另有说明。本文引用的数值范围仅旨在用作单独提及属于所述范围内的每个单独数值的速记方法,除非在此另有说明,并且每个单独的数值并入到本说明书中如同它被单独地在此引证一样。本文所述的所有方法可以以任何适当的顺序来执行,除非本文中另有说明或或与上下文明显矛盾。使用本文提供的任何及所有示例或示例性语言(例如“例如”)仅是为了更好地说明本专利申请,并不对本专利申请的范围产生限制,除非另有说明。本说明书中的任何语言都不应理解为指示任何非说明元素为实践本专利申请所必需的要素。
本文描述了发明人已知的用于执行本专利申请的示例性实施例。对于本领域普通技术人员而言,在阅读先前的描述后,这些实施例的变体将变得显而易见。本发明人期望熟练的业内人士适时采用此类变体,并且本发明人打算以不同于本文中具体描述方式的其它方式来实践本专利申请。因此,本专利申请包括随附权利要求书中阐述的主题在附属权利要求中叙述的主题的所有变化和等效物。此外,本专利申请涵盖上述要素以及其所有可能变体的任何组合,除非本文另有指示或与上下文明显矛盾。

Claims (16)

1.一种控制流完整性(control flow integrity,CFI)实施方法,其特征在于,所述方法在计算机系统的运行时环境中执行的受保护进程上执行,所述方法包括:
拦截源于在所述运行时环境中执行的所述受保护进程的执行的系统调用;
所述计算机系统的内核内的快速路径从内核存储器中访问与所述系统调用相对应的处理器跟踪数据包;
所述快速路径将所述处理器跟踪数据包匹配到已标记信用的控制流图(control flowgraph,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中获得:
表示条件控制流的条目,以及
表示非条件控制流的条目。
9.一种用于执行控制流完整性(control flow integrity,CFI)方法的计算机处理节点,其特征在于,所述计算机处理节点包括:
处理硬件;以及
包括计算机可执行指令的非瞬时性计算机可读介质,所述计算机可执行指令在由所述处理硬件执行时帮助所述计算机处理节点执行包括以下操作的所述CFI方法:
拦截源于在运行时环境中执行的受保护进程的执行的系统调用;
计算机系统的内核内的快速路径从内核存储器中访问与所述系统调用相对应的处理器跟踪数据包;
所述快速路径将所述处理器跟踪数据包匹配到已标记信用的控制流图(control flowgraph,CFG)定义内的程序控制流(边)条目,所述条目具有表示程序控制流的可信度的关联信用值;以及
在所述匹配之后,如果所述关联信用值不满足指定阈值,则调用慢速路径用于进一步处理所述处理器跟踪数据包,否则,提供允许执行所述系统调用的指示。
10.根据权利要求9所述的计算机处理节点,其特征在于,通过在绘制CFG的配置过程期间对所述受保护进程执行的模糊测试操作来确定所述关联信用值。
11.根据权利要求10所述的计算机处理节点,其特征在于,通过使用随机数据输入执行所述模糊测试操作。
12.根据权利要求9所述的计算机处理节点,其特征在于,将所述允许执行的指示提供给所述系统调用的对应处理程序。
13.根据权利要求9所述的计算机处理节点,其特征在于,所述处理器跟踪数据包为英特尔处理器跟踪数据包。
14.根据权利要求9所述的计算机处理节点,其特征在于,所述程序流条目对应于所述受保护进程的第一码块与第二码块之间的执行流。
15.根据权利要求14所述的计算机处理节点,其特征在于,所述已标记信用的CFG定义内的所述程序流条目对应于条件控制流。
16.根据权利要求9所述的计算机处理节点,其特征在于,所述已标记信用的CFG定义从包含下述项的保守CFG中获得:
表示条件控制流的条目,以及
表示非条件控制流的条目。
CN201880010090.9A 2017-02-06 2018-02-03 计算机系统中基于处理器跟踪实施的控制流完整性 Active CN110268411B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762455523P 2017-02-06 2017-02-06
US62/455,523 2017-02-06
US15/887,468 US10896253B2 (en) 2017-02-06 2018-02-02 Processor trace-based enforcement of control flow integrity of a computer system
US15/887,468 2018-02-02
PCT/CN2018/075189 WO2018141279A1 (en) 2017-02-06 2018-02-03 Processor trace-based enforcement of control flow integrity of computer system

Publications (2)

Publication Number Publication Date
CN110268411A true CN110268411A (zh) 2019-09-20
CN110268411B CN110268411B (zh) 2021-04-20

Family

ID=63037292

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880010090.9A Active CN110268411B (zh) 2017-02-06 2018-02-03 计算机系统中基于处理器跟踪实施的控制流完整性

Country Status (6)

Country Link
US (1) US10896253B2 (zh)
EP (1) EP3571622B1 (zh)
KR (1) KR102306568B1 (zh)
CN (1) CN110268411B (zh)
BR (1) BR112019016151A2 (zh)
WO (1) WO2018141279A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112199669A (zh) * 2020-09-25 2021-01-08 杭州安恒信息技术股份有限公司 一种检测rop攻击的方法和装置
CN113569244A (zh) * 2021-09-18 2021-10-29 成都数默科技有限公司 一种基于处理器跟踪的内存恶意代码检测方法
CN115297328A (zh) * 2022-10-10 2022-11-04 湖南马栏山视频先进技术研究院有限公司 面向分布式集群的多节点并行视频转码方法
WO2024137528A1 (en) * 2022-12-19 2024-06-27 Cisco Systems, Inc. Control flow integrity instruction pointer patching

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9501382B2 (en) * 2013-06-25 2016-11-22 Purdue Research Foundation Systems and methods of detecting power bugs
US10896253B2 (en) * 2017-02-06 2021-01-19 Huawei Technologies Co., Ltd. Processor trace-based enforcement of control flow integrity of a computer system
US10372902B2 (en) * 2017-03-06 2019-08-06 Intel Corporation Control flow integrity
JP6885226B2 (ja) * 2017-07-03 2021-06-09 株式会社デンソー 電子制御装置
US10902121B2 (en) * 2017-10-19 2021-01-26 International Business Machines Corporation Policy-based detection of anomalous control and data flow paths in an application program
US10984096B2 (en) * 2018-03-28 2021-04-20 Intel Corporation Systems, methods, and apparatus for detecting control flow attacks
CN109308415B (zh) * 2018-09-21 2021-11-19 四川大学 一种面向二进制的导向性模糊测试方法与系统
US20200143043A1 (en) * 2018-11-07 2020-05-07 Raytheon Company Edge verification and elimination control flow integrity
WO2020261365A1 (ja) * 2019-06-25 2020-12-30 日本電気株式会社 半導体装置、制御フロー検査方法、非一時的なコンピュータ可読媒体及び電子機器
US11513939B2 (en) * 2019-08-02 2022-11-29 EMC IP Holding Company LLC Multi-core I/O trace analysis
US11080400B2 (en) 2019-08-28 2021-08-03 Palo Alto Networks, Inc. Analyzing multiple CPU architecture malware samples
US11281561B2 (en) * 2019-09-09 2022-03-22 Red Hat, Inc. Determining user behavior with a user interface using user interface log records
US11016773B2 (en) * 2019-09-27 2021-05-25 Intel Corporation Processor trace extensions to facilitate real-time security monitoring
CN111078435A (zh) * 2019-12-18 2020-04-28 支付宝(杭州)信息技术有限公司 业务处理方法、装置及电子设备
KR102325291B1 (ko) 2019-12-27 2021-11-12 주식회사 안랩 테스크 추적을 하기 위한 방법, 장치, 컴퓨터 판독 가능한 기록 매체 및 컴퓨터 프로그램
KR102514257B1 (ko) * 2021-02-19 2023-03-29 한국전자통신연구원 제어 흐름 무결성 위반 탐지 장치 및 방법
US11709937B2 (en) * 2021-08-25 2023-07-25 International Business Machines Corporation Inactivating basic blocks of program code to prevent code reuse attacks
US20240028708A1 (en) * 2022-07-22 2024-01-25 Cisco Technology, Inc. Control flow directed graph for use with program disassembler
KR102715925B1 (ko) * 2022-11-16 2024-10-11 부산대학교 산학협력단 임베디드 시스템의 무결성 보장 장치 및 방법
CN116302994B (zh) * 2023-02-28 2023-10-10 浙江大学 一种程序路径的层次化匹配方法、装置、设备及存储介质
WO2025005921A1 (en) * 2023-06-29 2025-01-02 Siemens Industry Software Inc. Method and apparatus for decoding trace data

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6047124A (en) * 1997-10-31 2000-04-04 Sun Microsystems, Inc. System and method for tracing device drivers using a computer
CN1702625A (zh) * 2004-05-28 2005-11-30 国际商业机器公司 保存跟踪数据的方法和装置
US20060161978A1 (en) * 2005-01-14 2006-07-20 Microsoft Corporation Software security based on control flow integrity
CN101473300A (zh) * 2006-06-23 2009-07-01 微软公司 通过实施数据流完整性来保护软件
CN102073816A (zh) * 2010-12-31 2011-05-25 兰雨晴 基于行为的软件可信度量系统及方法
US20140298300A1 (en) * 2013-03-27 2014-10-02 Nec Laboratories America, Inc. Guarding a Monitoring Scope and Interpreting Partial Control Flow Context
CN104823172A (zh) * 2012-12-29 2015-08-05 英特尔公司 实时指令跟踪处理器、方法以及系统
US20150356294A1 (en) * 2014-06-09 2015-12-10 Lehigh University Methods for enforcing control flow of a computer program
CN105868626A (zh) * 2016-03-25 2016-08-17 中国人民解放军信息工程大学 基于控制流粗粒度完整性的监控软件业务行为的方法
US20170024562A1 (en) * 2015-07-22 2017-01-26 Nxp B.V. Method and apparatus for ensuring control flow integrity

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040128539A1 (en) * 2002-12-30 2004-07-01 Intel Corporation Method and apparatus for denial of service attack preemption
US7130786B2 (en) * 2004-02-12 2006-10-31 Computer Associates Think, Inc. Using kernel level simulation techniques to improve application program robustness
US8136091B2 (en) * 2007-01-31 2012-03-13 Microsoft Corporation Architectural support for software-based protection
US20130024676A1 (en) * 2011-07-19 2013-01-24 Glew Andrew F Control flow integrity
US9021589B2 (en) * 2012-06-05 2015-04-28 Los Alamos National Security, Llc Integrating multiple data sources for malware classification
US9122873B2 (en) * 2012-09-14 2015-09-01 The Research Foundation For The State University Of New York Continuous run-time validation of program execution: a practical approach
US9740868B2 (en) * 2012-09-27 2017-08-22 International Business Machines Corporation Customizing a security report using static analysis
CN104134038B (zh) 2014-07-31 2016-11-23 浪潮电子信息产业股份有限公司 一种基于虚拟平台的安全可信运行保护方法
US9767272B2 (en) * 2014-10-20 2017-09-19 Intel Corporation Attack Protection for valid gadget control transfers
US10007784B2 (en) * 2015-03-27 2018-06-26 Intel Corporation Technologies for control flow exploit mitigation using processor trace
US10248424B2 (en) * 2016-10-01 2019-04-02 Intel Corporation Control flow integrity
US10896253B2 (en) * 2017-02-06 2021-01-19 Huawei Technologies Co., Ltd. Processor trace-based enforcement of control flow integrity of a computer system
US10372902B2 (en) * 2017-03-06 2019-08-06 Intel Corporation Control flow integrity
AU2018200523A1 (en) * 2017-03-09 2018-09-27 Accenture Global Solutions Limited Smart advisory for distributed and composite testing teams based on production data and analytics
US10628286B1 (en) * 2018-10-18 2020-04-21 Denso International America, Inc. Systems and methods for dynamically identifying program control flow and instrumenting source code
US11416603B2 (en) * 2018-11-16 2022-08-16 Intel Corporation Methods, systems, articles of manufacture and apparatus to detect process hijacking

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6047124A (en) * 1997-10-31 2000-04-04 Sun Microsystems, Inc. System and method for tracing device drivers using a computer
CN1702625A (zh) * 2004-05-28 2005-11-30 国际商业机器公司 保存跟踪数据的方法和装置
US20060161978A1 (en) * 2005-01-14 2006-07-20 Microsoft Corporation Software security based on control flow integrity
CN101473300A (zh) * 2006-06-23 2009-07-01 微软公司 通过实施数据流完整性来保护软件
CN102073816A (zh) * 2010-12-31 2011-05-25 兰雨晴 基于行为的软件可信度量系统及方法
CN104823172A (zh) * 2012-12-29 2015-08-05 英特尔公司 实时指令跟踪处理器、方法以及系统
US20140298300A1 (en) * 2013-03-27 2014-10-02 Nec Laboratories America, Inc. Guarding a Monitoring Scope and Interpreting Partial Control Flow Context
US20150356294A1 (en) * 2014-06-09 2015-12-10 Lehigh University Methods for enforcing control flow of a computer program
US20170024562A1 (en) * 2015-07-22 2017-01-26 Nxp B.V. Method and apparatus for ensuring control flow integrity
CN105868626A (zh) * 2016-03-25 2016-08-17 中国人民解放军信息工程大学 基于控制流粗粒度完整性的监控软件业务行为的方法

Non-Patent Citations (7)

* Cited by examiner, † Cited by third party
Title
AMIT VASUDEVAN ET AL.: "XTRec: Secure Real-Time Execution Trace Recording on Commodity Platforms", 《2011 44TH HAWAII INTERNATIONAL CONFERENCE ON SYSTEM SCIENCES》 *
JÖRG THALHEIM ET AL.: "INSPECTOR: Data Provenance Using Intel Processor Trace (PT)", 《2016 IEEE 36TH INTERNATIONAL CONFERENCE ON DISTRIBUTED COMPUTING SYSTEMS (ICDCS)》 *
MARTIN ET AL.: "Control-Flow Integrity", 《CCS’05 PROCEEDINGS OF THE 12TH ACM CONFERENCE ON COMPUTER AND COMMUNICATIONS SECURITY》 *
YUBIN XIA ET AL.: "CFIMon:Detecting violation of control flow integrity using performance counters", 《DEPENDABLE SYSTEMS AND NETWORKS (DSN),2012 43ND ANNUAL IEEE/IFIP INTERNATIONAL CONFERENCE ON,IEEE》 *
叶颜秋等: "ARM架构中控制流完整性验证技术研究", 《计算机工程》 *
杜贵然: "多路径Trace处理器", 《中国博士学位论文全文数据库 信息科技辑》 *
游超: "基于控制流信息指导的可疑程序分析技术研究", 《中国优秀硕士学位论文全文数据库信息科技辑》 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112199669A (zh) * 2020-09-25 2021-01-08 杭州安恒信息技术股份有限公司 一种检测rop攻击的方法和装置
CN112199669B (zh) * 2020-09-25 2022-05-17 杭州安恒信息技术股份有限公司 一种检测rop攻击的方法和装置
CN113569244A (zh) * 2021-09-18 2021-10-29 成都数默科技有限公司 一种基于处理器跟踪的内存恶意代码检测方法
CN113569244B (zh) * 2021-09-18 2021-12-03 成都数默科技有限公司 一种基于处理器跟踪的内存恶意代码检测方法
CN115297328A (zh) * 2022-10-10 2022-11-04 湖南马栏山视频先进技术研究院有限公司 面向分布式集群的多节点并行视频转码方法
WO2024137528A1 (en) * 2022-12-19 2024-06-27 Cisco Systems, Inc. Control flow integrity instruction pointer patching

Also Published As

Publication number Publication date
BR112019016151A2 (pt) 2020-03-24
CN110268411B (zh) 2021-04-20
US10896253B2 (en) 2021-01-19
WO2018141279A1 (en) 2018-08-09
EP3571622A4 (en) 2020-02-19
KR102306568B1 (ko) 2021-09-30
EP3571622A1 (en) 2019-11-27
US20180225446A1 (en) 2018-08-09
EP3571622B1 (en) 2021-04-07
KR20190109524A (ko) 2019-09-25

Similar Documents

Publication Publication Date Title
CN110268411A (zh) 计算机系统中基于处理器跟踪实施的控制流完整性
US10528726B1 (en) Microvisor-based malware detection appliance architecture
Rahmatian et al. Hardware-assisted detection of malicious software in embedded systems
US11366908B2 (en) Detecting unknown software vulnerabilities and system compromises
US5557742A (en) Method and system for detecting intrusion into and misuse of a data processing system
EP3818680B1 (en) Systems and methods for reporting computer security incidents
CN109508536A (zh) 一种篡改程序流攻击的检测方法和装置
US20170091454A1 (en) Lbr-based rop/jop exploit detection
EP4111660A1 (en) Cyberattack identification in a network environment
CN109409089A (zh) 一种基于虚拟机自省的Windows加密型勒索软件检测方法
Murtaza et al. A trace abstraction approach for host-based anomaly detection
Anand et al. HiPeR-early detection of a ransomware attack using hardware performance counters
US9965618B1 (en) Reducing privileges for imported software packages
US11347840B2 (en) Dynamic re-distribution of detection content and algorithms for exploit detection
Wang et al. Specularizer: Detecting speculative execution attacks via performance tracing
Lee et al. Kernel-level rootkits features to train learning models against namespace attacks on containers
Liang et al. Detecting stealthy malware with inter-structure and imported signatures
US10019572B1 (en) Detecting malicious activities by imported software packages
CN114880665B (zh) 一种针对面向返回编程攻击的智能化检测方法及装置
Kucab et al. Performance impact of control flow enforcement technology (cet)
Zhu et al. A Dynamic Analysis-Powered Explanation Framework for Malware Detection
Mishra et al. Ethereal Networks and honeypots for breach detection
Yu et al. Intrusion detection based on system call finite-state automation machine
Tong et al. Cache Side-Channel Attacks Detection for AES Encryption Based on Machine Learning

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