CN111194447B - 监视控制流完整性 - Google Patents

监视控制流完整性 Download PDF

Info

Publication number
CN111194447B
CN111194447B CN201880053152.4A CN201880053152A CN111194447B CN 111194447 B CN111194447 B CN 111194447B CN 201880053152 A CN201880053152 A CN 201880053152A CN 111194447 B CN111194447 B CN 111194447B
Authority
CN
China
Prior art keywords
control flow
instructions
execution environment
monitor
behavior
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.)
Active
Application number
CN201880053152.4A
Other languages
English (en)
Other versions
CN111194447A (zh
Inventor
R·谢瓦利耶
D·普拉坎
M·维拉泰尔
G·耶特
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
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 Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of CN111194447A publication Critical patent/CN111194447A/zh
Application granted granted Critical
Publication of CN111194447B publication Critical patent/CN111194447B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/18Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances

Abstract

一种用于在低级执行环境中监视控制流完整性的方法,所述方法包括在监视器处从执行环境接收指示该执行环境已进入受控操作模式的消息,在监视器处接收表示在该执行环境处执行控制流过程的所选部分的数据分组,使用该数据分组从可准许控制流路径集合中识别与控制流过程的所选部分相对应的路径,以及确定所识别的路径是否与预期控制流行为相对应。

Description

监视控制流完整性
背景技术
诸如操作系统(OS)的内核、虚拟化系统中的管理程序(hypervisor)或固件之类的低级执行环境可以直接访问系统硬件,并且是高度特权的。对其预期行为的更改(恶意的或非恶意的)可能对所讨论的系统的保密性、完整性或可用性具有不期望的后果。
附图说明
从以下结合附图的详细描述中,某些示例的各种特征将显而易见,该附图仅通过示例的方式一起图示了多个特征,并且其中:
图1是根据示例的入侵检测系统的示意性表示;
图2是根据示例的入侵检测系统的示意性表示;以及
图3是根据示例的用于验证间接调用消息的映射的示意性表示;
图4是根据示例的方法的流程图;以及
图5是根据示例的与存储器相关联的处理器的示意性表示。
具体实施方式
在以下描述中,为了解释的目的,阐述了某些示例的多个特定细节。说明书中对“示例”或相似语言的引用意味着结合该示例所描述的特定特征、结构或特性包括在至少一个示例中,但是不一定在其它示例中。
在诸如计算设备或虚拟系统之类的执行环境中,诸如基础输入/输出系统(BIOS)或统一可扩展固件接口(UEFI)兼容固件之类的引导固件用于在将执行传送到OS之前测试并初始化硬件组件。
在虚拟化系统中,其中一个或多个虚拟机(VM)可以在物理硬件上实例化,管理程序或虚拟机监视器(VMM)用于分配硬件访问,并且向VM呈现OS的执行并进行管理。
在这些低级执行环境中的一个中执行的改变其原始预期行为(诸如跳过验证步骤)的任意指令可能损害系统的后续部分。因此,篡改这些环境对于可能试图用恶意软件感染它们的攻击者来说是有吸引力的。由于这些环境的性质以及它们的早期执行,这样的恶意软件可能变得持久、难以检测和去除,并且独立于OS。
例如,在x86指令集系统(其基于向后兼容的指令集架构族)上,CPU的高度特权执行模式(系统管理模式(SMM))可以修改包含引导固件的系统闪存。SMM的使用可以防止受损害操作系统感染系统固件。
更具体地,在初始系统引导过程期间,并且在执行系统OS之前,引导固件可以将指令加载到所谓的系统管理RAM(SMRAM)中。这些指令对应于要在SMM中执行的特权功能。固件可以(使用硬件特征)锁定SMRAM和闪存,以防止来自OS的任何修改。
在引导过程和更新过程期间,使用密码签名也是可能的,使得由供应商的密钥签名的固件被执行。此外,可以在引导时间计算和存储引导过程的配置和组件的测量(密码散列),以证明平台的完整性。
虽然密码签名和测量在引导时间提供了完整性,但是它们不阻止攻击者在例如系统的运行时间利用SMM中的易损性(vulnerability)。因此,如果攻击者设法在SMM或另一个低级执行环境中执行恶意指令,则其可能创建OS不可检测到的恶意软件。
根据示例,提供了入侵检测系统(IDS),以检测在运行时间修改低级执行环境的预期行为的入侵。IDS可以用于在运行时间监视SMM的完整性,并且可以用于监视内核或VMM或其它低级执行环境。
系统的一部分使用监视器从形成系统的受监视组件的目标接收消息。在示例中,监视器通过使用协处理器与受监视组件隔离,所述协处理器是在结构上分离的设备。根据示例的IDS利用使得目标能够发送信息的通信信道来弥补监视器和目标之间的语义间隙。
图1是根据示例的入侵检测系统的示意性表示。监视器101可以通过低等待时间通信链路105从目标103接收消息。在示例中,监视器101可以是协处理器,并且是用于检测系统中的入侵的可信组件。对主系统的正常行为的任何更改都不影响监视器的完整性。
由监视器101提供的隔离意味着其中指令在目标103上执行的上下文的知识中的损失。在没有完整的上下文的情况下,在目标的实际行为的内容以及监视器101可以推断的内容之间可能存在语义间隙。例如,可能存在与虚拟到物理地址的映射或所采用的执行路径相关的知识缺口。根据示例,监视器101和目标103之间的通信信道105使得目标103能够向监视器101发送信息,以便缩小针对监视器101的语义间隙。
根据示例,呈现了以下属性:
数据完整性一如果消息被发送到监视器,则该消息之后可能不会被去除或修改。否则,如果攻击者损害目标,则其可以在消息被处理之前修改或去除消息,以隐藏其入侵。
按时间顺序的次序-消息在监视器处以它们从目标发射的次序被处理,否则,攻击者可能根据检测方法重新安排次序以逃避检测。
访问-当目标正在执行时,没有其它组件具有对通信信道的访问。否则,攻击者可以发送伪造合法行为的消息。也就是说,目标具有对通信信道的特权访问,或者监视器可以可靠地将消息的源识别为目标。
低等待时间-发送消息应该快速(例如,亚微秒),使得低级组件可以最小化执行其任务所花费的时间,以避免影响用户空间应用。
根据示例,在要在所考虑的低级执行环境(即,目标)上执行的指令的编译期间,可以使用仪表化(instrumentation)来实现从目标103到监视器101的通信。这样的仪表化例如可以在编译器级别操作,或者如果它不具有对源指令集的访问,则通过重写二进制来操作。
根据示例,仪表化可以在运行时间从在编译时间已知的位置处的目标获取信息。控制流完整性(CFI)是这样的仪表化的示例,其中编译器可以在不求助于开发者的情况下使二进制指令仪表化。根据示例的进一步仪表化可以是自组织(ad hoc)方法,该方法使用目标的源指令的手动修改,或者其可以提供诸如注释之类的其它信息。例如,如果攻击者可以修改它们的值,则类似CR3的x86控制寄存器可以改变系统的行为。寄存器的预期值是已知的,就像修改是合法的情况一样。因此,指令的仪表化部分可以用于向监视器发送这些寄存器的值。
图2是根据示例的入侵检测系统的示意性表示。监视器200可以通过低等待时间通信链路214从目标201接收消息211、213等等。
根据示例,监视器200可以是协处理器,该协处理器可以用作安全处理器以执行敏感任务,并且处理敏感数据(例如,密码密钥)。系统的主处理器不直接访问安全处理器存储器。因此,其不能访问敏感数据,但是可以经由通信信道查询协处理器以执行任务。
通信信道、链路或路径的等待时间可能影响用于从目标发送到监视器的每个消息的系统管理中断(SMI)处理程序(handler)的等待时间。可接受的等待时间可以约为150μs。快速和频繁的SMI导致性能(I/O吞吐量或CPU时间)的退化。另一方面,长且不频繁的SMI导致用户体验退化,其中使用USB设备的音频回放被驱动器认为无响应,并且例如可能发生游戏引擎中帧速率的严重下降。
因此,根据示例,受控访问存储器结构230可以使用点到点互连在逻辑上定位在目标和监视器之间,以便使得能够实现在目标和监视器之间的低等待时间通信路径。在示例中,存储器结构可以形成目标的一部分、监视器的一部分或是单独的组件,使得协处理器可以用作监视器而无需修改。因此,在该连接中,逻辑上定位指的是存储器结构被配置为从目标接收数据,以及将数据发送到监视器(或使数据从监视器提取),并且不阻止该结构在目标或监视器内形成,或者作为目标或监视器的一部分,或者作为系统中单独的组件。其它组件可能物理上位于目标和监视器之间。
在示例中,存储器结构可以使用受限访问先进先出(FIFO)队列,该队列允许目标推送以及监视器弹出消息。在示例中,FIFO可以接收在分组中碎片化的消息。FIFO可以存储由目标发送的正在等待由监视器处理的消息。
在示例中,存储器结构230可以处理写指针。因此,攻击者无法控制它,并且不具有对其存储器的访问,并且因此不能破坏消息的完整性。受监视的组件(目标)201具有在物理地址和存储器结构230之间的映射。在每个SMI的开始,目标201或监视器230可以确保目标具有与监视器通信的映射,以便避免在SMM中时其它设备与其通信,并且避免重映射攻击。如图2中所描绘的系统实现了上面所提到的数据完整性属性,因为目标不具有对监视器存储器的直接访问,其可以推送消息,并且如果队列是满的,则其不折叠(wrap over)。其实现了按时间顺序的次序属性,因为在SMM中时不存在对其的同时访问。此外,其实现了独占访问属性,因为在SMM中时一个核是活动的,并且没有其它设备可以与监视器通信。最后,对于关于低等待时间的最后的属性,可以使用执行受监视的组件的主处理器和监视器之间的快速互连,诸如点到点的互连之类。所使用的互连取决于CPU制造商。例如,在x86架构中,可以使用快路径(QPI)或超传输互连。这些互连被用于核间或处理器间的通信,并且特别地设计以用于低等待时间。
参考图2,在目标201的固件203中执行的指令作为分组211、213被推送到监视器200的存储器结构230。监视器200可以在框215处从结构230获取消息。最初,存储器结构230可以从目标201接收消息,该消息指示目标201已经进入或处于诸如例如SMM之类的受控操作模式中。即,为了使监视器200确保当目标201正在执行时,其具有对通信链路214的独占访问,目标201可以使用额外的信号来通知监视器200其已经进入用于低级指令的执行模式。例如,对于ARM信任区(TrustZone),非安全位(NS位)可以用于区分处理器当前是否正在安全世界中执行低级指令。在x86架构上,监视器200还可以通过使用在芯片集级别可用的信号来确定处理器何时正在SMM中执行。此外,可以由监视器信任的任何逻辑信令(诸如通过使用虚拟线缆、密码认证的信号等)可以用于通知监视器低级指令的执行。
因此,数据完整性属性受到重视,因为目标201不具有对监视器存储器结构230的直接访问。该目标可以推送消息,并且如果队列是满的,则其不折叠。在示例中,结构230可以实现按照时间顺序的次序属性,因为其采用FIFO队列的形式,并且当目标正在执行时,不存在对其的同时访问。队列可以采用线性或环形(circular)阵列的形式,其中消息以它们被接收到的次序被处理。
由监视器处理从存储器结构230获取的消息,以确定是否与在目标201处的预期行为存在任何偏差。例如,可以将消息与预期行为的列表、映射表或图表进行比较,以确定间接调用处理(217)、影子堆栈调用(219)以及其它合适的行为(221)中偏差(223)的存在。
根据示例,从目标201到监视器200的通信可以通过在例如编译期间添加仪表化过程来实现。仪表化可以在编译器级别工作,或者如果它不能访问源指令集207,则通过重写二进制来工作。仪表化的一个属性是在引导时间和运行时间期间具有指令完整性。否则,攻击者就可以重写该仪表化,以便用nop指令(即,什么都不做的指令)完全替换它,或者替换被发送为总是有效的数据。
由于使用了密码签名和测量,在引导时间的指令完整性是可能的。在运行时,可以认为不能修改指令,而这在使用如上所述的启用写保护的页表的情况下是可能的。
在示例中,仪表化可以被自动地应用于指令集,并且可用于在运行时从在编译时已知的位置处的目标获取信息。CFI是这种仪表化的示例,其中编译器可以自动地仪表化二进制指令。第二种仪表化可以采用自组织方法,所述方法使用目标的源指令的手动修改或提供诸如注释之类的其它信息。这样,可以确定将帮助监视器获得对目标行为的更好理解的相关信息。
因此,根据示例,修改诸如例如SMM指令之类的指令的仪表化可以是双重的:(1)自动仪表化205,用于发送CFI相关的信息;以及(2)手动仪表化209,以发送关于x86特定变量的信息。在一个示例中,mov指令可被用于向监视器发送分组。
在示例中,作为编译框架的LLVM可以用于自动地对例如SMM指令的指令进行仪表化。可以执行两次LLVM操作。第一遍可用于启用后向边缘CFI(即,影子调用栈),并且可以仪表化二进制指令,以便将包含栈上的返回地址的消息发送到函数的结尾处的监视器和序言处的监视器。第二遍可用于启用前向边缘CFI(即,确定间接调用正在调用有效目标)。在示例中,对于每个间接调用站点,可以分配唯一标识符(UID),并且可以创建标识符和所调用函数的类型签名之间的映射。
每个间接调用站点都可被仪表化,以在执行间接调用之前将标识符和函数指针发送到监视器。然后,对于其类型签名在间接调用或声明为外部函数的类型集合中的每个函数,可以添加存储器中的函数偏移与其类型之间的映射。这个最终映射提供了可以用它们在存储器中的类型签名和偏移来间接调用的函数。
因此,根据示例,在构建过程结束时,存在两条信息:标识符和类型之间的映射,以及偏移和该位置处的函数的类型之间的映射。然而,这样的信息可能不足以使监视器在运行时具有映射。它具有偏移的功能,但不是它们在存储器中的最终地址或用于SMM的指令被加载在存储器中的基地址。在示例中,这可以通过在初始化期间(在SMRAM被锁定之前)手动地仪表化固件指令以发送地址来提供给监视器。这样,在引导时,监视器就可以通过将偏移添加到对应的基地址来确定最终映射。
图3是根据示例的用于验证间接调用消息的映射的示意性表示。如图3所示,监视器具有两个映射:(M1),调用站点的标识符和其预期类型之间的映射;以及(M2),函数的地址及其类型之间的映射。监视器根据来自(攻击者不能控制的)相同消息的调用站点UID,验证在(攻击者能够控制的)消息中接收的目标地址具有预期类型。
根据示例,在为CFI仪表化SMM指令之后,可以手动仪表化在每个SMI结束时发送对x86架构特定的变量的当前值的指令。这些变量,诸如SMBASE或CR3,可以被攻击者修改以取得对SMM的控制或逃避检测。当进入SMM时,主CPU将其上下文存储在保存状态区域中,并且当退出时恢复它。SMRAM的位置,称为SMBASE,被保存在保存状态区域中。每当SMI被触发以跳至SMM入口点时,处理器就使用SMBASE。因此,SMI处理程序可以修改保存状态区域中的SMBASE,并且在下一次SMI被触发时,处理器将使用新的SMBASE。在引导时,这种行为是真实的,以便将SMRAM重新定位到RAM中的另一个位置(例如,在多处理器系统中,SMBASE对于每个处理器应该是不同的)。然而,在运行时,没有有效的理由来这样做。因此,在示例中,可以在每个SMI结束时将SMBASE值发送到监视器,以检测对该值的任何恶意修改。为此,可以在引导时向监视器登记预期的SMBASE值。如果所登记的值和退出SMM时所接收的值偏离,则监视器可以发出警报。此外,可以确保攻击者可以利用的MMU相关寄存器(比如CR3(即,保存页目录的物理地址的x86寄存器))的完整性。在每个SMI的开始,利用来自存储器中的变量的已知值来重置这样的寄存器。这些变量的预期值可在引导时间被登记以确保它们的完整性,如SMBASE。
因此,根据示例,在编译时间,两个阶段被添加到指令的编译中。第一阶段经由静态分析导出关于其控制流的指令集的预期行为。也就是说,根据一个示例,可以生成路径和/或链路和/或映射的图或集合。该图表示了可由低级执行环境执行的可准许的控制流路径的集合。因此,当执行控制流过程的多个部分中的任何一个时,它提供了预期行为的映射。因此,对于给定部分,可以确定可以采取的可准许路径。因此,与任何预期行为的偏离都可能是存在恶意活动的标志。
第二阶段(仪表化),可以自动注入指令,以使得执行仪表化指令集的目标可以向监视器发送信息。
例如,在引导时,BIOS可以向监视器发送以下两条信息:
在编译时间期间生成的预先计算的预期行为,
在引导期间确定的SMM指令的存储器映射。
在运行时,SMM可以执行其原始指令集,该原始指令集已经被仪表化以发送关于其控制流的消息。与此并行,监视器可以处理这些消息,并且通过查找预期行为和所监视的行为之间的任何差异来检测损害。
因此,根据示例,在运行时,可以将目标的实际行为与预期行为进行比较,以便确定是否存在任何偏差。控制流过程的执行仪表化部分因此可以触发指示控制流过程的该部分在执行环境处的执行的数据分组的传输。使用该数据分组,可以从允许的控制流路径集合中识别出与控制流过程的所选部分相对应的路径,并且可以从该处确定所识别的路径是否与预期的控制流行为相对应。
在示例中,合法或可准许的行为可以是函数调用的返回地址的非篡改。根据示例的仪表化指令集可以在函数调用进入和离开函数时都将函数调用的返回地址(存储在栈上)发送到监视器。监视器可以比较这两者并确定是否已经存在对栈上的返回地址的篡改。
在另一示例中,合法或可准许的行为可以是间接调用的非篡改。根据示例的仪表化指令可被用于在每个间接调用之前向监视器发送包含正被调用的函数的地址的消息。然后,监视器可以确定该地址是有效函数并且具有与静态分析阶段一致的类型(即,预先计算的预期行为)。
根据示例,目标201可以是虚拟化系统的管理程序或OS的内核。监视器200可以是虚拟机。也就是说,例如,虚拟机可以使用形成受监视的组件的管理程序在虚拟化系统中分配的物理硬件上实例化。虚拟机可以包括虚拟化系统的其它组件不可访问的安全执行环境。
图4是根据示例的方法的流程图。在框401中,在监视器处从执行环境接收指示该执行环境已进入受控操作模式的消息。在框403中,在监视器处接收表示在执行环境处执行控制流过程的所选部分的数据分组。在框405中,从可准许的控制流路径集合中(使用数据分组)识别与控制流过程的所选部分相对应的路径。在框407中,确定所识别的路径是否对应于预期的控制流行为。
本公开中的示例可以作为诸如软件、硬件、固件等的任意组合之类的方法、系统或机器可读指令来提供。这样的机器可读指令可以包括在具有计算机可读程序指令在其中或其上的计算机可读存储介质(包括但不限制于盘存储装置、CD-ROM、光存储装置等)上。
参考根据本公开示例的方法、设备以及系统的流程图和/或框图来描述本公开。尽管上面所描述的流程图示出特定执行次序,但是执行次序可以与所描绘的次序不同。与一个流程图相关描述的框可以与另一个流程图的框相结合。在一些示例中,流程图的一些框可能不是必要的和/或可以添加附加的框。应当理解,流程图和/或框图中的每个流程和/或框以及流程图和/或框图中的流程和/或图的组合可以由机器可读指令来实现。
机器可读指令可以例如由通用计算机、专用计算机、嵌入式处理器或其它可编程数据处理设备的处理器来执行,以实现说明书和附图中所描述的功能。特别地,处理器或处理装置可以执行机器可读指令。因此,可以由执行存储在存储器中的机器可读指令的处理器,或根据嵌入在逻辑电路中的指令操作的处理器来实现装置的模块(例如,监视器200)。术语“处理器”将要广泛地解释为包括CPU、处理单元、ASIC、逻辑单元或可编程门集合等。方法和模块都可以由单个处理器执行或划分在若干处理器之间。
这样的机器可读指令还可以存储在计算机可读存储装置中,该计算机可读存储装置可以指导计算机或其它可编程数据处理设备以特定模式操作。
例如,可以在用可由处理器执行的指令编码的非暂时性计算机可读存储介质上提供指令。
图5示出了与存储器152相关联的处理器150的示例。存储器152包括可由处理器150执行的计算机可读指令154。指令154包括:
指令156,其通过低等待时间通信链路从受监视的组件接收消息;
指令158,其从目标接收指示目标已经进入受控操作模式的消息;
指令160,其从监视器的存储器结构获取消息;以及
指令162,其将消息与预期控制流操作进行比较。
这样的机器可读指令还可以加载到计算机或其它可编程数据处理设备上,使得计算机或其它可编程数据处理设备执行一系列操作,以产生计算机实现的处理,因此,在计算机或其它可编程设备上执行的指令提供了用于实现由流程图中的一个或多个流程和/或框图中的一个或多个框所指定的功能的操作。
进一步地,本文中的教导可以以计算机软件产品的形式实现,该计算机软件产品存储在存储介质中,并且包括多个指令,以用于使计算机设备实现本公开的示例中所述的方法。
虽然已经参考某些示例描述了方法、装置和相关的方面,但是在不脱离本公开精神的情况下,可以进行各种修改、改变、省略和代替。特别地,来自一个示例的特征或框可以与另一示例的特征/框相结合,或由另一个示例的特征/框所代替。
词语“包括”不排除除了那些在权利要求中列出的元素以外的元素的存在,“一”或“一个”不排除多个,并且单个处理器或其它单元可以实现权利要求中所述的若干单元的功能。
任何从属权利要求的特征可以与任何独立权利要求或其它从属权利要求的特征相结合。

Claims (15)

1.一种用于在低级执行环境中监视控制流完整性的方法,所述方法包括:
在监视器处从所述执行环境接收指示所述执行环境已进入受控操作模式的消息;
在所述监视器处接收表示在所述执行环境处执行控制流过程的所选部分的数据分组;
使用所述数据分组从可准许的控制流路径集合中识别与所述控制流过程的所选部分相对应的路径;以及
确定所识别的路径是否对应于预期控制流行为。
2.根据权利要求1所述的方法,还包括:
仪表化用于在受控操作模式中执行的指令集。
3.根据权利要求2所述的方法,还包括:
自动仪表化所述指令集以提供控制流完整性相关的信息。
4.根据权利要求3所述的方法,还包括:
执行所述指令集的第一和第二仪表化遍,以分别管理向后边缘和向前边缘控制流完整性。
5.根据权利要求2所述的方法,还包括:
手动仪表化所述指令集以提供控制流完整性相关的信息。
6.根据权利要求1所述的方法,还包括:
确定所述指令集的所述预期行为,以生成在所述目标上执行的所述指令集的预期控制流行为。
7.根据权利要求6所述的方法,还包括:
在所述监视器处接收所述目标的所生成的预期控制流行为,以及在所述执行环境的引导期间确定的所述指令集的存储器映射。
8.一种用指令编码的非暂时性机器可读存储介质,所述指令可由处理器执行以用于在低级执行环境中监视控制流完整性,所述机器可读存储介质包括:
用于处理来自所述执行环境的指示所述执行环境已进入受控操作模式的消息的指令;
用于处理表示在所述执行环境处执行控制流过程的所选部分的数据分组的指令;
用于使用所述数据分组从可准许的控制流路径集合中识别与所述控制流过程的所选部分相对应的路径的指令;以及
用于确定所识别的路径是否对应于预期控制流行为的指令。
9.根据权利要求8所述的非暂时性机器可读存储介质,还包括用于通过确定预期行为与监视的行为之间差异的存在来检测所述低级执行环境的行为中的损害的指令。
10.根据权利要求8所述的非暂时性机器可读存储介质,还包括指令,所述指令用于仪表化用于在所述受控操作模式中执行的指令集,以提供控制流完整性相关的信息。
11.根据权利要求9所述的非暂时性机器可读存储介质,还包括用于执行所述指令集的第一和第二仪表化遍以分别管理向后边缘和向前边缘控制流完整性的指令。
12.根据权利要求8所述的非暂时性机器可读存储介质,还包括用于在函数调用进入和离开函数时比较所述函数调用的返回地址以确定在系统栈上是否存在对所述返回地址的篡改的指令。
13.根据权利要求8所述的非暂时性机器可读存储介质,还包括:
用于在间接调用之前接收包含正被调用的函数的地址的消息的指令;以及
用于验证正被调用的函数的地址是有效函数并且具有与预期控制流行为一致的类型的指令。
14.一种用于在低级执行环境中监视控制流完整性的装置,所述装置包括:
监视器,用于:
从所述执行环境接收指示所述执行环境已进入受控操作模式的消息;
接收表示在所述执行环境处执行控制流过程的所选部分的数据分组;
使用所述数据分组从可准许的控制流路径集合中识别与所述控制流过程的所选部分相对应的路径;以及
确定所识别的路径是否对应于预期控制流行为。
15.根据权利要求14所述的装置,所述监视器接收所述目标的所生成的预期控制流行为,以及在所述执行环境的引导期间确定的指令集的存储器映射。
CN201880053152.4A 2017-06-07 2018-06-06 监视控制流完整性 Active CN111194447B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP17305674.8 2017-06-07
EP17305674.8A EP3413532A1 (en) 2017-06-07 2017-06-07 Monitoring control-flow integrity
PCT/US2018/036236 WO2018226814A2 (en) 2017-06-07 2018-06-06 Monitoring control-flow integrity

Publications (2)

Publication Number Publication Date
CN111194447A CN111194447A (zh) 2020-05-22
CN111194447B true CN111194447B (zh) 2023-04-18

Family

ID=59579549

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880053152.4A Active CN111194447B (zh) 2017-06-07 2018-06-06 监视控制流完整性

Country Status (4)

Country Link
US (1) US11556645B2 (zh)
EP (1) EP3413532A1 (zh)
CN (1) CN111194447B (zh)
WO (1) WO2018226814A2 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11698969B1 (en) * 2021-06-25 2023-07-11 Amazon Technologies, Inc. Boot security of integrated circuit device

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101473300A (zh) * 2006-06-23 2009-07-01 微软公司 通过实施数据流完整性来保护软件
CN101770406A (zh) * 2008-12-30 2010-07-07 英特尔公司 用于运行时间完整性校验的设备和方法
CN104981812A (zh) * 2013-03-07 2015-10-14 英特尔公司 在对等监控中支持可靠性、可用性、以及可服务性(ras)流的机制
CN106662994A (zh) * 2014-09-23 2017-05-10 惠普发展公司有限责任合伙企业 检测系统管理模式bios代码的改变

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4419728A (en) * 1981-06-22 1983-12-06 Bell Telephone Laboratories, Incorporated Channel interface circuit providing virtual channel number translation and direct memory access
US20020091826A1 (en) 2000-10-13 2002-07-11 Guillaume Comeau Method and apparatus for interprocessor communication and peripheral sharing
US20040078681A1 (en) 2002-01-24 2004-04-22 Nick Ramirez Architecture for high availability using system management mode driven monitoring and communications
US6938124B2 (en) 2002-07-19 2005-08-30 Hewlett-Packard Development Company, L.P. Hardware assisted communication between processors
US7603704B2 (en) * 2002-12-19 2009-10-13 Massachusetts Institute Of Technology Secure execution of a computer program using a code cache
US8155134B2 (en) 2007-09-29 2012-04-10 Applied Micro Circuits Corporation System-on-chip communication manager
US8275982B2 (en) 2009-10-19 2012-09-25 Dell Products L.P. System and method for a managed BIOS
US8782435B1 (en) * 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time using control flow signatures
US9063836B2 (en) 2010-07-26 2015-06-23 Intel Corporation Methods and apparatus to protect segments of memory
US8819225B2 (en) * 2010-11-15 2014-08-26 George Mason Research Foundation, Inc. Hardware-assisted integrity monitor
WO2013032442A1 (en) 2011-08-30 2013-03-07 Hewlett-Packard Development Company , L.P. Virtual high privilege mode for a system management request
US20130160028A1 (en) 2011-12-14 2013-06-20 John E. Black Method and apparatus for low latency communication and synchronization for multi-thread applications
US11003464B2 (en) 2012-04-19 2021-05-11 Microsoft Technology Licensing, Llc Control flow integrity enforcement at scale
US9146767B2 (en) * 2012-06-19 2015-09-29 Raytheon Company Secure cloud hypervisor monitor
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
EP2973139B1 (en) 2013-03-15 2020-04-22 Intel Corporation Security co-processor boot performance
US9537738B2 (en) 2014-06-27 2017-01-03 Intel Corporation Reporting platform information using a secure agent
US20160191550A1 (en) * 2014-12-29 2016-06-30 Fireeye, Inc. Microvisor-based malware detection endpoint architecture
EP3121749B1 (en) * 2015-07-22 2019-06-26 Nxp B.V. Method and apparatus for ensuring control flow integrity
US20170090929A1 (en) * 2015-09-25 2017-03-30 Mcafee, Inc. Hardware-assisted software verification and secure execution

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101473300A (zh) * 2006-06-23 2009-07-01 微软公司 通过实施数据流完整性来保护软件
CN101770406A (zh) * 2008-12-30 2010-07-07 英特尔公司 用于运行时间完整性校验的设备和方法
CN104981812A (zh) * 2013-03-07 2015-10-14 英特尔公司 在对等监控中支持可靠性、可用性、以及可服务性(ras)流的机制
CN106662994A (zh) * 2014-09-23 2017-05-10 惠普发展公司有限责任合伙企业 检测系统管理模式bios代码的改变

Also Published As

Publication number Publication date
CN111194447A (zh) 2020-05-22
WO2018226814A2 (en) 2018-12-13
US20210182393A1 (en) 2021-06-17
EP3413532A1 (en) 2018-12-12
US11556645B2 (en) 2023-01-17
WO2018226814A3 (en) 2019-04-25

Similar Documents

Publication Publication Date Title
US11841966B2 (en) Inhibiting memory disclosure attacks using destructive code reads
US10949247B2 (en) Systems and methods for auditing a virtual machine
Ge et al. Sprobes: Enforcing kernel code integrity on the trustzone architecture
Zhang et al. Hypercheck: A hardware-assistedintegrity monitor
Payne et al. Lares: An architecture for secure active monitoring using virtualization
US10055585B2 (en) Hardware and software execution profiling
JP7036821B2 (ja) 仮想マシンセキュリティ適用例のためのイベントフィルタ処理
JP5951879B2 (ja) オペレーティングシステムに対する悪意ある活動のレポート
Jurczyk et al. Identifying and exploiting windows kernel race conditions via memory access patterns
US20220405393A1 (en) Perform verification check in response to change in page table base register
US20210232681A1 (en) Hypervisor level signature checks for encrypted trusted execution environments
Zhou et al. A coprocessor-based introspection framework via intel management engine
Xuan et al. Toward revealing kernel malware behavior in virtual execution environments
CN111194447B (zh) 监视控制流完整性
Zhong et al. A virtualization based monitoring system for mini-intrusive live forensics
JP2015166952A (ja) 情報処理装置、情報処理監視方法、プログラム、及び記録媒体
Algawi et al. Creating modern blue pills and red pills
AT&T
Suzaki et al. Kernel memory protection by an insertable hypervisor which has VM introspection and stealth breakpoints
Pék et al. Towards the automated detection of unknown malware on live systems
CN111052114B (zh) 入侵检测系统
Lengyel et al. Pitfalls of virtual machine introspection on modern hardware
Zaidenberg et al. Hypervisor memory introspection and hypervisor based malware honeypot
Chang et al. Defeating TCG toctou attacks in trusted hvm

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