CN103959247B - 虚拟化计算机程序中的安全 - Google Patents
虚拟化计算机程序中的安全 Download PDFInfo
- Publication number
- CN103959247B CN103959247B CN201280059388.1A CN201280059388A CN103959247B CN 103959247 B CN103959247 B CN 103959247B CN 201280059388 A CN201280059388 A CN 201280059388A CN 103959247 B CN103959247 B CN 103959247B
- Authority
- CN
- China
- Prior art keywords
- page
- program
- memory pages
- locked memory
- memory
- 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.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
- G06F12/145—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
- G06F12/1425—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
- G06F12/1433—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a module or a part of a module
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1466—Key-lock mechanism
- G06F12/1475—Key-lock mechanism in a virtual system, e.g. with translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/52—Binary to binary
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44557—Code layout in executable memory
- G06F9/44563—Sharing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/151—Emulated environment, e.g. virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Storage Device Security (AREA)
Abstract
在实施例中,一种方法包括:对管理程序或虚拟机操作系统的超级调用接口实施存储器事件接口,以截取用于写入包含计算机程序的存储器页面的页面故障;接收由来宾域试图写入在存储器页面权限系统中被标记为不可执行的存储器页面所引起的页面故障;确定由管理程序或虚拟机操作系统维护的、针对存储器页面的第一组存储器页面权限;确定独立于管理程序或虚拟机操作系统而维护的、针对存储器页面的第二组存储器页面权限;基于第一组和第二组,确定针对存储器页面的特定存储器页面权限;基于特定存储器页面权限来处理页面故障,该处理包括执行至少一个与管制对于页面的访问相关联的安全功能。
Description
技术领域
本公开总体涉及计算机程序安全。更具体而言,本公开涉及用于增强虚拟化计算机程序对各种未授权的使用或攻击的抵抗力的技术。
背景技术
本部分中所描述的方法为可能被推行的方法,但不一定是先前已认知或已实现的方法。因此,除非另有指明,否则不应当假定本部分中所描述的任何的方法仅仅由于其包含在本部分中而被视为现有技术。
在可通过公共互联网访问的服务器上运行的计算机程序,以及在其它环境中运行的计算机程序,被公知为具有易受到各种种类的攻击的弱点。某些攻击是通过将未授权或恶意代码安装到程序中并引起外部代码的执行来实现的。
利用虚拟化技术,多个不同的主机操作系统以及相关联的计算机程序在监控程序(其可以是管理程序(hypervisor))的控制下可以在单个计算机或处理器上运行。虚拟化的使用催生了新的攻击机会和新类型的安全性弱点。
SecVisor学术研究项目使用在操作系统页面表中维护的权限位来确定页面是否是可写或可执行的,并设置页面权限,使得如果它们也是可写的,则程序代码页面不可执行。然而,SecVisor没有提供与在管理程序或虚拟机监控器(VMM)中维护的存储器页面权限相互作用的机制,该管理程序或虚拟机监控器被紧密耦合到虚拟化优化CPU,例如INTEL处理器上的Xen。
Xen已为特权域(privileged domain)提供在超级调用接口上对存储器事件进行注册的能力,该存储器事件是由管理程序的存储器管理器服务的。存储器事件已经用于域的需求分页(例如,用于存储器页面的磁盘交换)。对存储器事件进行监听的程序可以使用不同的超级调用以从磁盘读取页面或将页面写入磁盘,并更新页面类型值来指示该页面已经被页入或页出。Xen实现了存储器页面框架表示的p2m,该p2m为了支持不同用途的存储器的目的而管理存储器页面类型值。例如,当存储器页面已经页出到磁盘,该页面的存储器页面类型值可以被设置为“已换出”(p2m_ram_paged),因为该页面不可用。该类型然后被转换成不可读的存储器访问权限。如果程序试图读取页面,Xen p2m抛出页面故障并且其页面故障管理器会将存储器从磁盘页入,将存储器页面类型值更新成页入类型(其被转换成可读的访问权限),并将控制返回到造成故障的程序。存在附加的存储器类型用于模拟硬件的页面,并因此应导致I/O仿真器以好似存储器访问是对外围设备的总线访问那样进行动作。附加的页面类型用于域之间的共享存储器。然而,这些页面类型中没有表示不同于其类型和用途的访问权限,且因此使得进一步更改或限制针对页面安全(例如,内容的安全,而非仿真目的)的存储器访问权限成为不可能。
发明内容
所附的权利要求可以作为本发明的发明内容。
附图说明
在附图中:
图1A示出了配置有用于虚拟化计算机程序的安全系统的某些元件的计算机。
图1B示出了配置有用于虚拟化计算机程序的安全系统的某些元件的使用Xen的计算机。
图1C示出了使用Xen操作系统的实施例的进一步的细节。
图1D示出了其中专用管理程序被安装在客户机操作系统中以与安全逻辑相集成的实施例。
图2示出了在虚拟计算机环境中用于识别、验证和授权存储器页面的方法。
图3是实施例可以使用的计算机系统的框图。
图4示出了为了安全目的以随机或不可预测的方式重新组织虚拟化计算机程序的过程。
图5示出了随程序的每个存储器加载而可变地随机化计算机程序的重组的过程。
图6示出了为了安全目的来拦截动态加载并对动态加载进行响应的过程。
图7示出了对于存储器页面上的安全性的示例处理。
图8,其示出了页面故障处理方法。
图9示出了示例RX2RW过程。
图10A、图10B示出了识别存储器页面的示例过程。图11示出了可以用在实施例中的采集过程的部分。
图12示出了生成和处理存储器页面指纹数据的示例性过程。
具体实施方式
概述
在以下说明书中,出于解释的目的,阐述了许多具体细节,以便透彻理解本发明。但是,很明显,本发明可以在没有这些具体细节的情况下实施。在其它实例中,公知的结构和设备以框图的形式示出,以免不必要地模糊了本发明。
1.0总体概述以及各实施例的优点
Xen已为特权域提供能力以在超级调用接口上对由管理程序的存储器管理器服务的存储器事件进行注册。存储器事件已经用于域的需求分页(demand paging)(例如,用于存储器页面的磁盘交换)。对存储器事件进行监听的程序可以使用不同的超级调用以从磁盘读取页面或将页面写入磁盘、分配或释放存储器、以及更新页面类型值来指示该页面已经被页入或页出。然而,在该上下文中,在本发明之前还没有实用的方法来实现页面级存储器安全而不干扰现有的Xen存储器模型,使得传统应用程序可以执行而无需改变。
在实施例中,在正在执行INTEL XEN架构的计算机中,其至少包括INTEL XEN管理程序、至少一个在计算机存储器中的特权域、以及存储在存储器中针对多个存储器页面的多个存储器页面类型的值的第一表相关联的p2m页面故障管理器,其中存储器页面类型决定了存储器页面权限的设置(用于硬件存储器页面表中),所述设置包括可读、可写、可执行、不可读;不可写以及不可执行,提供了一种数据处理方法:创建并存储多个存储器页面访问权限的值的第二表,其中第二表独立于第一表,其中存储器页面访问权限包括至少可读、可写、可执行、不可读、不可写、不可执行;将安全逻辑注册为被注册到INTEL XEN管理程序的超级调用接口的存储器事件接口;安全逻辑通过超级调用接口接收标识了特定存储器页面的页面故障,其中页面故障也可以被提供到p2m页面故障管理器;安全逻辑基于第一表和第二表确定对于在页面故障中被标识的特定存储器页面的不同权限;安全逻辑将该不同权限与页面故障中说明的存储器动作进行比较;仅当该不同权限指示此存储器动作是可允许的时,安全逻辑允许此存储器动作。另一实施例具有比由多个表所规定或确定的权限更多限制的不同权限。另一实施例具有有最多限制的不同权限。
在实施例中,介质进一步包括指令的序列,所述指令的序列在被执行时使得:在p2m页面故障管理器处对页面故障进行处理,以执行与识别和确定步骤并行处理的、到磁盘或共享存储器的需求存储器分页。
在实施例中,介质进一步包括指令的序列,所述指令的序列在被执行时使得:请求基于不同权限将特定存储器页面的特定存储器页面类型权限值更新成不同的值。
在实施例中,介质进一步包括指令的序列,所述指令的序列在被执行时使得:请求基于不同权限将特定存储器页面的特定存储器页面类型权限值更新成不同的值,除非该不同的值不被CPU硬件支持。
在实施例中,存储器页面访问权限包括至少可读、可写、可执行、不可读、不可写、不可执行、可读可写且可执行、以及可读可执行至可读可写(readable-executable-to-readable-writable)。
在实施例中,存储器页面访问权限还包括至少“可读可执行至可读可写”存储器页面访问权限。
在实施例中,介质还包括指令的序列,所述指令的序列在被执行时使得:响应于确定存储器动作是可执行的,将特定存储器页面的存储器页面访问权限自动修改为可读可写。
在实施例中,介质还包括指令的序列,所述指令的序列在被执行时使得确保第二表指示特定存储器页面不是既可写又可执行的。
另一实施例提供了一个或多个非暂态计算机可读介质,其存储一个或多个指令的序列,所述指令的序列在被执行时使得执行如下动作:在正在执行INTEL XEN架构的计算机中,其至少包括INTEL XEN管理程序、至少一个在计算机存储器中的特权域、以及存储在存储器中针对多个存储器页面的多个存储器页面类型的值的第一表相关联的p2m页面故障管理器,其中存储器页面类型权限包括可读、可写、不可读和不可写,创建并存储多个存储器页面访问权限的值的第二表,其中第二表独立于第一表,其中存储器页面访问权限包括至少可读、可写、可执行、不可读、不可写、不可执行;注册被注册到INTEL XEN管理程序的超级调用接口的存储器事件接口;通过该超级调用接口接收标识了特定存储器页面的页面故障,其中该页面故障也可被提供至p2m页面故障管理器;基于将已知存储器的标识符映射到已知存储器页面的元数据的数据库,识别与特定存储器页面相关联的应用程序或其他元数据;确定特定存储器页面是否是可信的;根据可应用于特定存储器页面的安全策略确定是否授权特定存储器页面的使用。
在实施例中,介质进一步包括指令的序列,所述指令的序列在被执行时使得:在p2m页面故障管理器处对页面故障进行处理,以执行与识别和确定步骤并行处理的、到磁盘或共享存储器的需求存储器分页。
在实施例中,在执行时使得进行识别处理的指令包括当被执行时使得进行以下动作的指令:根据特定存储器页面的特定组的字节形成散列值,基于特定存储器页面的一组或更多组可变字节形成擦除掩码,确定散列值是否匹配数据库中的多个已知散列值中的任何一个,并且确定在应用了擦除掩码之后该特定存储器页面的所有字节是否匹配星形列表中的任何其它页面。在此上下文中,星形列表是在任何指定组的字节中具有擦除的页面的列表。
在实施例中,在执行时使得进行识别处理的指令包括当被执行时使得进行以下动作的指令:收获多个其他页面并且从其他页面获得关于特定存储器页面的信息。
在实施例中,在执行时使得进行收获处理的指令包括在被执行时使得通过网络向其它计算机上的安全逻辑的一个或多个实例发送关于特定存储器页面的元数据的一个或多个请求。
在实施例中,在执行时使得进行收获处理的指令包括当被执行时使得进行以下动作的指令:获得与该特定存储器页面为其一部分的应用程序相关联的一个或多个数字证书,对该一个或多个证书进行认证,以及仅当所述一个或多个证书是经认证的时确定对特定存储器页面的使用进行授权。
在实施例中,在执行时使得进行收获处理的指令包括当被执行时使得进行以下动作的指令:获得与来自计算机的操作系统的特定存储器页面相关的一个或多个信息元素。
在实施例中,所述介质还包括在被执行时使得将一个或多个系统级调用注入到操作系统中的指令。
在实施例中,所述介质还包括在被执行时使得在识别之后修改特定存储器页面的指令。
在实施例中,数据库存储表示可执行计算机程序代码所针对的已知区段的存储器的页面的副本。在运行主体程序之前或期间,主体程序的代码的页面进行了比较,以确定已知的代码页面中的哪一个(如果有的话)匹配主体程序的代码。比较的结果被用来确定是否允许或者拒绝执行主体程序的代码。附加地或可选地,可以执行各种补救动作。在实施例中,页面oracle执行一个过程以确定大量的已知存储器页面中的哪个对应于主体程序的页面。特别地,因为数据库可以包括数百万个网页,所以提供了一些技术以快速收敛于可对应于主体程序的特定页面的候选组的页面。
用于最初填充和更新数据库的技术;在执行时将某些程序加载到数据库中;使用多层等级的数据库或一组对等数据库来更新本地数据库并提供上级程序信息和代码;推定抓取(presumptive fetching)及本地缓存管理;以及在更新期间暂停或切断主体程序的执行。在实施例中,提供了用于在缺失网络连接器件对数据库的填充以及在网络连接重建之后的更新调解(reconciliation)的技术。在实施例中,填充数据库是基于通过数据中心控制工具上传的机器图像;从图像中提取程序;并且将所提取的(scavenged)程序与来自外部数据库的更新进行匹配。
已描述的实施例可提供优于现有实践的各种益处。例如,通过阻止恶意用户修改二进制代码并允许其运行,阻止增加新的二进制码并使其运行,实施例能够终止对于计算机程序的几乎所有形式的代码注入和代码修改攻击。实施例还阻止硬件受到类似的攻击。可被挫败的攻击的例子包括诸如RSA攻击、Stuxnet蠕虫之类的高级持续性攻击,以及其他攻击。涉及注射代码的特权提升攻击可以被阻止。
一些实施例可以使用现有的Xen API和允许现有的Xen设施(例如Xen p2m存储器类型的权限功能),以在Xen的顶部基本实现独立存储器访问权限框架时无需更改地进行操作。实施例提供了在允许Xen的页面故障管理器对同一页面或不同页面并行地进行操作的同时,修改Xen以捕获存储器事件并接着执行独立安全性集中处理的能力。因此,例如,实现需求分页、共享的存储器管理、或者需要截留页面故障的其他功能的传统应用可以在无修改的情况下继续执行。然而,在有些情况下,Xen页面故障管理器最终可以促使两个分离的页面故障处理程序的实例的产生一一个在p2m中,而另一个在本文描述的实施例中。因此,实施例在现有的Xen存储类型框架之上提供了一种完全独立的读写执行的存储器访问权限框架,以实现基于最大约束的权限逻辑的隐私安全处理,从而使得当前针对特定页面生效的最大约束权限管理该页面的威胁。
在一些实施例可以在独立的页面故障管理器中被实施的同时,代码的位置(不论在Xen设施中或者其它地方)不是决定性的,并且不同的实施例可以在任何适当的模块、API或者其他的代码位置中实施这里描述的功能。
2.0用于虚拟计算机程序的运行时安全技术-使用XEN的示例性实施例
图1A配置有用于虚拟化计算机程序的安全系统的某些元件的计算机。在实施例中,计算机100包括硬件102,VMM逻辑104,安全逻辑112,操作系统106,和一个或多个应用程序108A、108B。在实施例中,计算机100可以包括任何服务器计算机,个人计算机,便携式计算机,工作站,或者其他的计算机。在实施例中,硬件102表示计算机100的一个或多个硬件资源,包括显示元件、主存储器、大容量存储器(例如盘驱动器、输入输出设备、中央处理单元或者中央处理核心、以及其他硬件。
操作系统106可以包括多个操作系统的任何一个,例如LINUX,UNIX或其变体,Apple OS-X,Microsoft Windows,或者其他操作系统。应用程序108A,108B表示任意数量的一个或多个应用程序,例如数据库,客户关系管理系统,电子邮件服务器,文档或者文字处理服务器,电子数据表(spreadsheet),软件开发环境或者其他应用程序。
VMM逻辑104可以包括管理程序或者其他的虚拟机监控器。安全逻辑112包括一个或多个计算机程序,应用编程接口或者其他的软件单元,它们被配置为实现本文中的一种或多种技术,这些技术通常涉及实施对存储器页面的安全检查。通常,存储器的页面包括与可执行程序或者数据相对应的存储器的4096个字节。在一些实施例,安全逻辑112可以被集成到VMM逻辑104内。在实施例中,VMM逻辑104可以包括常规的管理程序,并且分离的安全逻辑112可以被供应来拓展管理程序的配置或性能以实现这里的技术。在另一实施例中,VMM逻辑104不必包括管理程序,但是可以包括其他的逻辑,其配置为控制在计算机100中被使用的存储器的页面的读、写、执行权限,以这样的方式,VMM逻辑可以截取页面故障。页面故障可能发生于例如,当用户或者计算元件企图执行先前已经被标志为不可执行的存储器页面时。
在一些实施例中,如在本文的其他部分中的进一步描述的那样,扩展的页面表(EPT)107可以独立地或者与VMM逻辑相集成地耦合到安全逻辑112或者通过安全逻辑112管理。对于所有可执行的存储器页面,EPT107可以存储一组存储器页面权限位或者标志,该存储器页面权限位或者标志与可以由VMM逻辑104、硬件102或者操作系统106管理的任何存储器页面权限位相分离或者相独立。
在实施例中,VMM逻辑104可以被配置为不实现页面故障机制,而是使用在计算机100的中央处理单元内实现的页面故障机制。在不同的实施例中,VMM逻辑104可以对包括中央处理器的硬件进行访问,但是硬件访问不是必需的。在一些实施例中,当采用了对于常规管理程序的CPU接口时,那么相对于页面故障处理,VMM逻辑不会取代管理程序,并且如同所见的VMM逻辑104的一体化方法是优选的。与过去的方式不同的是,实施例是联合管理程序的存储器页面权限位进行操作,而非联合操作系统的存储器页面表位进行操作。
例如,图1B图示了这样的实施例,其中Xen操作系统110,由Citrix XenSource开发的开源虚拟机监控器,在硬件102上运行并且管理诸如有特权的dom0108A和无特权的domU108B之类的域。术语“domU”指被标记或表示为使用任意无符号整数的特定域。域dom0具有完全系统控制,然而domU是来宾(guest),也是意味着是虚拟的。安全逻辑112通过适当的应用编程接口(API)被耦合到Xen OS110。可以代替Xen操作系统110使用不同的管理程序,并且使用不同的连接方式来与安全逻辑112相接。例如,就Xen而言,可以添加或者使用Xen内部API,或者安全逻辑可以直接嵌入管理程序内。在一些实施例中,所选的API被添加到Xen,并且操作系统被添加并且被配置为尽可能接近于运行到“裸机”硬件(″bare metal″hardware),逻辑上是在管理程序之下或者替代管理程序(尽管仍然保留一些监督管理作用的元件),并且主持由安全逻辑112保护的单个应用程序或者多个应用程序。
图1C示出了使用Xen操作系统的实施例的进一步细节。在实施例中,Xen操作系统110被耦合到dom0120(或者有特权的domU),该dom0120包括用户空间应用122和驱动器124。域dom0120使用超级调用框架联接于Xen操作系统110。可替换地,可以使用正常功能调用来将安全逻辑112集成于Xen操作系统110内。
本公开中假定Xen的架构是被认知的,但是为了方便和全面起见,在此重复一些Xen的架构性原则。此外,尽管在本文中描述的一些实施例结合Xen和Intel CPU术语来描述清楚的示例,但是实施例不被限制于Xen和Intel处理器的范围,并且具有等效功能的实施例可以利用不同的平台(包括AMD处理器)来实现。在这样的实现方式中,稍微不同的词汇可以被CPU或者VMM供应商使用以指示与那些在本文中描述的逻辑和功能相比等同的逻辑和功能。
利用Xen,在运行时处,在实现Xen或者表示Xen自身的代码之后执行启动加载器(boot loader)。Xen通常被认为是微核心,尽管Citrix将Xen特征化为管理程序。在执行时,通过使用CPU级别的虚拟化线路中继(virtualization hooks),Xen假定在系统中的最大特权位置,指示root模式,这相当于作为管理程序运行。然后Xen创造第一域,表示为dom0,其以非root模式执行,因此是来宾。然而,然后Xen对dom0映射全部的存储器,除了Xen为自身保留的特定存储器之外,以这样的方式,使得dom0具有有效地直接硬件访问。因此,dom0如同其直接从硬件读取和向硬件写入一样操作。此外,当dom0寻求执行特定的硬件访问时,尽管Xen能够截听访问请求,但是所有这样的请求被准许完成,也许可以使用由CPU提供的虚拟化线路中继,从而使得系统能够完成引导程序的载入。实际上,Xen创建了dom0然后对dom0进行引导;从CPU的角度看,dom0是虚拟的,而从硬件的角度来看,dom0不是虚拟的。
因此,dom0能控制硬件,但是管理程序被分在下层。所创建的下一个域domU不能硬件访问。替代地,domU是虚拟的并且根据配置,Xen展现一组缺省的虚拟硬件。例如,展现了缺省的虚拟VGA显卡,对于domU其好像是真实的。然而,当domU访问虚拟硬件时,Xen抛出页面故障,指示出所请求的存储器区间是不可读或不可写的。该故障可以包括故障的管理程序退出类型。作为响应,作为核心的Xen可以通过回调(callback)或者类似的机制将该请求指引至dom0中对硬件进行虚拟化的程序。作为响应,程序可以唤醒对应的驱动器,并且向驱动器告知所发发生的故障以及所请求的写或读的类型。然后驱动器可以(就显示请求的情况而言)利用操作系统的X窗口或者类似的单元完成要求的执行。类似的技术可以用于虚拟化鼠标操作及其他硬件操作。
对于域的有特权或者无特权的指定,规定了该域是否可以执行超级调用接口的已选功能,该已选功能被指定为特权的。所有的管理程序通常提供超级调用接口。有特权的超级调用接口通常与root级别的访问(例如,管理员级别或者安全访问)相关联。例如,仅有特权域可以读取另一域的存储器。因此,dom0可以读取所有每个其他域的存储器。
在实施例中,实现本文的技术的安全逻辑(无论是被实现为图1A的VMM逻辑104,105还是实现为图1B的安全逻辑112)包括实现到管理程序或者VMM的超级调用接口的存储器时间接口的逻辑。图7图示用于存储器页面上的安全的示例性的步骤。在操作702,以在前面的部分描述的那样对Xen系统进行载入或者引导启动。一种实施方式可以包括:(参见704处)修改现有的Xen函数,该现有的Xen函数在发生页面故障时被调用以确定管理页面的本地存储器页面权限,以及(参见步骤706)修改Xen的页面故障管理器(也被称作“EPT违犯管理器(EPT violation handler)”)以实现本文中描述的方法。特别地,安全逻辑实现了对标记进行维护以及独立于Xen本地维护的存储器页面权限地指令Xen操作系统110:存储器的某些页面是可读、可写、可执行的(R-W-X或者r-w-x)。因此,安全逻辑能够进行分别与以下各项相关联的设置、取得和事件操作:设置针对存储器的任何页面指示该页面是否是可读、可写和可执行的比特位;取得独立权限位的值;以及对于所尝试的对标记有独立存储器页面权限位的页面的未预期使用,视为具有页面故障性质的事件。在实施例中,事件包括:页面被标记为不可读,但被试图读取;页面被标记为不可写,但被试图写入;页面被标记为不可执行的,但被试图执行。
在实施例中,对于页面故障的处理通常如下地并且如图8中所示地进行,图8示出了页面故障的处理方法。假定来宾域对标记为不可执行的页面进行写入,参见步骤802。作为响应,在Xen实施方式中,在步骤804,对于Xen的页面故障发生。Xen执行域通知,该域通知规定了存储器事件并且指示特定页面是被标记为不可执行的,并且Xen将事件放入到处理队列中。该队列与域关联,并且也可以与包括运行在dom0或者特权domU中的安全逻辑的用户空间应用相关联。这样安全逻辑可以代表Xen接替页面故障处理,参见步骤806。为了设置或者取得页面权限,用户空间应用返回向Xen发起超级调用,来请求Xen在页面中作出改变并且返回。使用这样的基本通信框架和耦合到Xen的API功能,安全逻辑可以执行页面权限的独立方案而不必修改Xen的本地存储器页面权限和页面故障处理逻辑。
特别地,通过维护一组完全与Xen的本地的存储器页面权限机制相分离的独立存储器页面权限位,安全逻辑可以施行分离的策略而不会中断本地的硬件操作和Xen或者另一个操作系统的接口。确定对于由Xen维护的页面的存储器页面权限,参见步骤808。基于安全逻辑的独立管理的页面的存储器页面权限也被确定,参见步骤810。“最大约束权限”策略如下地使用,参见步骤812。如果Xen本地存储器页面权限指示特定页面是不可读或者不可写的,但是安全逻辑的独立的存储器页面权限指示该相同的页面是可读的或者是可写的,那么安全逻辑将修改其独立的存储器页面权限以指示该相同的页面是不可读取的或者不可写入的,除了以下例外:当安全逻辑在调用Xen对页面进行修改之后接收到返回信号时,该结果将为页面是可读取的或者可写入的。对于读取或者写入该页面的意图,Xen将确定其本地存储器页面权限指示该页面是不可读取的或者不可写入的。作为响应,Xen页面故障管理器必须确定:是在内部处理页面故障,还是将页面故障事件发送给安全逻辑。
在实施例中,确定是通过以下方式作出的。如果故障类型N(N包括读、写、或者执行)发生,并且安全逻辑将页面标记为不可″N″的,那么页面故障将被发送给安全逻辑。此外,如果Xen本地的存储器页面类型指示该页面不应当是可执行的,那么该故障也被Xen页面故障管理器内部处理。结果,安全逻辑能够执行其独立的存储器页面权限,而基本上不会从Xen窃取对于页面故障的所有处理或者不会不得不创建表示安全和管理程序二者的需求的组合页面类型。
在实施例中,被配置为兼容Xen的Intel CPU硬件显示Xen的本地的存储器页面权限并且该权限指示特定页面是否是可读取的或者可写入的。在实施例中,安全逻辑的独立的存储器页面权限包括访问类型,并且指示页面是否是可读取的、可写入的,可执行的或者是组合体。这样,实施例可以实现在CPU上或者Xen不是本地可用的存储器页面权限(例如将页面标记为不可执行)。在实施例中,支持和施行以下存储器页面权限:空(None)、可读、可写、可执行、可读和可写、可读和可执行、可写和可执行、可读-可写和-可执行、以及可读-可执行-至-可读-可写。前面的存储器页面权限可以简化为:不;R;W;X;RW;RX;WX;RWX;RX2RW。
在一些实施例中,特定的CPU可能不能支持上述独立维持的存储器页面权限中的一项或多项。例如,已知一些Intel CPU不支持可写和可执行但是不可读的页面,或者不支持仅仅可写入的页面。在这些实施例中,安全逻辑被配置为不会试图设置等同于不支持的独立的存储器页面权限类型的CPU硬件存储器页面权限,这样的设置将会促使CPU抛出错误配置陷阱(misconfiguration trap)。在这些实施例中,安全逻辑可以将权限设定为空,即始终有效。
2.1RX2RW存储器页面权限类型
在实施例中,安全逻辑实现RX2RW存储器页面权限类型,其使得将硬件存储器页面权限位设置为RW。图9示出了示例的RX2RW过程。最初,用于特定页面的存储器页面权限可以被设定为RX,参见步骤902。发生了对页面进行写入的尝试,参见步骤904。作为响应,页面故障管理器自动地将该页面的存储器页面权限转换为RX,而无需唤醒其他时间管理器或执行特殊的消息传送或者其他故障处理,参见步骤906。实际上,RX页面的可执行(X)位被移除并且被转换为W。安全基本原理(rationale)在于:对RX页面的写操作可以导致对之前的可执行页面的恶意修改;因此,页面应当被认为是有嫌疑的或者″被污染的(dirty)″,并且不应当被允许再次执行。自动地将RX权限转换为RW权限施行了对于这样被修改的页面的立即安全约束。结果,试图执行RW页面的后续尝试将引起安全逻辑能够处理的页面故障。
此外,RX2RW存储器页面权限类型可以用于只可写入或者只可执行逻辑,从而使得没有页面可以同时是可写和可执行的。
2.2使用VMWARE的示例性的实施例
在实施例中,管理程序是来自VMWare的,并且显示API,它们可以以与之前的描述类似的方式使用,并且带有如现在所描述的材料修改。
当Xen管理程序使用CPU硬件扩展来设置存储器页面权限位并且通过扩展的页面表施行权限逻辑时,VMWare内部地执行施行了存储器页面权限的操作系统逻辑的二进制转译(binary translation)。使用二进制转译是因为以VMWare的来宾身份运行的操作系统不像运行有Xen的操作系统那样是准虚拟化的;也就是说,来宾操作系统不能修改其本身,而且替代地,其他逻辑必须修改该操作系统。
例如,操作系统可以被配置为:直接控制硬件资源,并且通过使用特权调用直接修改存储器,但是这样的直接修改与管理程序的基本运行原则相冲突,其必须控制相同的资源和修改。因此,管理程序必须修改操作系统以避免通过特权调用直接使用硬件和存储器。利用Xen的途径是:对来宾操作系统进行重写从而使得功能调用被指向不同的逻辑,该不同的逻辑允许对特权调用进行截取并进行特殊的处理,或者使用硬件扩展从而使得Xen维护了不同于来宾操作系统的页面表并且与来宾操作系统的页面表相比具有更高的职权的基于硬件的页面表。
相比之下,就处于VMWare之下的例子而言,当来宾操作系统执行MOV TO CR3指令以修改页面表时,VMWare将指令的二进制转译实施为一个相对于VMWare管理程序的功能的调用,该调用保证来宾操作系统不能执行特权调用或者该调用施行存储器页面权限。来宾操作系统保持无修改状态,并且在空中(on-the-fly)的二进制转译代替了修改。二进制转译在这样的时候执行,即管理程序将来宾操作系统的可执行性载入存储器,但是这在来宾操作系统被执行之前进行。二进制转译可以在逐页面的基础上执行,其中创建了经修改的页面,其中特权指令已经被移除并且由功能调用所替代。跳转指令可以将运行时流(runtime flow)指向经修改的操作系统页面。经修改的页面可以被存储在代码缓存中。对于本文中描述的安全逻辑,利用VMWare,操作的最后结果与Xen的相同,利用通过VMWare在内部插入的本地的二进制转译步骤。
在实施例中,通过针对未修改的操作系统页面上的执行故障向VMWare管理程序注册,安全逻辑可以施行执行类型页面故障,参见步骤708(图7)。其后,当执行特定的操作系统页面时,响应于页面故障,作为跳转到代码缓存中的经修改页面的替代,VMWare管理程序可以向安全逻辑提供原始的、未修改的页面以进行处理。因此,R-W-X权限逻辑可以被施行,即使是在VMWare管理程序已经执行对于操作系统可执行页面的二进制转译时。安全逻辑的页面故障处理可以使用与上述的用于Xen实现的相同的代码库或API,如图8所示。
2.3使用带有集成的安全逻辑的专用管理程序的示例实施例
图1D图示了这样的实施例,其中专用管理程序安装在来宾操作系统中以与安全逻辑相集成。在实施例中,来宾操作系统106具有对硬件的完全访问,并且安全逻辑112实现有限用途的管理程序,该有限用途的管理程序被安装在来宾操作系统中或者与来宾操作系统相集成以实现处理存储器页面访问的逻辑。EPT107与安全逻辑112连接,并且维护一组存储器页面权限值,其独立于操作系统106可以维护的任何存储器页面权限位。
在这个实施例中,安全逻辑112可以看成是微核,其配置为运行单个来宾操作系统106,并且不会虚拟化硬件102。用户空间程序不知道安全逻辑112的存在。这样的方式的优点在于用户空间程序具有对原始硬件和驱动程序的完全访问,这对于一些类型的应用例如游戏,可能是更好的安排。
在实施例中,技术被用于解决在来宾操作系统106具有对硬件和存储器的直接访问而无需虚拟化时可能产生的潜在弱点。例如,来宾OS106或用户空间程序可以有效地实现对包含安全逻辑112或者其管理程序的执行页面的存储器的直接访问。作为一个示例,来宾OS106可以建立针对网络接口卡的缓冲器和具有指向存储器的页面的指针,不然的话,如果OS106试图直接访问,那么这将导致页面故障。这样的结果是废除了有价值的安全保护。
在实施例中,在安全逻辑112内的管理程序是配置为封闭存储访问,但是包括逻辑以识别对于已经描述过的访问存储器的间接尝试的类型。在实施例中,安全逻辑112被配置有这样的逻辑:该逻辑知道对于硬件接口的所有正确使用并且建立对于所有能够对硬件请求的操作的圈套(traps)或者回调。例如,安全逻辑112可以被配置为:对于特定类型的硬件元件的各个寄存器建立权限值(例如“不可写入”);通过基于权限值的页面故障识别对于在特定类型的网络接口卡上的寄存器的指向(poke);以及作为响应,获得在指向操作中使用的指针的值、对该值进行评估、并且确定该值是否被允许。如果指针值超出界限,那么操作不被允许。
在一些实施例中,安全逻辑112可以被配置为问询各个硬件元件来请求返回硬件标识符,以便判定硬件元件的设备类型,从而可以使用正确的逻辑来建立和执行权限值。可替换地,在不具对于硬件元件的专业知识的情况下,试探步骤可能被用来识别不被允许的指针。
在另一实施例中,可以使用输入/输出存储器管理单元(IOMMU)的功能。IOMMU形成某些CPU架构的一部分,并且包括能够转译和设置权限的一组页面表。在实施例中,安全逻辑112可以设定与具体的硬件元件相关联的IOMMU页面表的权限值,以指示该硬件元件是不可执行的。因此,当来宾操作系统106试图进行不允许的硬件访问时,所请求的访问将失败。在一些实施例中,安全逻辑112可能不可将与硬件相关联的页面表值设置为不可写,因为后续的通过来宾操作系统106的写入企图将导致硬件崩溃,这是不期望的。
作为替换的情况,安全逻辑112被配置为知晓与硬件元件相关联的存储器是否是有可能通过操作系统写入的,并且允许已知的可接受的写入操作。例如,如果已知特定的硬件缓冲器包含数据而不是代码,那么允许操作系统106写入缓冲器是可接受的,因为在缓冲器中不会发生恶意篡改可执行代码的情况。一般,合法的操作系统从不请求硬件修改代码的可执行页面;例如,对于要信任已经载入到文件系统缓存中的可执行的页面不会被修改的文件系统来说,这样的限制是重要的;如果发生修改,那么页面将不得不被再次载入。这样,诸如磁盘之类的文件系统元件不会修改存储器中的代码页面并且只有被恶意地修改过的操作系统、文件系统或其他的元件才会试图对存储器中被标记为可执行并且包括代码的页面进行写入。因此,安全逻辑112被配置为阻断所有对被标记为可执行的存储页面进行写入的硬件直接存储器访问(DMA)请求。
在一种方法中,安全逻辑112执行以下步骤。假定CPU的MMU(或者EPT,即以Intel公司的说法)初始将页面设定为RW。在页面上产生执行步骤,并且作为响应,MMU将页面标记为RX。作为另一响应,对于相同页面的IOMMU页面表权限值将更新为仅仅为R。因此,硬件元件-来自它的所有的请求必须在到达受保护的页面之前经历(traverse)IOMMU-不能在今后修改用R标记的页面。这样,页面在MMU中已经作为可执行的来保护,但是当由IOMMU实施时,不能通过硬件写入。
安全逻辑112还在CPU的存储器管理系统中设置断点,当相同的页面已经自由、被释放或返回到页面池时,其提供反馈给安全逻辑。作为响应,用于页面的页面权限可以在MMU重新设定为RW/非-X,在IOMMU重新设定为RW;这样响应的操作通过移除非-W的权限,保证了当同一页面在之后用于不同的目的时硬件不会崩溃。
结果,CPU系统的可靠硬件元件可以被用于防止甚至对于执行程序的硬件DMA攻击。同时,来宾操作系统106可以直接使用硬件,而不会暴露硬件弱点。另外,前面的技术可以在包括台式机、膝上型计算机、平板计算机、智能电话等等的个人计算机上实现;不同于之前的或者替换的方式,本文的技术不被限制于传统的管理程序通常为可用的服务器计算机或者云计算背景。这种组合的能力是极其强大和有用的,并且在该领域表现出了明显的改进。
2.4描述运行时间处理的示例实施例
图2示出了一种用于在虚拟化的计算机环境中对存储器的页面进行识别、验证和授权的方法。
在操作系统Xen110是管理程序的实施例中,安全逻辑112通过超级调用接口注册到Xen的“libxc”库204,该库204被耦合至Xen控制驱动器202。控制驱动器被配置为将超级调用映射到操作系统调用以辅助用户空间程序的操作。在实施例中,安全逻辑112包括对libxc的修改和对Xen控制驱动器的修改,该Xen控制驱动器增加了API调用、驱动器功能和库函数。
表示为“vbind”的绑定逻辑(binding logic)206是在Xen控制驱动器的上层,并且在功能上将安全逻辑112的方面绑定到管理程序。绑定逻辑206充当管理程序的专用适配器,因此根据管理程序是Xen、VMWare还是专有管理程序来使用不同类型的绑定逻辑。绑定逻辑206将API输出给安全逻辑112的元件,该元件被配置为在其他操作之间执行以下动作:在214处识别存储器页面、在212处对存储器页面进行验证、以及在216处激活存储器页面,与其他操作一起。识别、验证和激活操作214、212和216可以包括图2所图示的逻辑环路,并且实现存储器不变式(invariant),该存储器不变式施行策略以及每个存储器页面的真实性(authenticity)。
图10A,图10B示出了识别存储器页面的示例性的步骤。首先参考图10A,在实施例中,在步骤1002,在Xen或另一个管理程序已经传递到安全逻辑112的页面故障上,标识了特定存储器页面(例如,到页面号的指针)、访问的性质(读、写、执行等等)、与页面相关联的原始权限(与所请求的访问的性质不匹配)、以及页面故障所发生的域的信息被接收。这样页面故障的主题(subject)这里被表示为“参考页面”。当页面故障是由试图执行导致的时,安全逻辑112还没有授予该页面执行的权限。因此,作为响应,安全逻辑11设法在214处识别页面,在212验证页面,并且在216授权页面的执行。在214处的识别中,安全逻辑112寻求确定参考页面与页面数据库208中已知的页面的匹配,这基本包括已知程序代码指纹(fingerprint)的存储库。214处的识别的结果为:知道了特定的程序名或文件名(例如notepad.exe),并且还知道了在此程序或者文件内的相对于参考页面的特定的页面号。在212处的验证可以包括:确定参考页面是可接受的并且应当被授权执行(或者阻止)。
214处的识别可以包括:确定一组的可以与参考页面相对应的一个或多个页面,参见步骤1004;例如,同一页面可以在同一程序的多个不同版本中表现为没有变化。212处的验证可以涉及:确定参考页面确实匹配一个候选页面。216处的授权或激活可以涉及:确定页面数据库不包含有关参考页面的不利信息,因此,页面的执行应当通过将参考页面的独立的存储器页面权限改变为RX而不非RW来允许,该改变也施行了策略。216处的授权可以导致可编程控制地返回一个结果到MMU,该结果将针对同一页面的基于硬件的存储器页面权限(例如,在Xen管理的EPT中,或者在由其他管理程序管理的基于硬件或软件的页面表中)标记为RX。
在214、1004处的对页面的识别可以涉及以下的部分。在实施例中,214处的识别在实时环路中被执行,该执行发生于页面故障已经暂停了与特定操作系统相关联的虚拟CPU时。因此,214处的识别需要快速地进行以避免引入过多的延迟,过多的延迟可能导致由竞赛条件(race conditions)引起的崩溃,例如在一个虚拟CPU等待另一已经被暂停的虚拟CPU太久的情况下。不幸的是,识别过程可能是不一般的,因为参考页面可能包含非确定性的数据,位置改变或其他修改,这会使得参考页面在运行时与在页面数据库中所有的其他页面在内容上相比稍有变化。
在实施例中,页面数据库208包括每个程序的每个页面的预先计算的表征或者“指纹”,这些程序可能会针对由这里的技术保护的计算机的用户的合法化而被使用或者被视为有用的。每个页面指纹包括页面中的固定字节的每个范围的数据;在上下文中,“固定字节”指的是页面内不是数据或者不会在不同的版本中经受改变的字节。每个页面指纹还包括从页面中的可变字节的各个范围导出的擦除掩码(erasure mask)。在此上下文中,“可变字节”指的是页面内包括数据、位置改变、或者其他可能随着时间改变的值的字节。而″擦除掩码″指的是一个标识,其指示特定字节已知的是可变的,因此下层的实际内容在后续的分析操作中将被忽略。
预计算页面的结果数可能是相当大的,并且即使忽略在擦除掩码中的字节,在参考页面中的字节值与在数据库208中的所有页面的字节值的蛮力比较,将花费过多的时间。尽管它是一个有效的步骤,但是它可能是不可实行的。因此,一种简化方法被用于限制所考虑的页面的数目。
在实施例中,页面启示(page oracle)逻辑210被配置在数据库208和安全逻辑之间;在抽象概念中,页面启示逻辑210被配置为接收参考页面,并且其返回可能匹配参考页面的候选页面的一个或多个引用的子集或列表。在实施例中,页面启示210管理散列值的存储库,其包括用于页面数据库中的各个页面的一个或多个散列值。各个散列值是通过将页面的字节的特定范围应用到单向低冲突的散列算法(例如SHA-1)来获得的。例如,页面启示210可以创建针对每个页面中的相同的16字节范围的字节的散列值,并且存储与页面的标识符关联的结果的散列。
然而,受擦除掩码影响的页面可能不能够以这样的方式进行散列,因为字节的特定范围可能覆盖位于擦除掩码内的可变数据的一个或多个元素。因此,在实施例中,页面启示210还维护了页面的星形列表,该星形列表包括例如所有由于可变数据或者擦除掩码不能以前述的方式进行散列的页面的链接列表。因此,在实施例中,可以针对所有已知的不变页面,维护散列存储库,并且可以针对具有擦除掩码的所有页面维护星形列表。
在此实施例中,214处的识别涉及:首先准备参考页面在与页面启示210针对其他页面所使用的相同范围的字节处的散列值,并且将得到的散列值与在散列值的存储库中的所有散列值比较,参见步骤1005。基于比较结果,页面启示210提供基于散列值存储库的一个或多个匹配的候选页面的第一子集,参见步骤1006。
然而,第一子集可以包括一个或多个伪匹配(false match);伪匹配可以发生于用于计算参考页面的散列的特定范围的字节恰好落入参考页面内的可变数据的区域中时。在这样的情形中,散列值可以偶然匹配在散列存储库中的值,但是该参考页面实际上与页面数据库208中任何相应页面相当不同。
因此,作为附加检测,可以通过比较页面中的所有字节,来对参考页面和第一子集中的所有候选页面执行一种“蛮力”的、逐字节的比较,参见步骤1008;结果是参考页面与零个、一个或多于一个的候选页面的匹配。如果在参考页面和在子集中的一个候选页面之间产生精确的匹配,那么214处的识别过程完成,并且处理继续到212处的授权步骤。另外,额外的参考页面对在数据库208中的其他页面的蛮力地比较可以通过预计算排除,此时数据库填充有指示了数据库中的一个或多个页面是已知的相互匹配的信息;那么,在运行时处,当散列匹配和蛮力检测发现单个页面匹配时,该单个页面匹配将在数据库中自动地与已经被预定为额外匹配的其他页面相关联。
如果对在第一子集中的候选页面的蛮力检测失败-即在第一子集中不存在匹配页面-那么参考页面可以基于蛮力与星形列表中的各个页面比较,如步骤1010所示。在一些实施例中,检测星形列表可以涉及:测试数千个页面,其可能需要过多的时间、存储空间或者消息传输空间。因此,在实施例中,在对星形列表采取蛮力比较之前,第二散列可以从与字节的第一范围相同的页面中的不同位置处的第二范围的字节中计算,以用于参考页面,然后该第二散列被用于从星形列表检索匹配候选页面的第二子集,参见步骤1012所示。因此,系统可以附加地在星形列表中维护用于页面的第二散列存储库。如果在用于参考页面的第二散列和用于候选页面的第二子集的一个页面的第二散列值之间发生第二精确匹配,那么处理可以断定匹配存在的概率很高并且返回成功的结果。
另外或者可替换地,一种集合相交(set intersection)的操作可以在从来自星形列表的候选页面的第二子集以及散列存储库中引用的候选页面的第一子集上执行,来产生第三子集。然后,可以对参考页面与第三子集中的各个页面进行蛮力的、逐字节的比较,如图10B的步骤1014所示。
可以在多个实施例中使用散列值长度、散列值的数目和集合相交的数量的多种组合。例如,可以使用两个(2)16-字节散列;也可以使用带有交集的十六个(16)一字节的散列等等。因此,系统可以根据调节参数值来被驱动,基于相对于精度、时间和存储空间的不同性能目标或者权衡来选择调节参数值具有不同的值。
在一些实施例中,特定应用程序的第一版本可以载入存储器的多个页面,该多个页面与应用程序的第二版本的那些页面是同等的。与212处的验证相关联的策略220可以规定:允许执行第一版本,但是不允许执行第二版本。当这里的过程正在评估以与应用程序的第一版本和第二版本两者中形式相同的形式使用的参考页面时,即使参考页面是与两个版本都相同的形式,就授权而言不同的结果成为必要的。因此,在实施例中,附加的处理时间可能致力于得到附加信息以实现用于参考页面的授权结果。
2.5采集过程、补救、授权、执行
在实施例中,再参考图2,采集过程218可以用于收集有关其他页面的附加信息,以用于引导对于参考页面的决定。图11示出了在实施例中可以使用的采集过程的一部分。在实施例中,安全逻辑112可以发出一个请求(诸如至管理程序或其他逻辑),以检索当前在存储器中跟随参考页面的下一页面或者前一页面。所检索的页面可以经过与先前所述相同的处理以确定该页面是否应当被授权,并且如果是这样的话,结果可以被用于影响或确定用于原始的参考页面的授权结果。该步骤可以重复,只要处理时间仍然足够用来获得一个结果。
如果所请求的页面没有在存储器中,所请求的页面或者完成参考页面的评估所需要的其他页面的请求列表能够被创建,并且参见步骤226处,验证逻辑212可以为针对请求列表中的各个页面注入核心或来宾级别(guest-level)的页面故障,通常每次一个页面故障。当管理程序恢复虚拟CPU的执行时,该虚拟CPU将已经在步骤226处载入了页面故障,仿佛用户空间程序已经采取了该页面故障,即使对于所请求的页面的实际访问没有实际上发生。作为响应,操作系统将运行其页面故障处理程序,并且将所请求的页面载入存储器,并且将控制返回给安全逻辑112。这些处理使得安全逻辑112能够处理所请求的页面,而不是再次重复处理参考页面,因为参考页面还没有被授权以用于执行,否则这将会发生。
可替换的是,在步骤226处,睡眠或者放弃(yield)指令而不是页面故障可以被注入,以实质上争取时间来继续处理参考页面。在实施例中,可以注入计时器中断或者错误中断。使得操作系统获得向前的进展的任何中断或故障可以被注入。可替换地,如果已知操作系统的类型,那么可以注入OS级别系统调用。例如,利用Linux或Windows,可以模拟系统调用指令。尽管用户将不会看到应用的进步,但操作系统正在阻止系统的崩溃。
基于作为采集过程218的一部分获得的信息,一个或多个变化可以在程序中产生,作为重写步骤222和/或补救步骤224的一部分。可替换的是,可以在激活步骤216处授权参考页面的执行。
当用于特定参考页面的应用程序的版本是未知时,或者当识别步骤214导致零匹配的结果时,或者低可信度的匹配时,或者不完全匹配时,附加的步骤可以在采集步骤218发生,参见步骤1102(图11)。在任何这些情形中,如补救步骤224,参考页面可以被修改为允许页面允许的情况。本质上,到达补救步骤224意味着关于特定页面的可用信息是如此少以至于该页面不能被准许运行,因为它可能已经被黑客侵入或者被修改而带有安全弱点。补救步骤224被配置为:基于不常使用或者未期望运行的应用程序的存储器页面的另一存储库、策略信息、或者网络信息,来获得对于页面是否应当被允许执行的问题的权威性回答。例如,参考页面可能是新安装的应用程序的一部分,因此可能需要咨询分离的存储库来获得用于授权决定的更多信息。
在实施例中,补救步骤224与操作系统并行地运行,从而提高更多时间以完成补救而不会导致系统崩溃。
在实施例中,补救步骤224触发采集过程218。在此上下文中,采集指的是:为了承担对于存储器的不然位置页面的补救,使用操作系统逻辑来从操作系统获得更多信息。在实施例中,采集包括自省(introspection),涉及以调试程序的方式读取另外的专用的操作系统数据,如步骤1104所示。另外地或者可替换地,采集过程218可以包括以来宾应用程序的名义向操作系统发起一个或多个问询,参见步骤1106。例如,如果参考的存储器页面是用户空间应用程序的一部分,采集过程218可以在用户空间程序运行时将操作注入其中;
可替换的是,来宾程序的存储器中的二进制指令可以被重写并且被允许执行。页面故障可以被注入以在所注入的操作或指令已经被执行之后使得控制返回至安全逻辑112。例如,N3中断可以在所注入操作或指令的末尾注入,并且安全逻辑112能够注册为N3中断的处理程序;因此,当所注入的操作或指令结束执行时,安全逻辑将被给予控制(权)。
另外或者可替换地,要求的操作或指令可以被注入到同时运行的另一个步骤中,以用作安全逻辑112的代理。例如,安全逻辑112可以在开始执行后启用分离的“安全审核(security audit)”过程,该安全审核过程包括代码的紧凑环路(compact loop),从而引入很少开销。其后,当需要采集时,指令或者操作可以被注入到安全审核步骤。上述的存留代理的使用对于在标题为“使用带有集成的安全逻辑的专用管理程序的示例实施例”部分中的上述实施例是特别有用的,因为这样的实施例不能提供直接的网络通信访问以便收集附加信息用于验证或者授权决定。
采集过程118可以包括收集较大范围的信息。例如,采集可以包括以下内容:请求操作系统提供参考页面是其中一部分的用户空间来宾应用程序的名称;要求程序的架构,例如二进制的规模、在二进制中的有多少代码和提供了多少程序;获得构建程序时使用的构建字符串(build string);获得应用程序(例如Windows应用程序)所携带的其他元数据;获得程序的原始二进制,例如通过存储器将程序的拷贝映射到程序的应用存储空间中,从管理程序复制存储器并且退去存储器映射来实现;识别已经被链接或者可能被链接的共享库;请求由操作系统管理的证书存储的内容以检查与程序相关联的证书;以及其他值。
在实施例中,采集步骤118的第一子步骤包括:通过从网络资源中请求信息来收集来自网络的信息,参见步骤1108。例如,网络信息收集可以包括:创建网络广播请求并且将网络广播请求发送至安全逻辑112的其他实例或者发送至存储器页面信息的一个或多个缓存,该网络广播请求提供了参考页面的副本以请求任何节点是否能够识别该参考页面。然而,这样的要求可能产生大量的响应,并且可以看做最后机会的步骤。因此,在替换的例子中,网络请求可以包括应用程序名称和版本号,以及相联合的提供了前述段落中说明的任意或所有数据的请求。网络响应例如可以提供:网络中的节点所知的关于根据名称和构建号码的特定应用程序的所有信息,或者所请求的信息不存在。例如,如果请求找寻有关在恶意的存储器页面中引用的应用程序的不存在的版本信息,网络可以权威性地回应:所请求的信息不存在因为版本号是未知的或者无效的。
如果没有网络连接可用或者没有网络节点回应,那么基于策略220,可以采取其他步骤。例如,下一个步骤可以是:检测与程序关联的证书,对证书进行认证并且如果证书被成功地认证,则允许执行。在一个实施例中,当没有网络可用时,如果关联有信任的已签署的数字证书,策略220可以允许程序本地执行,但是在网络变得可用时被标记为进一步评估。这样的方法将允许怀疑程序在没有网络访问的个体的设备上本地运行(例如,在飞行器飞行时),同时确保随后的访问将触发程序的再评估过程。
由于补救步骤224和采集过程218,程序可以被授权以在步骤216执行和激活。可替换的是,其可能需要请求用户确认程序应当运行。在一个实施例中,来自用户的否定响应导致在终止步骤228处程序终止。因此,在实施例中,验证步骤212可以被配置为具有打开对话框、窗口,或者以其他方式向用户发起提示或询问的用户接口能力。在实施例中,安全逻辑112可以通过管理程序控制显示屏,以可靠地将信息写入到屏幕。在一个替换的例子中,在安全逻辑112正在等待来自用户的对于关于是否允许执行、造成终止等等的提示的响应时,整个操作系统的操作可以被暂缓;可替换的是,操作系统可以被允许继续进行,从而使得其他用户空间应用程序可以继续运行。在另一实施例中,安全逻辑112可以自动地触发终止步骤228并且导致用户程序终止。
当参考存储器页面是核心空间程序的一部分时,例如处于加载过程中的内核驱动程序,终止步骤228常常能够卸载内核驱动程序。例如,在Windows和Linux的某个版本中,内核驱动程序的加载调用了初始函数,该初始函数在接收到指示故障的返回代码时,自动地卸载内核驱动程序。因此,内核驱动程序可以成功地关闭而没有注入故障,其通常对于不信任的驱动程序是不可行的,通过重写收集步骤218从而以这样的方式促使卸载而不是注入故障。
如果参考存储器页面是损坏的核心代码的一部分,那么补救步骤224可以涉及将存储器修补为想要的结构或者通过修复存储器。例如,如果参考存储器页面被发现已经改写了被标记为不可写的存储器,那么被改写的存储器可以被恢复。
3.0创建和使用存储器页面元数据的数据库
在实施例中,提供了用于来最初填充和更新描述为存储库208的数据库的技术。这些技术包括用于以下各项的技术:在执行上将某些程序载入到数据库;利用多层等级的数据库或者一组对等网络数据库来更新本地数据库和提供高级的程序信息和代码;假定抓取(presumptive fetching)和本地缓存管理;以及暂停或消灭期间更新。提供了用于以下各项的特定技术:用于无网络连接期间的数据库填充以及在网络连接的重新建立之后的调和;用于基于通过数据中心安排工具上传的机器图像的数据库填充;从图像中提取程序;以及将所提取的程序与来自外部数据库的更新进行匹配。
在实施例中,存储库208包括各个存储器页面的元数据或指纹,并且每个指纹包括存储器页面和任意擦除的副本或者擦除页面及其擦除的加密散列(cryptographic hash),以及诸如出处数据(provenance data)之类系统一直的其他元数据。在一个实施例中,各个指纹包括描述存储器页面的出处的充足信息,例如页面所来自的原始的可执行文件,以及页面所来自的文件的位置;在一些实施例中,指纹数据可以识别页面所属于的一个或多个程序,创建存储器页面的动态链接库(DLL),或其他的信息。出处数据能够独特地识别存储器页面,因为单独的存储器页面的内容是不足以提供独特的标识的。出处数据可以包括存储器页面所来自的包、原始包与其他包(例如升级包)之间的关系、构建版本、以及类似的信息。
出处数据可以包括信誉值,该信誉值指示存储器页面的正面或负面的安全信誉。出处数据可以包括或引用存活时间(time-to-live)值,其指示特定存储器页面何时应当被认为是不安全的、到期的、或不可用的。出处数据的一个或多个元素可以被存储在负面缓存存储器中,如下文所述。
图12示出了生成和处理存储器页面指纹数据的示例过程。获得指纹数据可以始于:处理二进制可执行文件以提取能够来自该二进制文件的所有可能的存储器页面、有效地计算所有这些页面的形式和内容,因为可执行文件将生成它们以用于实际用途,参见步骤1202。在实施例中,关于通常对二进制文件进行加载的二进制加载器(例如,LINUX的动态加载器ld.so)的加载过程的操作的信息可以被用于确定从二进制文件生成的页面的存储器内布局,以使能数据库的正确填充以及指纹的争取确定,参见步骤1204。例如,重新定位可以影响擦除掩码的结构。
指纹的生成可以实时地完成,或在预计算步骤中完成。在一个实施例中,指纹的生成可以通过执行二进制的实际加载、并且检查存储器、寄存器或其他资源中的结果、然后移除实际加载的存储器图像来执行,参见步骤1208。在另一实施例中,可以对加载步骤进行模拟,参见步骤1210。在步骤1210的模拟过程中,模拟逻辑基于现有的加载程序例如开源加载程序的已知的逻辑,处理二进制以确定如果它们被加载,存储器页面应当如何呈现在存储器中,然后使用结果信息来生成指纹。例如,二进制可以被解析以确定位置、偏移量、区段、相邻性和其他值。
利用这些技术,如上所述类型的存储器页面指纹数据被创建和存储,参见步骤1212。指纹的生成可以在与本文描述的安全逻辑关联的供应商或服务提供商处,或者在服务提供商的客户处,或者在与客户的终端用户相关联的个人计算机处完成。在一个实施例中,诸如商业软件产品或开源软件之类公开可用的软件的指纹被集中于服务提供商处进行计算并且被分发至多层的缓存存储设备处,参见步骤1214。然而,同等的计算也可以在系统中的任何其他节点处执行。在实施例中,多层缓存存储设备的节点与诸如服务提供商、客户和终端用户系统之类的其他节点之间的通信使用带有可取消的数字证书的经签署的安全数据通信通道。通过使得服务提供商能够终止使用已确定是无效的或者到期的或者在所签署的密钥被破坏的情况下的指纹数据,这些技术增强了该系统中的安全性和可信度,并且增强了在依赖于指纹数据进行对于存储器页面的安全决定的其他系统中的安全性和可信度。以这样的方式,诸如客户安全装置之类的端点可以得知指纹数据是不能使用的。
在一个实施例中,服务提供商处的计算机系统被配置为周期性地搜索公共网络化资源,或者其他网络化资源,以发现最新发布的软件数据包,或者关于它们的信息,以供生成更新的指纹,参见步骤1216。在实施例中,如在本文中的进一步地描述并且如1215处所示,系统配置有这样的逻辑,该逻辑能够从客户端计算机接收请求,并且将关于特定存储器页面的指纹返回,以供对于那些页面的安全决定。如果系统确定存储库208或存储系统的其他元件不包括所请求的指纹数据,如1217处的测试,那么控制传递到1216并且服务提供商计算机可以启动向网络化资源的问询以获得所请求的指纹数据。因此,指纹数据可以通过使用周期性的探询处理或者响应于客户端的请求按需地进行升级。
在实施例中,负面数据可以被缓存,参见步骤1220。在负面缓存中,已知某一特定的存储器页面不存在或者是无效的并且存储库208不包含该页面的指纹。作为替代,存储库208存储与该页面有关的元数据,并且可以响应于请求将该元数据返回到客户端。例如,在此描述的采集逻辑可以使用这些技术来比较特定存储器页面的版本号与存储在负面缓存中的元数据,从而确定版本号是否是无效的。这样的方法使得采集器例如不会传递徒劳的信息以向网络化资源探询关于软件的不存在的版本的更多信息。另外,对于找寻页面以查找软件的无效的或不存在的版本的问询的响应可以包括对于关于该软件的负面缓存信息的引用。
本节中描述的所有技术可以在系统中的任何适当的计算元件处被执行。尽管多层的存储系统可以由服务提供商进行部署并且以如上所述的方式进行管理,这里的技术应当被视为能够集成到任何适当的计算节点的覆盖技术(overlay technology),对于适当的计算节点而言存储器页面安全性信息是有用的。覆盖技术可以以准许新机器或节点的添加并且告知现有的机器或节点新的元件正在加入覆盖中的灵活的方式配置。
不同于之前的方法例如DNS,本文中的多层的存储系统可以包括可被问询的任意数量n的缓存,和任意数量r的根缓存服务器(root cache servers)。端点可以选择任何缓存服务器或根缓存服务器以进行问询,并且任何缓存服务器可以将问询引向系统中的任何其他服务器。如果在一个缓存服务器处耗费太多时间以答复,问询可以随时被重新呈现至另一不同的缓存服务器。因此,不需要缓存错漏(cache miss)来引用至更高的节点,并且无需遵循将问询向上传输至服务器的多层的严格等级制度,从而提升了扩展性;作为代替,提供了等级制度来支持数据一致性而非僵硬的通信进程。另外,端点节点不需要接收描述根节点的网络位置的配置数据。端点节点可以通过穿越(pass-through)失败问询的等级制度来获得对根节点的访问。因此,等级系统是可选择地使用的,但是它的使用并不是要求的。
缓存内容可以包括静态数据和动态数据。指纹数据是静态数据,并且可以例如响应于标识了具体程序或者版本的问询而返回。在实施例中,动态数据可以响应于对缓存的问询而被生成,该问询例如提供了存储器页面的全部内容以及确定该页面是否已知的请求。在实施例中,静态数据可以从第一缓存结构处得到,该第一缓存结构使用内容数据网络(CDN)技术以快速地服务数据,而动态数据可以使用例如对于web服务器的Java动态问询。
1218处从存储系统对客户端问询的响应可以采取多种形式。在实施例中,响应可以为客户端问询提供任何实质性答案、或者指示没有答案可用的信息、或者要求客户端在稍后的时间重新呈现问询的交叉请求(cross-request)。任何这些或其他类型的响应还可以包括要求客户端提供附加信息的交叉请求。例如,假定客户端请求来自MozillaFirefox6.0的页面。存储系统可以将问询解释为隐含地指示了该客户端不具有任何有关Mozilla Firefox6.0的信息,并且存储系统可以通过提供所请求的页面以及还提供将客户端引向此软件的所有页面的列表的指针或者URL,或者通过将客户端引向具有用于该软件的所有页面的另一资源来进行回应。然后客户可以选择预抓取(prefetch)在之后的请求中使用的所有参考页面。这样的方法减少了不然存储系统将不得不响应于针对有关动态数据的多个请求执行的处理的数目。
另外,该方法改进了具有高延迟条件下的性能。例如,该方法允许客户端在延迟的条件下快速地获得稍后可能需要的所有页面,不然延迟就导致对于与有关动态数据的多个请求的更缓慢的回复。作为另一示例,例如通过关闭连接或其倾向于更随到另一网络化资源的间接链接,客户端不需要执行预取。客户端可以通过使用内部逻辑来推迟这些链接,该内部逻辑将预抓取安排为稍后的时间。根据客户端的选择,客户可以打开流连接(streamconnection)例如来获得参考页面,而不会有对于存储系统的节点的扩展往返通信(round-trip messaging)。这些方法能够使得客户的行为与不同网络的延迟条件相协调。
本文中的方法没有要求所有缓存节点的同步。因为存储器页面数据是一次写入数据,一致性的问题并不是重点考虑的问题,并且典型的问题可能是缺少存储器页面的完全组。来自存储系统的响应可能向客户端指示存储系统是否正设法获得不能立即可用的页面。所有的端点可以被同等地对待,并且一些端点可以实现指纹的缓存存储且可以用与上文描述的用于其他节点的相同的方式生成动态数据。
本文的方法还为丢失的网络连接提供适应性(resilience);客户可以通过使用除了指纹数据之外的数据来继续执行对于存储器页面的安全评估以获得安全决定,或者简单地采用负面安全决定并将页面标记为不可用、执行补救、或者针对关联的程序达成“终止”的决定。当网络连接恢复时,可以重新开始对存储系统的问询以及来自存储系统的回答。因此,获得来自存储系统的响应不会阻碍客户端的前向发展。
数据库的原始填充可以根据多种方法产生。在一个实施例中,存储库208最初是空的,而客户端请求特定的存储器页面会导致存储系统在对客户端进行回复或者推迟该客户端的同时从网络资源获取信息、生成存储器页面和在空中的出处数据、以及在存储库中构建新的条目。该方法可以用于随着时间构建完整的存储库208。
在另一实施例中,其可以在这样的环境中使用,例如,其中网络管理员知晓特定的软件已经被授权在企业中使用,管理员可以对服务提供商标识一个或多个软件包或版本,并且安全逻辑或关联服务提供商的其他逻辑可以从网络资源寻找这样的信息,该信息足以导致在存储库208中产生针对该软件的条目。
在另一实施例中,安全逻辑被安装在特定的计算设备上,例如膝上型计算机。安全逻辑扫描膝上型计算机上的所有可执行文件或二进制代码(binaries)并且安排向存储库添加与二进制代码相对应的条目。这样,实施例可以在安全逻辑的上下文中实现;当完成安装并且膝上型计算机重启时,膝上机上的所有二进制代码的指纹对于安全逻辑是可用的,该安全逻辑可以在膝上机的本地或者在缓存存储系统的网络化部署中。
在另一实施例中,本文中的方法与网络化存储(例如,云存储系统)相集成。例如,计算设备的文件系统可以被上传到云存储系统,并且与云存储系统相关联的安全逻辑可以自动地扫描文件系统中的二进制代码、生成指纹并将指纹存储在存储库208或者缓存存储系统的其他元件中。在相关的实施例中,当计算机接触云存储系统并且请求下载和使用特定的图像或特定的可执行软件时,在对下载请求进行服务之前,云存储系统的安全逻辑可以以之前在本文中描述的方式对所请求的图像或可执行软件进行认证。因此,正在寻求来自云存储的再成像(re-imaging)或者基于云的软件的安装的计算机设备可以被保护免于在空中或者以透明的方式与该图像或软件相关联的威胁或者操作问题。
4.0程序重组
4.1概述
在实施例中,计算机实现的方法包括:获得对于计算机程序代码的访问;基于静态分析和动态分析的任一项识别计算机程序代码中的多个代码段;重组计算机程序代码,结果通过将该多个代码段重新排序为与该多个代码段的原始次序不同的新次序来生成和存储重组代码;其中新次序是不可根据原始次序预知的;重写该重组代码的一个或多个指针,以指向重组代码中与重组代码的次序一致的新位置;其中该方法是通过一个或多个计算设备实现的。
在实施例中,重组包括将一个或多个函数移动到在重组代码内随机选择的新位置中。
在实施例中,重组包括通过以下各项中的任何一项,来对特定的代码区段内的多个指令进行重组:交换指令位置、重新分配指令、通过插入随机选择数目的无操作指令来隔开指令。
在实施例中,重组包括在重组代码中置换随机地选择的寄存器标识符,它们是在计算机程序代码中引用的。
在实施例中,重组包括在堆栈内修改本地函数变量的次序并在堆栈中添加随机选择的填充字节(padding byte)。
在实施例中,重写包括:重写指令指针以正确地指向与计算机程序代码内的原始位置相对应的在重组代码内的位置,以及重写数据段指针以引用重组代码中的数据段的新位置。
在实施例中,该方法还包括:当重组代码在存储器中时,周期性地重复方法。
在实施例中,新次序是伪随机的。
在实施例中,该方法还包括:检索指示了被用于先前对于重组代码的重组的新次序的存储信息;选择不可预知的不同的新次序;更新存储信息以指示该不同的新次序;根据该不同的新次序对重组代码进行再次重组。
在实施例中,该方法还包括:检测到计算机正在加载动态加载器;允许将动态加载器加载到存储器中,然后暂停动态加载器的操作;修改存储器中的动态加载器以重定向动态加载器的一个或多个系统调用指令,从而促使引用重组代码;更新重组代码的二进制头部(binary header)以反映出新次序;允许动态加载器基于更新之后的二进制头部来加载重组代码。
在实施例中,修改包括修改一个或多个文件OPEN(打开)调用以将动态加载器重定向到包含重组代码的不同文件。
在实施例中,修改包括:生成和存储用于重组代码的专用存储映射;检测到动态加载器已经发出了OPEN程序调用;响应于动态加载器发出了与先前检测到的OPEN系统调用相关的READ(读)或MMAP系统调用,截取该READ或MMAP系统调用并根据专用存储映射返回一部分重组代码。
在实施例中,该方法还包括:响应于动态加载器发出了与先前检测到的OPEN系统调用相关的READ(读)或MMAP系统调用;将READ或MMAP系统调用修改为包括存储器分配调用;在作为存储器分配调用的结果而被分配的存储器中存储该重组代码的一部分。
在实施例中,该方法还包括:检测到动态加载器已经请求了文件的共享存储器映射;将共享存储器映射修改为没有文件的专用映射调用;在作为存储器分配调用的结果而分配的存储器中存储该重组代码的一部分。
在实施例中,该方法还包括利用共享的专用调用或共享存储器调用以对共享存储器进行分配和命名。
在实施例中,方法还包括:对多个指针进行重写以参考非共享的数据段,该非共享的数据段被配置为将指针重新映射到重组代码中的特定位置。
在实施例中,该方法还包括:响应于检测到计算机正在加载动态加载器,启用动态加载器的固有的随机区段加载功能。
在实施例中,该方法还包括:存储计算机程序代码的备份副本;在重组代码的执行过程中:将重组代码的存储器的所有页面的存储器页面权限设定为不可读,不可写,和可执行;响应于检测到源于对重组代码的存储器的页面中的特定一个页面的读取或写入的尝试的陷阱,从存储的计算机程序代码的备份副本返回与该重组代码的存储器的页面中的该特定页面相对应的原始页面。
在实施例中,该方法还包括:存储函数指针在计算机程序代码中的位置;检索指示了被用于先前对于重组代码的重组的新次序的存储信息;选择不可预知的不同的新次序;更新存储信息以指示该不同的新次序;根据该不同的新次序对重组代码进行再次重组以获得新的重组代码;利用模式识别方法来识别在堆栈上的一个或多个指针;基于所存储的函数指针的位置,在堆栈上重新对准该一个或多个指针,以指代新的重组代码中的相应位置。
在实施例中,该方法还包括:检测跳转到新的重组代码中的不存在位置的一个或多个重新对准的指针;基于检测该计算机程序代码是否已经被重复地重组,确定是否允许或阻断跳转的重新对准的指针的执行。
4.2详细描述
在实施例中,在此的安全逻辑实现了用于执行计算机程序重组的过程。在一个实施例中,重组过程包括使用对于代码的静态和/或动态的分析来提取足够的信息,从而以不可预测的方式对区段内的代码进行重组,然后可能进一步地对代码的行为进行重排;针对程序的每次援引(revocation)或者基于周期或根据需求,在加载时间或预先或实时地在存储器内对文件进行重组;通过转播二进制代码(或者从之前的二进制代码和/或源中产生一个新的二进制代码),和/或产生对于二进制代码的修改来重组,在函数级别、指令级别或者在堆栈、存储器访问和寄存器级别进行重组。
在一个实施例中,计算机能量(computer power)被用于多层架构中以执行重组。
许多针对计算机程序的攻击利用程序的组织和结构的认识(因为程序会被操作系统载入存储器)来制作攻击,该攻击具有一定的能力或者概率性的能力去重新跳转或者危害程序的行为。诸如返回至libc(return-to-libc)、堆毁(heap smashing)、以及甚至堆喷射(heap spraying)之类的攻击落入此范畴。诸如地址空间布局随机化(Address SpaceLayout Randomization)的技术允许动态链接的二进制代码具有不可预测位置的堆栈、堆叠(heap)和代码段的不可预知的位置。这会阻碍一些攻击,但是因为位于相当大的链接段内的代码相对于其本身没有修改,攻击者可以利用诸如相对偏移量攻击或者弹床损耗(trampoline leakage)之类的技术来制作出在这些环境中继续有效的攻击
图4图示了为了安全目的以随机的或者不可预知的方式重组虚拟计算机程序的过程。图4和其他在本节中论述的过程图表可以被实现为安全逻辑,该安全逻辑如之前所描述的为了安全目的而分析和执行其他计算机程序。在方框402,获得对于计算机程序代码的访问。方框402呈现了过程接收信息以识别所存储的文件或者特定的存储器位置中的可执行文件或者二进制代码,以根据该过程进行分析和修改。一个实施例使用对二进制和/或源代码的静态和/或动态分析来提取足够的信息,从而以不可预知的方式在区段内重组代码,然后可以进一步对代码的行为进行重排。因此,如方框404所示,过程执行对在方框402处获得的代码执行静态分析或者动态分析以选择代码段的边界以及获得用于以不可预测的方式对代码段进行重组的足够信息。针对程序的每次援引或者基于周期或根据需求,在加载时间或预先或实时地在存储器内对文件进行不可预测的重组。通过转播二进制代码(或者从之前的二进制代码和/或源中产生一个新的二进制代码),和/或产生对于二进制代码的修改来执行重组。因此,如在方框406所示,二进制计算机程序代码的布局可以根据分析进行修改。
参见方框408A,可以在函数级别重组,而在这样情况下,在整个代码段对函数进行搬移-对于函数的调用被调整以保留抽象的控制流图。如方框408B所示,重组也可以在指令级别,利用指令的交换,重新安置,或者利用无操作指令分隔,以防止对指令的指针的具体映射的完全认识。最终,重组可以在堆栈、存储器访问和寄存器级别发生。如方框408C所示,寄存器级别重组包括:更改被指令使用的寄存器以防止取决于特定寄存器值的在先攻击。这样的重组的一个例子将是利用不可预知的寄存器替代%rax的使用。如方框408D所示,堆栈或存储器重组包括:搬移本地函数变量在堆栈或存储器内的次序,以及可选地添加不可预测的填充字节至号码和位置。
实施例因此提供了代码的更改,并且覆盖在在先时间、加载时间和在程序运行的过程中执行它的所有组合情况。
在实施例中,以两种类型提供了OS公开代码修改和代码重写;第一类型包括对于OS可见的底层程序的修改,第二类型的修改对于OS是不可见的。具有不可见变化的实施例是有用的以提供来在空中填充代码、插入截取陷阱和其他允许取得控制的逻辑注入。可见的变化可以包括:材料变化,这可以用于OS进行检测。程序重组是可见变化的例子,其当在程序中的函数指针可以预先或者计算得知的情况下有助于改进安全性。例如,程序重组可以包括移动围绕在程序中的函数指针,因此如果攻击者预计算出函数指针,攻击者的预计算函数指针很可能高概率地出错,从而阻碍了攻击。
在实施例中,涉及移动函数指针的重组对于OS是隐藏的。对于被排列为代码段随后是数据段的程序,各个段位于固定的或者随机的地址,实施例可以阻止知晓了一个区段中的指针的攻击者精确地计算指向不同区段的另一指针,从而使得攻击者不能够精确地确定程序的布局。因此,如果精确的代码重组变化被暴露给OS,那么重组的目的将会失败,因为攻击者可以了解到被重组的程序的布局。因此,这里提供了用于将程序分段为多个不同的被重新排序或者以其他方式重组的区段的技术,从而使得操作系统不能够通过提供与OS原始加载程序时相同形式的程序的核心转储(core dump)来回应攻击者。
在实施例中,参见方框404,静态的或动态的代码分析被用于确定为了在何处将程序分成方框或分成块,以用于将这些块重组到不同位置中的目的。另外,引用了块的指针被重写以正确地指向经重组的块位置,如方框410所示。例如,在块被移动之后,引用了特定区段位置的相对JMP指令必须被重写以指向块中的正确位置。数据段中的数据指针可以以相同的方式重写,以正确地引用移动过的块,如方框412所示。
现有的用于静态或动态代码分析的技术可以用于确定块边界:例如,基本块分析可以使用,其中代码被分成段,描述为基本块,其不包含跳越指令或指针,并且用于确定块尺寸或边界的特定方法是没有限定的。然而,在实施例中,块重组的过程是这样实施的,在方框402开始,不用重写存储在磁盘上的可执行程序二进制文件的副本;这允许用户以与用户最初接收程序相同的方式安装和运行程序,不必考虑可能由修改以不同方式备份的原始文件导致的结果或其他问题。
另外,在实施例中,在方框402开始的步骤,以及对于代码块的随机重组的执行可以在每当二进制文件载入存储器中时发生,并且在其他实施例中存在更常见的情况。图5示出了在程序的各个存储器加载时对计算机程序的重组进行可变的随机化的过程。在实施例中,每当二进制可执行计算机程序文件被载入存储器时,它是以随机化的一组代码或者数据块进行存储的,并且对于每次载入的例子而言随机化是不同的。在方框501,计算机程序代码被载入存储器。在方框502,过程检索关于加载器的上一次重组的信息,并且产生一个新的、随机化的重组计划。例如,方框502可以涉及安全逻辑基于载入代码的文件名从数据库检索代码的区段边界的列表以及边界在上次载入时被重组的次序。其后安全逻辑可以配置为产生新的用于区段的随机化次序。在方框504,新的重组的计划反映出新的随机化的段的次序被存储以作日后参考。在这个方法里,用户同时多次运行相同的程序,使得安全逻辑以不同的方法随机化两个程序副本的每一个,防止第一加载将有关其组织结构的信息泄露给第二加载。可替换地,代码块的确定和用于块的随机化序列的确定,如图4、5中所示,可以在预计算步骤中在程序执行之前实施。
OS可以以两种不同的方式来加载程序。例如,利用UNIX,核心加载器程序调用基本加载器,这是一个核心空间程序;它执行解释程序,其名称是已知的或者被硬编码到加载器中。基本加载器不处理符号或重新定位。相比之下,在用户空间中执行的动态加载器能够处理符号和重新定位以及共享库和程序的其他元件。在实施例中,动态加载器被截取,如图4的方框414所示,因此当动态加载器设法打开要执行的程序时,动态加载器的执行文件访问的系统调用(例如,OPEN(打开)文件,或者MMAP-将文件映射到存储器)以数种方式中的任何一种被截取并被重新映射以改变结果。
尽管本节描述了某些具体的系统调用,在此的方法可以使用于用于与库、操作系统设施或类似的系统元件进行交互的任何机制。在READ、OPEN和MMAP调用是作为示例具体描述时,这里的方法可用于任何用于读取的装置、用于打开的装置、用于向存储器填充文件的内容的装置。
图6示出了为了安全目的而截取动态加载以及对动态加载进行回应的过程。可以使用多种截取方式。例如,在方框602,动态加载器的加载被检测;在实施例中,使用上述的用于管理程序实现方式的安全途径,动态加载器的加载可以被检测到,在该管理程序的实现方式中每个存储器页面被识别、验证和授权。在其他的实施例中,OS的特定系统调用,例如PTRACE,可以用于在由程序做出其他系统调用时接收通知。在方框604,安全逻辑允许动态加载器被加载,并且还引发了图4和/或图5的过程以执行对于动态加载器打算加载的程序的代码的随机化的重组。此时,动态加载器的操作可以暂停或者暂时地停止以准许图6的后续方框,从而完成动态加载器的修改和程序代码的重组。
在实施例中,动态加载器直接引发系统调用,因此安全逻辑可以在动态加载器中插入断点或陷阱代替系统调用指令,此时动态加载器被加载到存储器中。如方框606所示,在实施例中,安全逻辑重定向在动态加载器中的系统调用指令,以促使仅仅加载通过图4、图5的过程生成的重组代码。系统调用的重定向可以包括改变系统调用的含义或结果。
改变系统调用的含义或结果可以以两种方式实现:利用文件重定向或不利用。这两者的目标是允许动态加载器尝试将例如/bin/bash文件载入到存储器中,但是当企图载入时,动态加载器实际上在存储器中接收的是不同的项目,即经过修改或重组的代码。
如方框608A所示,重定向系统调用可以包括文件重定向,其改变OPEN、READ和MMAP调用的结果。例如,通过截取OPEN,在方框606,安全逻辑可以将OPEN重定向到不同的文件,该文件包含经修改或重组的代码。例如,试图加载/bin/bash可以导致实际上加载名称为/bin/temp1的文件。这样的重定向可以导致加载文件的静态部分或者动态地产生的代码块;例如,该/temp1文件可能已经动态地产生以立即使用,然后可以从文件系统被移出。在另一方法中,加载器是重定向为别的东西。例如,OPEN调用可以重定向到第二次调用,该第二次调用到相同的文件/bin/temp1或者到不同的文件/bin/bash2,其中/bash2和/temp1已经经过不同地重组或修改。
在实施例中,系统调用的含义可以完全改变,并且没有重定向文件以上述的方式使用。例如,如方框608B所示,专用存储器映射可以用于:响应于OPEN调用以随后的READ或MMAP调用,传递重组代码的内容,而不是在那些调用中原始引用的存储器的内容。
以这样的方式,当诸如/bin/bash的文件的打开通过动态加载器发生时,安全逻辑产生和储存发生了OPEN的记录或指示符。其后,当动态加载器执行READ或MMAP调用时,其关联回到OPEN调用,并且安全逻辑响应于READ或MMAP调用而服务该安全逻辑创建和管理的不同的、经修改的或重组的文件的内容。例如,对于文件的开始的528字节的READ(读取)将被截取并失败,并且安全逻辑将向所请求的缓冲器中填充该安全逻辑确定的数据,然后伪造来自READ的返回以使得它表现为如同READ正常地完成的情况。缓冲器的内容可以在空中或预计算确定。进一步地,因为MMAP调用通常涉及物理存储器,其在两个或多个程序之间共享,该安全逻辑可以要求替代的完全专用的映射,或者可以发出一个或多个伪造的或者合成的MMAP调用,这些调用是安全逻辑代表动态加载器发出的。此外,在实施例中,作为截取READ和MMAP调用的结果返回的所有结果与存储器映射的一致性,该存储器映射是动态加载器由于读取程序的ELF头部而构造的,原则上通过将截取的MMAP调用保持为专用的。
截取MMAP调用可以导致多个不同的专用存储器映射中的任一个,其允许多个不同的处理来引用不同的物理器存储。在实施例中,截取MMAP可以导致将MMAP调用改变为纯粹的存储器分配调用,并且在作为被改变的调用的目标的所分配的存储器中,填充随机化的或重组的代码的内容。该处理可以对于每个在动态加载器中的MMAP调用重复。
在实施例中,当动态加载器要求文件的共享存储器映射时,安全逻辑将其改变为一个没有文件的专用存储映射,实际上仅仅分配正确大小的存储器,而不需还将存储器映射到文件中。然后安全逻辑基于块的重组或修改向所分配的存储器填充安全逻辑希望提供的内容,好像块是来自文件的。
最优化可以应用到前述的方法以使得两个或更多程序来共享相同的存储器。在实施例中,通过安全逻辑执行的存储器分配导致分配进行文件共享而非文件备份的存储器,使用OS提供的用于其他背景的操作系统调用。共享的专用或共享的存储(例如,SHMGET)调用可以用于分配和命名共享存储器。实际上,被重组或修改的块被映射到多个程序以用于共享使用。该方法是有效的,因为在执行重组或修改之后共享是有效的。
另一个方法是使得指针位置独立,因此,所有的指针指向数据的非共享段,其将指针映射到在重组的或修改的块中的特别的目标。映射可以是与综合的偏移量表格(globaloffset table)类似的形式,而用于有关安全性的完全不同的目的。重组可以以多种方式完成。例如,基础程序的存储变换可以被执行或者在通过安全逻辑控制的暂时存储中形成以确定程序结构,该存储变换可以以随机的方式重组,存储可以为随机的重组分配,然后基础程序可以根据重组的存储变换载入到存储中。
在参考图6,步骤可以以图4的方框404的方式利用代码分析继续。在实施例中,当确定块的边界和在基础程序的块中的指针时,特别的源程序段可以映射到多个n目标的块中。也就是说,在二进制的头部中识别的各个程序段可以分入到两个或更多块中,因此将程序再分成比之前表示的头部更细小的块中。头部可以被重写或者相反地存储以反映细小的块分划,如方框609所示。其后,动态加载器可以根据更新的头部执行普通的载入,如方框610所示,有效地促使动态加载器执行分配存储的工作和将程序指令或数据加载到由安全逻辑限定的细小的块中。这样的方法允许动态加载器分解段间连接,和执行其他困难的任务,不必在载入步骤中涉及安全逻辑。实际上,安全逻辑直接改变动态加载器的操作,以促使加载器以重组的通过产生块的边界和将新的边界暴露给装置程序的方式载入到程序中。
在一些实施例中,动态加载器可以具有内在的随机的段载入能力,并且安全逻辑可以开启这样的能力以促使动态加载器也确定用于重组或者修改块的随机的存储单元。可替换的是,程序头部可以指定用于载入的随机化的地址位置,这已经在通过安全逻辑的头部中修改。该方法的优点在于启动程序以持续地使用动态载荷程序库,这将通过动态加载器正确地进行。
在WINDOWS的实施例中,核心作为加载器,但是API调用可以截取,并且API响应可以为了相同的效果而伪造。
再参考图6,在实施例中,可以执行代码块的联动的认证,如方框614所示。例如,在此的方法启动安全逻辑以确定是否允许特别的步骤以载入另一个步骤。在概念上,安全逻辑是在载入步骤中安置的,利用在此的技术,在一个逻辑位置,其启动截取和检查所有的程序或步骤载入,和确定该载入是否应当被批准。如图6所示的方框614的逻辑位置是作为举例而言的,但是批准可以在其他的场合中发生。
与之前描述的所有存储器页面的识别、验证和授权结合,在本节描述的步骤提供了一种强大的程序安全性方案。进一步地,综合的系统能够探测在利用动态加载器的第一程序载入第二程序和利用可执行的程序代码的第一程序分配存储和填充分配的存储之间的差异,并且可以为各个方案作出不同的安全性决定。例如,安全逻辑可以禁止程序自身的可执行存储执行,有效地要求使用加载器;作为另一个实施例,加载器可以执行不同的安全性策略以放置单个步骤完成第二步骤的不希望有的或者不寻常的载入。
在实施例中,安全逻辑可以截取核心对载入动态加载器的企图,并且替代地载入不同的加载器,如方框616所示。在这样的方案中,安全逻辑可以载入不同的加载器,其支持为了安全目的的多种特征,否则其是在OS的本地的动态加载器中未经证实的,例如内在的块随机化。例如,一个实施例可以实施有效的、重写的加载器,对于在此的方法而言这是不要求的,例如截取和重写打开或MMAP调用,但是简单地实施用于那些调用的可靠的行为。这样的方法可以暴露给OS,或者不暴露。例如,动态加载器的清楚的替换可以涉及探测核心正在载入本地的动态加载器,然后将常规的载入程序代码放置到相同的存储区域,其中OS已经分配给本地的动态载入程序。这可以适合于这样的情形,其中本地的动态载入程序怀疑被蓄意窜改。可替换的是,提供本地的动态载入程序的二进制文件可以在磁盘或其他的存储上修改,其可以具有高效率的优点,因为动态载入程序通常总是通过核心从相同的位置载入的。
在实施例中,OS清楚的重写可以利用上述的I/O MMU方式执行,以防止存储已经被修改,如方框618所示。假定对于给定的页面,存在R,W,X权限,页面可以设定为不可读取和不可写入,因此页面仅仅是可执行的。在实施例中,程序代码块的页面以拷贝的方式存储以用于备份的目的,其设定为仅仅是可执行的,然后以任意的方式按要求修改和重组;此后当OS试图读取或写入页面时,设置了一个陷阱,并且安全逻辑可以插入以修复页面的内容,如当OS最初载入页面时它们存在的那样。因此,在处理陷阱时,安全逻辑将存储的原始页面的副本返回给OS。
当将OS期待的页面返回给OS时,并且当仍然保证计算机仅仅执行安全的或修改的程序块的版本时,该方法能够以OS不能探测的方式实施程序块的修改和重写。因此,为了安全目的,执行的修改不会不利地影响OS或程序行为,这取决于读取特别的页面的原始译本,保存执行流的完整性。应用例如WINDOWS PatchGuard可以受益于或者要求这样的方法以保证正确的结果。这些方法可以为页面的多个备份版本实施,例如原始版本,第一改进版本等。完全分离存储系统可以在时基页面(page-at-a-time basis)上实施。
程序重组或修改可以周期地或立即响应地执行,参见图4,方框416。在实施例中,当程序在内存中时,程序的第二重组或修改可以执行,假定所有函数指针的位置是已知的。在实施例中,所有潜在的函数指针的位置是从二进制分析步骤确定的,位置可以以一个或多个型值表或其他侧视(look-side)表格的方式存储,其识别指针的位置,该指针是静态代码变换,便于移动指针。程序的存储段可以利用OS存储移动调用来移动。载入程序的重新定位可以重做,因为它们是根据ELF头部已知的;例如,用于C或C++分类的虚拟表包括静态再定位,这可能是反射出块移动的更新。
然而,堆叠或堆栈可以包括函数指针,它们指向旧的代码。在实施例中,在堆栈或堆叠上的函数指针可以通过识别指针值的一部分探测,该指针值仅仅重复有少数的二进制变体。例如,64位指针可能不会使用所有的64位移提供实际的指针值。相反,在随机化的重组的初始舍入之后,各个指针将包括位的范围,这已经利用相同的随机化的值替代,而其余的指针提供实际的重新安置的指针值。其效果是,在一段中的所有指针具有相同的大标头值(large prefix value),其后是实际的值位的较小的范围。因此,如果可以识别位的相同的范围的多个实例,安全逻辑可以有把握地知晓指针已经以堆栈为基础,即使当随机化的位范围的实际值不能预先知晓时,因为它是被选中的,但是为了安全目的没有存储,或者相反没有在较早的随机化步骤中设置为可用。因此,在实施例中,试探技术是用于在重复的例子中探测标头部分以产生达到某种可靠程度的结果,期指针已经被识别;然后指针可以被重写以反映出程序的第二重新定位、修改和随机化。
这些技术可以产生错误的否定结果,其中在第二重写之后的程序的执行促使指针跳越到程序的不存在的块。在实施例中,安全逻辑是配置为探测这样的跳越,并且考虑该要求的跳越是否从重复修改提供了错误的否定。程序可以根据是否之前已经完成的修改或随机化的认识来选择以满足跳越指令或者阻止它。例如,安全逻辑可以在程序代码中超前到跳越的目标,并且试图确定是否待执行的下一个指令与刚刚执行的指令有关。如果是这样的话,那么可以允许跳越。例如,如果之前的指令在特别的寄存器上提供数学的操作,并且跳越的目标看起来是以合理的方式使用相同的寄存器,那么可以允许跳越。相反,如果跳越的目的是一个存储器页面,其是被怀疑的或者已经被标记为不能执行,那么安全逻辑可以阻止该跳越。当二进制发源于已知的源代码例如打开源模块时,实施这些试探的逻辑可以根据可执行的二进制内容的认识。
这些方法同时可能产生错误的否定结构,其中安全逻辑错误地识别在堆栈上的作为指针的项目,例如,因为该项目仅仅碰巧匹配期待标头值。这些结果可料到是如此稀少,因此不需要特殊处理。
5.0对解释程序的应用
在实施例中,另外在此描述的技术可以应用到计算机程序解释程序,例如对于一个或多个:限定的解释程序操作;鉴定倚靠数据库的脚本文件;防止未被授权的脚本文件被翻译;覆盖解释程序;解释程序-特殊的补救步骤。
解释程序是这样的程序,其打开文件,解析文件的内容以导致产生可执行指令,和执行结果指令。
在实施例中,上述的技术是用于翻译程序,通过放置在存储库208中,所有脚本被翻译并且已经具有相反的结果。例如,待执行的指向文件的脚本可以通过检查文件处理,以确定是否它已经从原始修改。在实施例中,安全逻辑是配置为通过解释程序截取企图以打开文件,以独立地打开文件和读取文件,和确认文件容纳了期待的内容。如果文件没有容纳期待的内容,那么解释程序或者脚本可以被终止。
如果文件容纳了期待的内容,那么文件可以在文件系统中标记或者在内存中标记为不可写的或者标记为读取锁定的,因此安全逻辑是排他的以写入,然后让解释程序运行以完成,因此所有后继的读取操作已知是正确的。
在实施例中,解释程序对参考文件的各个读操作是被监控的,并且解释程序发出的到文件中的查找偏移量被与所期望的查找偏移量进行比较以确定该读取是否是有效的。例如,如果解释程序请求读取来自具体偏移量的特定的一组字节,那么安全逻辑可以检查OS提供的结果缓冲器来确定内容是否匹配期望值。该方法保证解释程序或者解释脚本可以仅执行已经利用本文所述的安全逻辑实现和管理的技术进行识别、鉴定和授权的文件。在这个方法中,与如上所述的用于截取READ或MMAP调用的处理可以在解释程序的情形中使用,如上所示的用于实现指纹的技术可以用于对参考文件的正确性进行认证。
在实施例中,安全逻辑的方面可以注入到解释程序中,而不是在分离的安全逻辑中实现本文中的技术。例如,解释程序可以被加载然后在存储中修改以在解释程序被允许开始执行之前实现本文中的安全逻辑的功能,载入脚本或者解释脚本。因此,脚本的修改可以被容易地探测,并且设法执行参考文件的脚本可以被控制。
6.0对于实时编译器的应用
在一个实施例中,这里所述的技术可以以其他方式应用到计算机程序实时(JIT)编译器,该实时编译器包括以下各项中的一个或多个:JIT创建的完全不同的处理和静态的二进制页面;截取和策略系统调用;存储位置-特定的和代码-初始特定的权限限制。
JIT程序通过解释、解析或读取代码和在空中产生用于执行的可执行指令操作,代码是不可直接地执行的,例如字节代码或其他的中间代码表述方式。因此,在程序的静态的二进制的地址空间中,JIT编译产生新的存储段,利用可执行指令充填存储,并且跳越到那些指令。JIT编译可以包括用于字节代码的一般的步骤的解释程序和用于最优化目的编译程序两者。例如,JIT编译可以最初解释字节代码的特别的序列(例如,以Java脚本),但是确定该序列是经历重复地解释。作为响应,JIT编译可能将序列转换为编译的可执行的程序代码,以更快速地在之后无解释地重复执行。另外地或者替代地,可以使用追踪最优化,其中大量的操作的追踪可以转换为编译的可执行的程序代码,具有或者不具有顾及程序的基本块组织。
因此,JIT程序在存储中产生可执行指令,为了安全目的其需要核对。在实施例中,JIT程序分配来用于存储新产生的可执行的程序代码的存储是标记为不可执行的;因此,当JIT编译试图执行该存储时,安全逻辑可以采用如之前已经描述的相对于另一种可执行程序的相同类型的执行故障。然而,所描述的安全逻辑的操作到这种程度为止不会成功,因为在其存储库中安全逻辑将不具有匹配的存储器页面以匹配JIT编译已经分配的存储,因为通过定义该存储,其内容是动态地产生的并且不是系统预先知晓的。因此,存储库208不能保持JIT产生的可执行的存储器页面的指纹。
在实施例中,安全逻辑是配置为识别一个存储器页面是JIT-产生的页面,和作为响应,不允许通过该页面的指令的所有的系统调用的启用。系统调用的例子可以包括SYSCALL或[Gamma][Nu][Tau]80调用。指令可以被识别,因为安全逻辑是配置为探测通过JIT编译的JMP,这必须包含有效的指针,然后可以用于识别后继的指令流。一旦有效的指针进入-对安全逻辑已知的存储器页面,该页面的整个指令流可以被检测或监控。
在实施例中,除了系统调用之外的操作可能是不允许的。例如,固定编码的手动跳越到无效的或者禁止的位置是不被允许的。一个例子是,在系统程序库或其它的辅助程序库中,对在PLT内的或者对原始程序的二进制外的代码的静态的跳越。在实施例中,代码的JIT产生的页面可以被分析以确定是否它容纳这样的指令,其计算间接指针和目标或者间接跳越可以重查的位置,并且用于安全性基础的决定。
可以利用不同的技术来执行对于JIT生成的页面的识别。在实施例中,页面签名被使用;例如,安全逻辑可以认识到页面已经被标记为可执行,而安全逻辑可以意识到仅有JIT程序请求OS将页面标记为可执行的。因此,X权限的存在可以表示页面是JIT生成的。另一种方法是:基于该JIT在存储库208中的指纹或者标识可执行文件是JIP的元数据,检测MMAP调用已经从由已知是JIT的可执行文件中发起的。另一种方法是检测MMAP请求创建可写的代码存储器;这样的请求与JIT生成的存储器页面高度相关,或者至少与其它的程序想要执行的存储器页面高度相关。
另外地或者替代地,另一个可替换的实施例是根据实际上只有特定的程序包含或者使用JIT编译器的认知,将存储器页面与创建了该存储器页面的可执行文件相关联。例如,大多数操作系统或者文字处理程序不会生来就提供JIT,但是几乎大多数浏览器程序会提供。因此,如果已知具有JIT的程序涉及到可执行代码的存储器分配,得到的分配页面可以自动地经受如上所述的特殊JIT安全处理。可替换的是,如果存储器页面在已知具有JIT的程序的地址空间内,那么存储器页面的执行可以被允许。
安全逻辑可以配置为容许页面具有R,W,X或其它权限。其后,可以利用上述的方法实现安全检查的第二次传送,以用于从其他的程序处理页面。
另外地或者替代地,如果安全逻辑探测到JIT已经修改了可执行的页面,那么页面可以使用如上所述的方法经受再生效。
JIT产生页面的检测也可以使用基于识别用于援引JIT代码的已知的功能的堆栈追踪来实现,假定堆栈是可信的。例如,一种实现Java脚本JIT的浏览器将通过功能援引来援引不同的功能,这最终跳越到JIT。当JIT采取执行故障时,安全逻辑可以向后检查堆栈,和识别较早的执行指令,表示JIT执行的来源。如果来源被识别,然后可以允许进一步地执行JIT。确认可以施加给所有的堆栈或者一些堆栈。
因此,实施例是有效的倚靠JIT猛烈地攻击的,其中JIT是通过恶意代码援引的,以促使JIT将其他可执行的代码在已知的位置注入到应用的存储空间中,对此利用随机的跳越指令做出变化。在实施例中,执行故障是在新产生的页面上获得的,并且安全逻辑实施在堆栈上的向后追踪以确定一个有效的返回地址是否从适当地形成的跳越指令提供,跳越指令设法在代码执行之后返回控制给正确的JIT。否则,那么攻击可以被怀疑,并且可以获得补救步骤。
还有另一个实施例可以包括确定可执行代码页面是否具有除了期待的或者普通的出口点。例如,对于调用JIT的指令的一个回复,或者对于另一个功能的启用的一个回复,例如Java脚本功能,以实施不同的输入/输出操作,这可以表示期待的或普通的出口。这些出口是创建的,因为根据砂箱原则的JIT产生的代码没有被允许以产生直接的OS调用,因此多个特殊的功能必须通过将控制返回给JIT来实施它们。存储器页面可以被扫描以确定是否提供了正确的出口功能,如果是的话,执行页面可能被阻止。
在另一个实施例中,对于JIT产生的代码的入口点可以被确认,并且在成功地确认时,JIT产生的代码页面可以配置为可执行,并且所有与JIT关联的其他的页面可以配置为不可执行的。
因此,当第一页面的执行结束时和当回复和跳越发生时,安全逻辑将控制另一个页面。当JIT退出时,出口点可以被确认,如果它已经被认为是有效的,那么JIT产生的页面是标记为不可执行的,并且所有的其他页面被标记为可执行的。在实施例中,之前的功能可以通过改变页面表值实现;例如,阴影页面表可以被保持以管理和追踪页面状态或者与JIT产生的页面关联的访问权限。当JIT编译跳越到JIT产生的代码页面时,查阅阴影页面表,阴影页面表没有被用于在非JIT产生的代码页面上的安全逻辑操作。
在另一个实施例中,另外地或者替代地,安全逻辑可以不允许OS调用的特别类型的执行,该OS调用是在JIT产生可执行的程序代码页面内的。例如,系统调用或程序库调用可以当仍然允许静态的变化时阻止;该方法允许安全的级别调整到在系统或者程序中察觉到的危险的级别。
为了打开源JIT编译,例如在Safari,Chrome和Firefox中的编译,开源文件和源代码是可获得的,以提供在JIT操作上的完整的信息,并且可以用作确定有效的入口点、出口点和其他支持上述技术例如何时和怎样进行分配存储、修改和收回的数据的基础。这些数据和行为的认知可以允许在此的多种技术的反馈,因为其已知的行为是可接受的。
在实施例中,任何上述技术可以通过重写原始应用程序来实现,包括提供JIT的浏览器,具有新的代码,实现安全逻辑,而不是利用管理程序或其他OS实施指定的操作,和对于所有将安全逻辑关联到完全锁定停止的通过安全逻辑完全控制的状态的页面设定页面类型和访问权限。该方法以这样的方式促进或者提高本文的技术,对于改善执行速度的目的而言,其可能根本不要求使用页面表权限或者构造逻辑以援引OS页面表权限,而不是管理程序页面表权限。在此提高的方法可以有助于对于不同的情形或程序类型最优化在此的安全技术。
在此的技术可以实现以为浏览器提供高安全性。
7.0其它公开的内容
在实施例中,使用虚拟化的技术以使得计算机安全。一些虚拟化方面可以看做是比其他方面更重要的。一般而言,计算资源的普通的划分是相对次要的。最基本的虚拟化结构,即可以实现包括将管理程序注入在服务器的硬件和在服务器上执行的操作系统之间。注入管理程序的目的是是的操作系统环境安全。这样的管理程序注入是最基本的可以使用虚拟化完成的安全呈现范围。多个分离的操作系统可以在与相同的管理程序结合的相同的服务器硬件上执行。在这种情况下,管理程序保证在操作系统之间的划分是可靠的。无论在一个操作系统内发生什么,仍然是仅仅在该操作系统内。如果操作系统变得不可靠,那么操作系统可以被恢复。在这些基本思想上的变化来自两个区域。管理程序可以″看入″操作系统和实现在操作系统上的操作。管理程序的这样的能力被称为″自省″。
考虑划分,多种操作系统可以用作安全系统。操作系统可以执行可靠的应用。在服务器上执行的一个或多个操作系统可能是不安全的操作系统。一个或多个可靠的操作系统也可以在服务器上执行。这些操作系统可能不是有充分资格的操作系统。这些操作系统的用户可能不会察觉到它们是分离的操作系统。一些现有的工作描述了如何促使一些操作系统看起来是其他操作系统的一部分,因此,例如当一个操作系统打开一个窗口时,该窗口呈现在另一个操作系统的显示内。在这种情况下,用户可以仅仅知道一个操作系统的存在,但是其他的可靠的计算域仍然存在,以防止那些域被攻击。可信计算是基于这样的思想。
更有趣地,考虑到自省,管理程序是给出在操作系统内的调试程序级别访问,因此管理程序可以实质上相对于操作系统执行任何操作。一些新颖性在于如何提供技术给予管理程序这样的访问。
通常,在这样的区域提供的技术可以分为四个类型。
第一类型是代码类型。服务器计算机具有存储、操作系统和管理程序,其有时如下地描述为VMM(虚拟机管理)。在实施例中,程序设计的代理可能以多种方式存在于环境中。该代理可以是嵌入在虚拟机本身内的。
可替换的是,该代理可以通过可靠的虚拟机与管理程序通信。代理总是局部连接到设备的。
在实施例中,数据库在设备上是本地存储的。数据库容纳在存储中所有可以在计算机上执行的页面。对于所有存储,管理程序具有独立的权限。提供的技术将计算机的所有存储设定为不可执行。操作系统不知道这样的设定。操作系统具有其自身的权限。操作系统根据需要将存储设定为可执行。当新程序载入时-当一块代码插入到存储中并且执行时-出现了执行故障。这样的故障的出现是因为根据管理程序,代码是不可执行的。在此,控制转移给安全逻辑的代理。代理确认存储器页面是否包括应当执行的代码。根据应当执行的页面的鉴定,代理是的页面可执行,但是不可写入,并且将控制返回给操作系统。这样的概念被称为″W XOR[排他的或者]X″。
尽管在先的方法已经提供了W XOR X的不同的实施方式,但是在此的技术包括验证步骤。当代理看到存储器页面时,进入验证循环。在这些循环中,页面是首先识别的。接下来,简单页面。在一些附加的策略步骤轴,页面被授权。在之前的方法中,操作系统不会进入到任意的验证循环中。替代的是,存储要么是可执行的或者写写入的,并且一个程序必须标明这些存储属于哪种情况。这防止代码被修改。
提供的方法不仅仅提供上述保护。在实施例中,步骤提供增加的验证循环。验证循环通过将页面的这些片段与所有其代理已经指定为可执行的可用的存储器页面的数据库匹配来鉴定每个存储片段。数据库显示所有的可允许执行的程序的全部类型,并且显示上述的程序是如何载入存储中的和上述存储的各个可执行的页面应当如何查看。
当代理遭遇存储的可执行的页面时,代理在数据库中利用反向查找机构查看那些页面。该反向查找机构将存储器页面归为专用程序识别,并且具有在程序内的特别的偏移量。如果代理发现在遭遇的可执行页面和在数据库中的存储器页面之间的匹配,那么代理查阅策略数据库以确定是否进行可执行页面的执行,或者是否可执行页面归属的程序是可允许的。根据鉴定,页面的执行是可允许的,那么代理授权该页面。可替换的是,根据鉴定,页面的执行是不允许的,代理执行补救步骤。补救步骤可以包括破坏页面归属的程序,将代码注入到程序中以从功能或者其他步骤停止程序。这是在操作中提供的系统的基本工作流程。
在实施例中,确定是否在代码内已经发生了修改涉及两个一般的步骤。一个步骤包括在没有已知的推理即其中代码已经发生修改的情况下,确定代码的指定的片段与哪个存储器页面对应。在此的技术产生候选存储器页面目录,然后在该目录中选择到与代码片段匹配的存储器页面。
在实施例中,″页面启示″,当存储器页面通过时,指示出通过的页面可以与在数据库中的哪个存储页对应。然后实施蛮力核对,其中,如果通过的页面具有某一类的重新定位,那么通过的页面的加密的散列是假定为在应有的位置上重新定位的。做出鉴定,关于散列是否匹配在数据库中的存储器页面。一系列″如果这样怎么办″可以实现。这可能值得进一步地论述。
在实施例中,如上所述的数据库元素是在客户设备上本地存储的。代理要么是嵌入管理程序中,要么是安置在可靠的虚拟机中,其具有对其他虚拟机的特权访问,而虚拟计算机即保护的主题。可靠的虚拟机仅仅执行在此描述的代理。
描述的系统是有用的以保护这样的服务器,其创建在数据中心中,也创建在便携式计算机中。
在之前的方法中,自省是这样的思想,即检查操作系统内部以确定何种操作系统在运作。从上述自省获得的信息,没有在操作系统上安装代码,可以包括这样的同一性,其中包括运行的步骤和存入的用户记录。在实施例中,自省包括以上这些,并且包括代码的修改,和因此与仅仅学习相比为策略和改进做的准备。在之前的方法中,如果在操作系统内存在未假定的情况,信息可能根本不能简单地提供。相反,提供技术给出了强有力的保障;如果在操作系统中存在一些问题,那么操作系统必须停止。在此的技术包括执行而不是仅仅调用片段。
在实施例中,技术是设计为了解哪种操作系统正在运作,以及作为响应修改操作系统,从而改变操作系统的行为。在实施例中,在此的一个步骤是检查每个执行的页面,和基于测试确定是否允许操作系统照常持续或修改操作系统的行为。行为的修改可以包括注入代码或者简单地关闭操作系统。行为的修改可以包括当在此的系统的数据更新时,暂停操作系统。自省不考虑有关执行的步骤的目录。系统策略存储访问。系统防止一个操作系统以不希望的方式使用存储。系统防止操作系统产生可执行的存储,其容纳不属于数据库的内容。系统防止操作系统产生可执行的由策略引擎禁止的存储。
大部分在策略数据库中的公共的策略或许将是无效的策略。无效的策略容许所有事物。无效的策略增加了相当大的值。系统没有被迫去成为一个白名单系统。因此系统可以与Bit9形成对比。Bit9提供不同类型的技术以带来类似的优点。管理员给Bit9所有的允许运行的程序目录。Bit9利用线路中继(hooks)将其本身插入到操作系统中。在允许用户运行任意程序之前,Bit9完成加密的程序散列,并且确定程序是否包括在操作系统允许运行的程序目录中。如果程序是被包括的,那么Bit9容许程序运行。如果程序没有被包括,那么Bit9发起一个对话,其表面程序不允许运行。除非数据库完美地保持,否则这样的方法增加的是无价值的。如果恶意程序包含在目录内,那么当恶意程序被允许执行时,将会出现问题。白名单不是最佳的解决方案,因为大部分程序,当没有恶意时,是有弱点的。大部分人不会关注恶意程序。人们更关注的是消除非恶意程序具有的弱点。白名单方法根本不能完成这些,因为白名单与程序的执行是无关的;一旦一个程序在存储中并且运行,白名单方法已经与该方式分离了。相反,程序执行是指示在此的系统是在该方式下起作用的。这不是说在此的系统也不能实施除了其他方法之外的白名单。多数情况下,例如发展者的桌面上,没有理由限制此类程序可以被执行。因此,在这种情况下,本文的技术可能允许每个程序运行。
如果系统探测到未知程序,那么系统可以停止操作系统,将程序载入到数据库,然后是的操作系统重新运行,从而当程序是初始载入时信任该程序。一种策略可以指出更新仅仅可以对客户设备已经具有的程序作出,而且相关的软件也可以被添加到客户设备。例如,升级可以包括安装新的程序。新的程序可以是升级的程序包的一部分。在那样的环境下,新的程序可以被允许运行。然而如果新的安装软件时下载的,那么系统可以放置安装软件运行。其他的策略可以清楚地封锁某些程序。可以有大量的策略。策略设定的方式是重要的,因为它涉及数据库充填到其中的方式。大概,数据库将利用代理找到的每个程序来填充,除非策略清楚地表明除外。
接下来论述后端结构。客户设备可能连接到更大型的数据库,其位于企业内并且在一些保护域内。取决于运行方式,数据库的客户设备可以缓存企业数据库。数据库的等级制度,各个缓存,分别安置在不同的保护域中,可以以彼此连接的方式操作。这样的等级制度可以包括安全逻辑提供的总体数据库(global database)。没有要求的是,低级数据库比高级数据具有更少的信息。在客户数据库和总体数据库的内容中可能有重叠,这样的部分没有在企业数据库中;没有要求的是,任意数据库包括任意其他数据库的内容的详尽的子集。
假定缓存正确地工作,客户设备的数据库将容纳有关存储在客户设备上的所有的程序的粗略的信息。然而,关于那些程序中的一些的信息可能对于客户设备的数据库是不可见的。可替换的是,有关在客户设备上部存在的程序的信息可能包含在客户设备的数据库中。这样的后一种情形可能在之前安装在客户设备上的程序已经被擦除时发生,或者当有关没有存储在客户设备上的程序的信息已经假定给出时发生。然而,做出一种尝试以保持客户设备的数据库的内容表示当前存储在客户设备上的程序,从而以易管理的规模保持客户设备的数据库。
如果客户设备的数据库没有容纳程序的信息,并且如果客户设备企图执行所述程序,那么将产生错误,并且将实施一些补救步骤。补救步骤考虑数据库的自动的总体。当企图执行的程序的信息没有在客户设备的数据库中创建时,补救步骤响应地实施促使缓存故障。如果客户设备连接到网络,那么企业的大型数据库被核对以查看是否企业数据库容纳了程序的信息。如果客户设备具有互联网连通性,那么客户设备可以查阅总体数据库以查看是否总体数据库容纳程序的信息。如果因为缺乏连通性使得客户设备不能达到任一个数据库,那么可以实施不同的补救步骤。如果客户设备确定企业数据库容纳程序的信息,那么代理可以暂停程序或操作系统。其中操作系统或程序暂停的方式具有重要的新颖性。在操作系统或程序暂停置换后,客户设备从存储了该信息的更大的数据库带来了程序的信息。为了暂停该程序,睡眠指令可以注入到程序中。那么,用户保持客户设备的控制,但是程序本身是暂时地中止的。随后的超级调用可以迫使程序退回到代理的控制之下。一些风险与暂时操作系统本身关联(例如,鼠标指针可能冻结)。因此,操作系统一般仅仅应当在极少数的时间下暂停。
可替换的是,替代暂停程序的是,代理可以或者删除程序或者指示程序完美地终止,然后在程序的信息已经从更大的数据库中获得之后重启程序。
等级制度不必严格地遵守;客户设备可以简单地询问一组外部数据库,是否那些数据库的任一个具有程序的信息。外部的数据库可以具有对等网络(peer-to-peer)而不是分级关系。
在为了程序信息查阅外部数据库中,客户设备将有关客户设备询问的存储器页面(或者其中的片段,或者一些其他的表现方式)发送给管理数据库的外部服务器。外部服务器回答要么该存储器页面是可以确认为属于一个特定程序的,要么没有如此相同的。外部服务器可以假定客户设备希望具有属于存储器页面的程序的拷贝,并且可以根据客户设备的询问将整个程序的代码传输给客户设备。因此,当客户设备的程序或操作系统暂停时,程序代码可以传输,并且客户设备的数据库可以利用程序的信息填充。
可能的是,企业数据库可以容纳总体数据库不包括的程序信息。例如,不是市场上可买到的程序,但是其所有权属于特别的企业,可以具有包含在企业数据库中而没有包含在可以被多个不同的企业访问的总体数据库中的程序信息。有关市场上可买到的程序的信息可能将包含在总体数据库中。如果客户设备询问企业数据库有关企业数据库还不具有的程序信息,那么企业数据库可能响应地设法从总体数据库获得程序信息,因此企业数据库将在下一次客户设备询问时具有程序信息。另外,即使在通过客户设备的任一个企图执行信息所归属的程序之前,客户设备或数据库可以从另一个外部数据库预取程序信息。此外,根据客户设备或其它的数据库要求的程序信息,特别的数据库可以表示该要求应当发送给另一个代替的数据库。因此,对于程序信息的要求的响应可以包括对其他服务器的咨询。
如果客户设备暂时缺乏网络连通性,那么补救的步骤可以包括客户设备的局部数据库的总体,随后是在网络连通性已经重新建立之后,利用外部数据库进行在后的调和。例如,客户设备可能暂时地安置在飞机上,那是不具有任何网络连通性的。客户设备的用户可能企图第一次执行升级程序,因为该程序已经升级了,但是客户设备的本地数据库可能还没有包含用于升级的程序信息。在这种情况下,基于特别的策略,代理可以或者(a)根本不让程序执行,或者(b)假定程序的执行可能应当持续,因为当前不具备网络连通性。补救的步骤可以包括自省。代理可以检查程序的文件,文件存储在客户设备的驱动上。代理可以试图检验已经由程序的出版者(即程序的制造公司)标记的程序的文件。根据这样的鉴定,即程序的文件的标记是有效的,代理可以暂时地暂停操作系统,并利用程序的信息填充客户设备的本地数据库。在本地数据库已经这样填充之后,代理可以接触操作系统的暂停并且允许程序使用。在飞机已经降落之后,并且在网络连通性已经重建之后,客户设备可以使它的数据库与一个或多个外部数据库例如如上所述的企业数据库和/或总体数据库调和。调和包括检验包含在客户设备的数据库中的程序的标记,匹配那些包含在外部数据库中的相同的程序。如果标记不相配,那么客户设备的用户可以警告这样的不一致,并且建议关闭客户设备。如果标记确实匹配,那么客户设备仍然可以确定包含在外部服务器中的程序状态优于包含在本体计算机上的程序状态,并且可以基于外部数据库的信息更新程序信息。
虚拟的数据处理中心可以在云计算环境中操作。数据处理中心组织工具通过允许用户上传一个用户要求的计算环境(例如,虚拟操作系统和应用程序)的映像(例如,tarball)来产生虚拟计算机,然后产生该映像的多个实例。是这样的虚拟的数据处理中心环境,在此的系统策略可以包括截取映像,净化包含在映像内的程序,并且执行程序。策略另外可以包括试图将程序匹配到在数据库中的程序的升级版本,基于包含的数据库中的信息升级程序。
用于利用在数据库中的程序信息匹配程序的技术具有一些重要的细微差别。在大部分基础级别,代理可以通过识别存储器页面所归属的程序(例如,通过如上所述的查阅数据库)来实施上述匹配。那么代理可能代理有关程序的附加信息。在这样的例子中,其中代理净化进入文件系统的程序,代理可以确定安装程序归属的程序包。参考红帽程序包管理(RPM)。这些信息可以有助于识别程序。不管程序信息的初始来源,上述的程序信息很可能补充以或替代以全球产生的知识。例如,最初,代理可能净化特别的二进制文件,其身份没有被明确的获知。文件的文件名可能不能确定文件的身份。代理可以响应地产生用于未验证的二进制文件的标记。如果代理确定标记匹配信息,其表明文件是特定程序(即使文件名不匹配)特别创建的,那么代理可以以涉及该特别创建的更完整的和具体的信息替代任何预先储存的有关程序的信息。预先产生的标记可以在赞同高级信息的情况下被丢弃。由于识别二进制文件实际上是特别的认识程序,因此代理可以将任何在将来变得可获得的用于程序的更新提供给文件。如果程序仍然是未验证的,那么上述未来的更新不会已经提供给程序。此外,在程序已经用这样的方式积极地识别之后,代理可以探测在位于本地计算机上的程序的安装和通过位于数据库中的程序信息指示的正确的安装之间的不匹配(例如,遗漏文件)。根据任一个这样探测到的不匹配,代理可以利用从数据库获得的完整的程序信息来修补在客户设备上的安装。
本发明也包含下列标号的条款的任一项:
1.一种计算机实现的方法,包括:对管理程序或虚拟机操作系统的超级调用接口实施存储器事件接口,以截取与包含计算机程序的存储器页面的写入相关联的页面故障;接收由来宾域试图写入在存储器页面权限系统中被标记为不可执行的存储器页面所引起的页面故障;确定由管理程序或虚拟机操作系统维护的、针对存储器页面的第一组存储器页面权限;确定独立于管理程序或虚拟机操作系统而维护的、针对存储器页面的第二组存储器页面权限;基于第一组和第二组,确定针对存储器页面的特定存储器页面权限;基于特定存储器页面权限来处理页面故障,该处理包括执行至少一个与管制来宾域对存储器页面的访问相关联的安全功能。
2.根据权利要求1的方法,其中管理程序或虚拟机操作系统是INTEL XEN操作系统或VMWARE操作系统中的任何一个。
3.根据权利要求1的方法,其中管理程序或虚拟机操作系统包括与来宾操作系统和安全逻辑相集成的专用管理程序,并且其中安全逻辑实现用于在其上运行安全逻辑的计算机中的一个或多个硬件元件的一个或多个寄存器的第二组存储器页面权限。
4.根据权利要求3的方法,还包括:确定硬件元件中的一个硬件元件的设备类型,以及基于设备类型确定用于硬件元件中的一个硬件元件的特定存储器页面权限。
5.根据要求3的方法,还包括:设定计算机的输入/输出存储器管理单元(IOMMU)的页面表的一个或多个权限值,以指示这些硬件元件是不可执行的。
6.根据权利要求3的方法,还包括:将第二组存储器页面权限中的一个或多个与计算机的一个或多个硬件元件的存储器相关联;阻断对被标记为可执行的一个或多个硬件元件的存储器进行写入的一个或多个硬件直接存储器访问(DMA)请求。
7.根据权利要求1的方法,其中存储器事件接口实现设定、取得和事件操作,该设定、取得和事件操作分别与以下各项相关联:设定对于存储器的页面指示页面是否可读、可写、可执行的比特位;取得第二组存储器页面权限的值;以及响应于对被标记有第二组存储器页面权限的存储器页面的意图的、未预料到的使用,接收页面故障。
8.根据权利要求1的方法,其中特定存储器页面权限是针对存储器页面的、在第一组和第二组中呈现的最大约束的存储器页面权限。
9.根据权利要求8的方法,其中第一组包括CPU硬件存储器页面权限,并且方法还包括:响应于确定特定存储器页面权限在CPU硬件存储器页面权限中未被支持,抑制设定第一组的权限的意图。
10.根据权利要求1的方法,还包括:确定特定存储器页面权限是可读的、可执行的(RX);在处理中,在没有唤醒一个或多个其它事件管理器或执行特殊的消息传送或其他故障处理的情况下,将特定存储器页面权限改变为可读的、可写的(RW)。
11.根据权利要求1的方法,还包括:接收标识了存储器页面的信息;确定数据存储库中的能够与存储器页面相对应的一组一个或多个已知的存储器页面;为存储器页面准备在存储器页面中的第一范围的字节内的散列值;将该散列值与数据存储库中的其他散列值进行比较;接收对于基于第一散列值匹配的候选页面的引用的第一子集;选择该多个引用中的特定一个作为存储器页面的匹配,并且基于数据存储库中与该多个引用中的特定一个相关联的元数据来处理存储器页面。
12.根据权利要求11的方法,还包括:对存储器页面与在第一子集中引用的各个页面执行逐字节的比较。
13.根据权利要求11的方法,还包括:对存储器页面与数据存储库中维护的星形列表中的各个页面执行逐字节的比较。
14.根据权利要求11的方法,还包括:在存储器页面中的不同的第二范围的字节内计算第二散列值,以及从数据存储库中维护的存储器页面的星形列表中检索对于其他候选页面的引用的第二子集,该其他候选页面是基于第二散列值进行匹配的。
15.根据权利要求14的方法,还包括:计算引用的第三子集,该第三子集包括第一子集和第二子集的交集;对存储器页面与第三子集中引用的各个页面执行逐字节的比较。
16.根据权利要求4的方法,还包括通过以下方式中的任意一个或多个方式获得与存储器页面有关的元数据:执行针对管理程序或虚拟机操作系统的自省操作;代表来宾应用对管理程序或虚拟机操作系统进行问询;请求来自一个或多个网络化资源的信息;对计算机程序的一个或多个数字证书进行认证。
17.根据权利要求4的方法,还包括:使用表示计算机程序的可执行二进制文件,提取计算机程序能够生成来使用的所有可能的存储器页面;对于所有可能的存储器页面的每一个,确定指纹元数据以表示所有可能的存储器页面;在数据存储库中存储指纹元数据。
18.根据权利要求17的方法,其中指纹元数据包括用于存储器页面内的每个固定范围的字节的数据,以及从存储器页面内的可变字节的每个范围中导出的擦除掩码。
19.根据权利要求17的方法,其中指纹元数据包括对于所有可能的存储器页面中的每一个的出处数据。
20.根据权利要求17的方法,还包括:访问被配置为对计算机程序进行加载的二进制加载器,以及利用描述了二进制加载器的信息来确定所有可能的存储器页面的存储器内布局。
21.根据权利要求17的方法,还包括将指纹元数据分发至能够被多个客户端计算机访问的分布式数据存储设备。
22.根据权利要求20的方法,还包括:接收来自多个客户端计算机中的特定客户端计算机的、获得用于一个或多个特定存储器页面的一组指纹元数据的请求;响应于确定用于一个或多个特定存储器页面的元数据未被存储在分布式数据存储设备中,利用一个或多个网络化资源来搜索关于与一个或多个特定存储器页面相关联的计算机程序的信息。
23.根据权利要求22的方法,还包括:通过将以下各项发送至特定客户端计算机来对特定客户端计算机的请求进行回应:请求客户端计算机在另一时间重新呈现请求的交叉请求,或者请求客户端计算机提供附加信息的交叉请求。
23.根据权利要求11的方法,还包括:在负面缓存中存储指示计算机程序是无效的程序或未知的程序的信息。
23.根据权利要求1的方法,其中计算机程序是可解释的程序或脚本,并且其中至少一个安全功能包括以下任一项:限制解释程序的操作;验证针对指纹元数据的数据存储库的脚本文件;阻止未授权的脚本文件被解释;覆盖解释程序;解释程序特有的补救步骤。
24.根据权利要求23的方法,还包括:监控计算机程序执行的读操作;比较对计算机程序发出的文件的各个查找偏移量与期望的查找偏移量,以确定读操作是否是无效的;响应于确定读操作是无效的,阻止读操作的完成。
25.根据权利要求23的方法,还包括:将解释程序加载到计算机存储器中;在计算机存储器中修改解释程序以实现先前描述的功能;仅在修改之后准许解释程序执行。
26.根据权利要求1的方法,还包括:确定即时编译器已经分配了计算机的存储器中的特定存储器页面;响应于确定即时编译器已经分配了计算机的存储器中的特定存储器页面:使用第二组存储器页面权限,将与特定存储器页面相关联的特定存储器页面权限标记为不可执行;不允许特定存储器页面的启用以下各项的任意一个或多个的指令:系统调用、库调用、跳到无效的位置、跳到禁止位置、使用除期望的出口点或常规出口点之外的其他出口点。
27.根据权利要求26的方法,还包括:分析特定存储器页面以确定计算间接指针的指令是否在存储器页面中;复查间接指针的一个或多个目标;基于间接指针的一个或多个目标选择具体的安全功能。
28.根据权利要求26的方法,其中确定即时编译器已经分配了计算机的存储器中的特定存储器页面的步骤包括以下任一项:确定特定存储器页面具有X存储器页面权限;确定第一MMAP调用已经从已知为即时编译器的可执行程序发起;确定所请求的第二MMAP调用将特定存储器页面创建为可写代码存储器;基于可执行文件与JIT编译器的关联,将特定存储器页面与创建它的可执行文件相关联。
29.一个或多个存储了一个或多个指令序列的非暂态的计算机可读介质,当该一个或多个指令序列被执行时,使得一个或多个计算机设备执行:对管理程序或虚拟机操作系统的超级调用接口实施存储器事件接口,以截取与包含计算机程序的存储器页面的写入相关联的页面故障;接收由来宾域试图写入在存储器页面权限系统中被标记为不可执行的存储器页面所引起的页面故障;确定由管理程序或虚拟机操作系统维护的、针对存储器页面的第一组存储器页面权限;确定独立于管理程序或虚拟机操作系统而维护的、针对存储器页面的第二组存储器页面权限;基于第一组和第二组,确定针对存储器页面的特定存储器页面权限;基于特定存储器页面权限来处理页面故障,该处理包括执行至少一个与管制来宾域对存储器页面的访问相关联的安全功能。
8.0硬件概述
根据一个实施例,在此描述的技术通过一个或多个专用的计算设备实现的。专用的计算机可以是硬接线以实施该技术,或者可以包括数字电子设备,例如被永久编程以执行技术的一个或多个专用集成电路(ASIC)或现场可编程门阵列(FPGA),或者可以包括一个或多个通用硬件处理器,该一个或多个通用硬件处理器被编程以根据在固件、存储器、其他存储设备或者其组合中的程序指令来实现这些技术。这些专用计算设备还可以将定制的硬连线逻辑、ASIC、或者FPGA与定制的编程进行合并来实现这些技术。专用计算设备可以是台式计算机系统、便携式计算机系统、手持式设备、网络化设备、或者任何其他合并了硬连线和/或程序逻辑以实现这些技术的设备。
例如,图3是示出了计算机系统300的框图,根据该计算机系统300可以实现本发明的实施例。计算机系统300包括总线302或用于传递信息的其他通信机制,以及与总线302耦接的用于处理信息的硬件处理器304。硬件处理器304可以例如是通用的微处理器。
计算机系统300还包括用于存储信息和将被处理器304执行的指令的耦接到总线302的主存储器306,诸如随机访问存储器(RAM)或其它动态存储设备。在将被处理器304执行的指令的执行过程中,主存储器306还可被用于存储临时变量或其它中间信息。这些指令,当被存储在处理器304可访问的非暂态存储介质中时,将计算机系统300呈现到被定制以执行指令中规定的操作的专用机器中。
计算机系统300还包括用于存储用于处理器304的静态信息和指令的耦接到总线302的只读存储器(ROM)308或其它静态存储设备。诸如磁盘或光盘之类的存储设备被提供并且耦接到总线302以便存储信息和指令。
计算机系统300可以通过总线302连接到显示器312,例如阴极射线管(CRT),以将信息显示给计算机用户。输入设备314,包括数字字母和其他按键,与总线302连接,用于将信息和命令选择传递给处理器304。另一种类型的用户输入设备是光标控制316,例如鼠标,轨迹球,或指针方向键,用于传递方向信息和命令选择给处理器304,和用于控制在显示器312上的光标移动。这样的输入设备通常具有在两个轴向的两个自由度,第一轴(例如x)和第二轴(例如y),其允许设备指定在平面中的位置。
计算机系统300可以通过使用定制硬连线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑来实施在此描述的方法,它们与计算机系统的结合促使或者将计算机系统300编程为专用机器。根据一个实施例,在此的技术是响应于处理器304执行主存储器306中包含的一个或多个指令的一个或多个序列而由计算机系统300执行的。这样的指令可以从另一个存储介质例如存储装置310读取到主存储器306中。包含在主存储器306中的指令序列的执行促使处理器304执行这里描述的过程步骤。在可替换的实施例中,硬接线电路可以代替软件指令或者与其一起使用。
在此使用的术语“存储介质”指的是任一非暂态介质,其存储数据和/或指令以促使机器以特定方式操作。上述存储介质可以包括非易失性介质和/或易失性介质。非易失性介质例如包括光盘或磁盘,例如存储设备310。易失性介质包括动态存储器,例如主存储器306。存储介质的常用形式包括:例如软盘,软碟,硬盘,静态驱动,磁带,或者任意的其他的磁性数据存储介质,CD-ROM,任意其他的光数据存储介质,任意利用孔的图案的物理介质,RAM,PROM和EPROM,FLASH-EPROM,NVRAM,任何其他的存储器芯片或模块。
存储介质不同于传输介质但是可以与传输介质一同使用。传输介质参与存储介质之间的信息传递。例如,传输介质包括同轴电缆、铜线和光纤,包括组成总线302的金属线。传输介质还可以采取声波或光波的形式,例如那些在放射波和红外线数据通信中产生的。
多种形式的介质可以被涉及用于传输一个或多个指令的一个或多个序列给处理器304用于执行。例如,指令可以最初承载在远程计算机的磁盘或固态驱动上。远程计算机可以将指令载入到其动态存储器,并利用调制解调器通过电话线传送指令。计算机系统300本地的调制解调器可以接收在电话线上接收数据并且使用红外线发射机将数据转换为红外线信号。红外检测器可能接收在红外线信号中携带的数据,适当的电路可以将数据放置在总线302上。总线302将数据携带到主存储器306,由此处理器304检索和执行指令。在通过处理器304执行之前或之后,由主存储器306接收的指令可以选择性地存储在存储装置310上。
计算机系统300也包括连接总线302的通信接口318。通信接口318提供连接网络链路320的双向数据通信,网络链路320连接到局域网322。例如,通信接口318可以是综合服务数字网(ISDN)卡,电缆调制解调器,卫星调制解调器,或者提供与通信类型电话线的数据通信连接的调制解调器。在另一个例子中,通信接口318可以是局域网(LAN)卡,以提供到兼容的LAN的数据通信连接。也可以实现无线链路。在任一个上述实施方式中,通信接口318发送和接收电、电磁或光信号,这些信息携带表示各种类型信息的数字数据流。
网络链路320一般通过一个或多个网络为其他的数据设备提供数据通信。例如,网络链路320可以通过本地网络322提供连接给主计算机324或提供连接给通过互联网服务供应商(ISP)326操作的数据设备。ISP326又通过全球的分组数据通信网络,现在通常称为“互联网”328,提供数据通信业务。本地网络322和互联网328两者使用电、电磁和光信号携带数字数据流。通过不同的网络的信号和在网络链路320上的信号和通过通信接口318的信号,其携带数字数据往返于计算机系统300,是传输介质的示例形式。
计算机系统300可以通过(一个或多个)网络、网络链路320和通信接口318发送消息和接收数据,包括程序代码。在互联网的例子中,服务器330可以通过互联网328,ISP326,本地网络322和通信接口318来发送所请求的针对应用程序的代码。
接收到的代码在其接收时可以通过处理器304执行,和/或保存在存储设备310中,或者其他的非易失性存储器中以在之后执行。
在上述说明书中,已经参考了可能随实现方式变换的众多具体细节对发明的实施例进行描述。从而,说明书和附图应被视为描述性而非限制性的含义。本发明的范围的唯一以及专用的指示符,以及申请人所意图的本发明的范围是从本申请发出的一组条款的真实且等同的范围,这些条款发出的具体形式,包括任何后续的更正。
Claims (32)
1.一种用于虚拟化计算机程序中的安全的方法,包括:
对管理程序或虚拟机操作系统的超级调用接口实施存储器事件接口,以截取与包含计算机程序的存储器页面的写入相关联的页面故障;
接收由来宾域试图写入在存储器页面权限系统中被标记为不可执行的存储器页面所引起的页面故障;
确定由所述管理程序或虚拟机操作系统维护的、针对所述存储器页面的第一组存储器页面权限;
确定独立于所述管理程序或虚拟机操作系统而维护的、针对所述存储器页面的第二组存储器页面权限;
基于第一组和第二组,确定针对所述存储器页面的特定存储器页面权限;
基于所述特定存储器页面权限来处理页面故障,该处理包括执行至少一个与管制所述来宾域对所述存储器页面的访问相关联的安全功能。
2.根据权利要求1所述的方法,其中所述管理程序或虚拟机操作系统是INTEL XEN操作系统或VMWARE操作系统中的任何一个。
3.根据权利要求1所述的方法,其中所述管理程序或虚拟机操作系统包括与来宾操作系统和安全逻辑相集成的专用管理程序,并且其中所述安全逻辑实现用于在其上运行安全逻辑的计算机中的一个或多个硬件元件的一个或多个寄存器的第二组存储器页面权限。
4.根据权利要求3所述的方法,还包括:确定硬件元件中的一个硬件元件的设备类型,以及基于所述设备类型确定用于所述硬件元件中的一个硬件元件的特定存储器页面权限。
5.根据权利要求3所述的方法,还包括:设定所述计算机的输入/输出存储器管理单元(IOMMU)的页面表的一个或多个权限值,以指示这些硬件元件是不可执行的。
6.根据权利要求3所述的方法,还包括:
将第二组存储器页面权限中的一个或多个与所述计算机的一个或多个硬件元件的存储器相关联;
阻断对被标记为可执行的一个或多个硬件元件的存储器进行写入的一个或多个硬件直接存储器访问(DMA)请求。
7.根据权利要求1所述的方法,其中所述存储器事件接口实现设定、取得和事件操作,该设定、取得和事件操作分别与以下各项相关联:设定对于存储器的页面指示所述页面是否可读、可写、可执行的比特位;取得所述第二组存储器页面权限的值;以及响应于对被标记有所述第二组存储器页面权限的存储器页面的意图的、未预料到的使用,接收页面故障。
8.根据权利要求1所述的方法,其中所述特定存储器页面权限是针对所述存储器页面的、在第一组和第二组中呈现的最大约束的存储器页面权限。
9.根据权利要求8所述的方法,其中所述第一组包括CPU硬件存储器页面权限,并且所述方法还包括:响应于确定所述特定存储器页面权限在所述CPU硬件存储器页面权限中未被支持,抑制设定第一组的权限的意图。
10.根据权利要求1所述的方法,还包括:
确定所述特定存储器页面权限是可读的、可执行的;
在所述处理中,在没有唤醒一个或多个其它事件管理器或执行特殊的消息传送或其他故障处理的情况下,将所述特定存储器页面权限改变为可读的、可写的。
11.根据权利要求1所述的方法,还包括:
接收标识了所述存储器页面的信息;
确定数据存储库中的能够与所述存储器页面相对应的一组一个或多个已知的存储器页面;
为所述存储器页面准备在所述存储器页面中的第一范围的字节内的散列值;
将该散列值与数据存储库中的其他散列值进行比较;
接收对于基于第一散列值匹配的候选页面的引用的第一子集;
选择该多个引用中的特定一个作为所述存储器页面的匹配,并且基于所述数据存储库中与该多个引用中的特定一个相关联的元数据来处理所述存储器页面。
12.根据权利要求11所述的方法,还包括:对所述存储器页面与在所述第一子集中引用的各个页面执行逐字节的比较。
13.根据权利要求11所述的方法,还包括:对所述存储器页面与所述数据存储库中维护的星形列表中的各个页面执行逐字节的比较。
14.根据权利要求11所述的方法,还包括:在所述存储器页面中的不同的第二范围的字节内计算第二散列值,以及从所述数据存储库中维护的存储器页面的星形列表中检索对于其他候选页面的引用的第二子集,该其他候选页面是基于所述第二散列值进行匹配的。
15.根据权利要求14所述的方法,还包括:计算引用的第三子集,该第三子集包括所述第一子集和所述第二子集的交集;
对所述存储器页面与所述第三子集中引用的各个页面执行逐字节的比较。
16.根据权利要求4所述的方法,还包括通过以下方式中的任意一个或多个方式获得与所述存储器页面有关的元数据:执行针对所述管理程序或虚拟机操作系统的自省操作;代表来宾应用对所述管理程序或虚拟机操作系统进行问询;请求来自一个或多个网络化资源的信息;对所述计算机程序的一个或多个数字证书进行认证。
17.根据权利要求4所述的方法,还包括:
使用表示所述计算机程序的可执行二进制文件,提取所述计算机程序能够生成来使用的所有可能的存储器页面;
对于所有可能的存储器页面的每一个,确定指纹元数据以表示所有可能的存储器页面;
在数据存储库中存储所述指纹元数据。
18.根据权利要求17所述的方法,其中所述指纹元数据包括用于存储器页面内的每个固定字节范围的数据,以及从存储器页面内的可变字节的每个范围中导出的擦除掩码。
19.根据权利要求17所述的方法,其中所述指纹元数据包括对于所有可能的存储器页面中的每一个的出处数据。
20.根据权利要求17所述的方法,还包括:访问被配置为对所述计算机程序进行加载的二进制加载器,以及利用描述了所述二进制加载器的信息来确定所有可能的存储器页面的存储器内布局。
21.根据权利要求17所述的方法,还包括将所述指纹元数据分发至能够被多个客户端计算机访问的分布式数据存储设备。
22.根据权利要求21所述的方法,还包括:
接收来自多个客户端计算机中的特定客户端计算机的、获得用于一个或多个特定存储器页面的一组指纹元数据的请求;
响应于确定用于所述一个或多个特定存储器页面的元数据未被存储在所述分布式数据存储设备中,利用一个或多个网络化资源来搜索关于与所述一个或多个特定存储器页面相关联的计算机程序的信息。
23.根据权利要求22所述的方法,还包括:通过将以下各项发送至所述特定客户端计算机来对所述特定客户端计算机的请求进行回应:请求客户端计算机在另一时间重新呈现请求的交叉请求,或者请求客户端计算机提供附加信息的交叉请求。
24.根据权利要求11所述的方法,还包括:在负面缓存中存储指示所述计算机程序是无效的程序或未知的程序的信息。
25.根据权利要求1所述的方法,其中所述计算机程序是可解释的程序或脚本,并且其中至少一个安全功能包括以下任一项:限制解释程序的操作;验证针对指纹元数据的数据存储库的脚本文件;阻止未授权的脚本文件被解释;覆盖解释程序;解释程序特有的补救步骤。
26.根据权利要求25所述的方法,还包括:
监控所述计算机程序执行的读操作;
比较对所述计算机程序发出的文件的各个查找偏移量与期望的查找偏移量,以确定所述读操作是否是无效的;
响应于确定所述读操作是无效的,阻止所述读操作的完成。
27.根据权利要求25所述的方法,还包括:
将解释程序加载到计算机存储器中;
在所述计算机存储器中修改解释程序以实现先前描述的功能;
仅在修改之后准许解释程序执行。
28.根据权利要求1所述的方法,还包括:
确定即时编译器已经分配了计算机的存储器中的特定存储器页面;
响应于确定所述即时编译器已经分配了计算机的存储器中的特定存储器页面:
使用所述第二组存储器页面权限,将与所述特定存储器页面相关联的特定存储器页面权限标记为不可执行;
不允许所述特定存储器页面的启用以下各项的任意一个或多个的指令:系统调用、库调用、跳到无效的位置、跳到禁止位置、使用除期望的出口点或常规出口点之外的其他出口点。
29.根据权利要求28所述的方法,还包括:
分析所述特定存储器页面以确定计算间接指针的指令是否在存储器页面中;
复查所述间接指针的一个或多个目标;
基于所述间接指针的一个或多个目标选择具体的安全功能。
30.根据权利要求28所述的方法,其中确定所述即时编译器已经分配了计算机的存储器中的特定存储器页面的步骤包括以下任一项:
确定所述特定存储器页面具有可执行的存储器页面权限;
确定第一MMAP调用已经从已知为即时编译器的可执行程序发起;
确定第二MMAP调用请求将所述特定存储器页面创建为可写代码存储器;
基于可执行文件与JIT编译器的关联,将所述特定存储器页面与创建它的可执行文件相关联。
31.一种用于虚拟化计算机程序中的安全的系统,包括:
至少一个处理器,该至少一个处理器被配置为:
对管理程序或虚拟机操作系统的超级调用接口实施存储器事件接口,以截取与包含计算机程序的存储器页面的写入相关联的页面故障;
接收由来宾域试图写入在存储器页面权限系统中被标记为不可执行的存储器页面所引起的页面故障;
确定由所述管理程序或虚拟机操作系统维护的、针对所述存储器页面的第一组存储器页面权限;
确定独立于所述管理程序或虚拟机操作系统而维护的、针对所述存储器页面的第二组存储器页面权限;
基于第一组和第二组,确定针对所述存储器页面的特定存储器页面权限;
基于所述特定存储器页面权限来处理页面故障,该处理包括执行至少一个与管制所述来宾域对所述存储器页面的访问相关联的安全功能。
32.根据权利要求31所述的系统,其中所述处理器被配置为执行权利要求2-30中的任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161542786P | 2011-10-03 | 2011-10-03 | |
US61/542,786 | 2011-10-03 | ||
PCT/US2012/000486 WO2013052121A1 (en) | 2011-10-03 | 2012-10-03 | Security in virtualized computer programs |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103959247A CN103959247A (zh) | 2014-07-30 |
CN103959247B true CN103959247B (zh) | 2017-02-22 |
Family
ID=47993755
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280059388.1A Expired - Fee Related CN103959247B (zh) | 2011-10-03 | 2012-10-03 | 虚拟化计算机程序中的安全 |
Country Status (4)
Country | Link |
---|---|
US (4) | US8984478B2 (zh) |
EP (1) | EP2764434B1 (zh) |
CN (1) | CN103959247B (zh) |
WO (1) | WO2013052121A1 (zh) |
Families Citing this family (138)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8510596B1 (en) | 2006-02-09 | 2013-08-13 | Virsec Systems, Inc. | System and methods for run time detection and correction of memory corruption |
US9672019B2 (en) | 2008-11-24 | 2017-06-06 | Intel Corporation | Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads |
US10621092B2 (en) | 2008-11-24 | 2020-04-14 | Intel Corporation | Merging level cache and data cache units having indicator bits related to speculative execution |
WO2013048468A1 (en) | 2011-09-30 | 2013-04-04 | Intel Corporation | Instruction and logic to perform dynamic binary translation |
US8984478B2 (en) | 2011-10-03 | 2015-03-17 | Cisco Technology, Inc. | Reorganization of virtualized computer programs |
US8694738B2 (en) * | 2011-10-11 | 2014-04-08 | Mcafee, Inc. | System and method for critical address space protection in a hypervisor environment |
US8973144B2 (en) * | 2011-10-13 | 2015-03-03 | Mcafee, Inc. | System and method for kernel rootkit protection in a hypervisor environment |
US9069586B2 (en) | 2011-10-13 | 2015-06-30 | Mcafee, Inc. | System and method for kernel rootkit protection in a hypervisor environment |
CN103064723B (zh) * | 2011-10-18 | 2016-01-20 | 财团法人工业技术研究院 | 虚拟机器存储器的鉴识方法与计算机系统 |
US9256552B2 (en) | 2011-11-21 | 2016-02-09 | Cisco Technology, Inc. | Selective access to executable memory |
RU2510074C2 (ru) * | 2012-02-24 | 2014-03-20 | Закрытое акционерное общество "Лаборатория Касперского" | Система и способ проверки исполняемого кода перед его выполнением |
WO2013130548A2 (en) * | 2012-02-27 | 2013-09-06 | University Of Virginia Patent Foundation | Method of instruction location randomization (ilr) and related system |
US9721091B2 (en) * | 2012-02-28 | 2017-08-01 | Red Hat Israel, Ltd. | Guest-driven host execution |
US8959577B2 (en) | 2012-04-13 | 2015-02-17 | Cisco Technology, Inc. | Automatic curation and modification of virtualized computer programs |
US9032381B2 (en) | 2012-06-29 | 2015-05-12 | Intel Corporation | State recovery methods and apparatus for computing platforms |
US9165138B2 (en) * | 2012-07-11 | 2015-10-20 | Leviathan Security Group, Inc. | Mitigation of function pointer overwrite attacks |
US9471514B1 (en) * | 2012-08-23 | 2016-10-18 | Palo Alto Networks, Inc. | Mitigation of cyber attacks by pointer obfuscation |
CN103677878B (zh) * | 2012-09-12 | 2017-07-14 | 国际商业机器公司 | 一种打补丁的方法和装置 |
US9037823B2 (en) * | 2012-09-14 | 2015-05-19 | Intel Corporation | Protecting IAT/EAT hooks from rootkit attacks using new CPU assists |
WO2014111922A1 (en) * | 2013-01-21 | 2014-07-24 | B.G. Negev Technologies And Applications Ltd. | Method and system for protecting computerized systems from malicious code |
US9990216B2 (en) | 2013-06-27 | 2018-06-05 | Red Hat Israel, Ltd. | Providing hypercall interface for virtual machines |
GB2515536A (en) * | 2013-06-27 | 2014-12-31 | Ibm | Processing a guest event in a hypervisor-controlled system |
US9292684B2 (en) | 2013-09-06 | 2016-03-22 | Michael Guidry | Systems and methods for security in computer systems |
JP2016534479A (ja) * | 2013-09-12 | 2016-11-04 | ヴァーセック・システムズ・インコーポレーテッドVirsec Systems,Inc. | マルウェアのランタイム中の自動検出 |
US9891936B2 (en) | 2013-09-27 | 2018-02-13 | Intel Corporation | Method and apparatus for page-level monitoring |
US9983893B2 (en) | 2013-10-01 | 2018-05-29 | Red Hat Israel, Ltd. | Handling memory-mapped input-output (MMIO) based instructions using fast access addresses |
US9189214B2 (en) * | 2013-10-30 | 2015-11-17 | International Business Machines Corporation | Code stack management |
US9916173B2 (en) | 2013-11-25 | 2018-03-13 | Red Hat Israel, Ltd. | Facilitating execution of MMIO based instructions |
US9436823B1 (en) | 2013-12-17 | 2016-09-06 | Google Inc. | System and method for detecting malicious code |
CN104750536B (zh) * | 2013-12-30 | 2018-08-21 | 华为技术有限公司 | 一种实现虚拟机自省的方法和装置 |
US9400885B2 (en) | 2014-01-10 | 2016-07-26 | Bitdefender IPR Management Ltd. | Computer security systems and methods using virtualization exceptions |
WO2015114826A1 (ja) * | 2014-02-03 | 2015-08-06 | 株式会社日立製作所 | ダンプ解析方法、装置及びプログラム |
US20150261952A1 (en) * | 2014-03-13 | 2015-09-17 | Unisys Corporation | Service partition virtualization system and method having a secure platform |
US10019567B1 (en) * | 2014-03-24 | 2018-07-10 | Amazon Technologies, Inc. | Encoding of security codes |
US10514904B2 (en) * | 2014-04-24 | 2019-12-24 | Hewlett Packard Enterprise Development Lp | Dynamically applying a patch to a computer application |
WO2015200511A1 (en) | 2014-06-24 | 2015-12-30 | Virsec Systems, Inc. | System and methods for automated detection of input and output validation and resource management vulnerability |
US9703726B2 (en) * | 2014-06-24 | 2017-07-11 | Bitdefender IPR Management Ltd. | Systems and methods for dynamically protecting a stack from below the operating system |
US9680862B2 (en) * | 2014-07-01 | 2017-06-13 | Fireeye, Inc. | Trusted threat-aware microvisor |
US9398019B2 (en) | 2014-08-07 | 2016-07-19 | Vmware, Inc. | Verifying caller authorization using secret data embedded in code |
US9411979B2 (en) | 2014-08-07 | 2016-08-09 | Vmware, Inc. | Embedding secret data in code |
US20160048679A1 (en) * | 2014-08-18 | 2016-02-18 | Bitdefender IPR Management Ltd. | Systems And Methods for Exposing A Current Processor Instruction Upon Exiting A Virtual Machine |
US9372990B2 (en) | 2014-08-29 | 2016-06-21 | International Business Machines Corporation | Detecting heap spraying on a computer |
WO2016068845A1 (en) * | 2014-09-01 | 2016-05-06 | Hewlett Packard Enterprise Development Lp | Dynamically applying a patch to a shared library |
CN104168292A (zh) * | 2014-09-01 | 2014-11-26 | 宇龙计算机通信科技(深圳)有限公司 | 动态指令处理方法、动态指令处理装置和终端 |
US10922402B2 (en) | 2014-09-29 | 2021-02-16 | Vmware, Inc. | Securing secret data embedded in code against compromised interrupt and exception handlers |
US10311227B2 (en) | 2014-09-30 | 2019-06-04 | Apple Inc. | Obfuscation of an address space layout randomization mapping in a data processing system |
US10311228B2 (en) | 2014-09-30 | 2019-06-04 | Apple Inc. | Using a fine-grained address space layout randomization to mitigate potential security exploits |
US9785777B2 (en) * | 2014-12-19 | 2017-10-10 | International Business Machines Corporation | Static analysis based on abstract program representations |
CN104572467A (zh) * | 2015-01-19 | 2015-04-29 | 浪潮电子信息产业股份有限公司 | 一种服务器虚拟化平台数据库性能测试的方法 |
US20160210069A1 (en) * | 2015-01-21 | 2016-07-21 | Bitdefender IPR Management Ltd. | Systems and Methods For Overriding Memory Access Permissions In A Virtual Machine |
US10007515B2 (en) * | 2015-01-30 | 2018-06-26 | Oracle International Corporation | System and method for automatic porting of software applications into a cloud computing environment |
US10341342B2 (en) * | 2015-02-05 | 2019-07-02 | Carrier Corporation | Configuration data based fingerprinting for access to a resource |
US9600190B2 (en) * | 2015-02-27 | 2017-03-21 | Red Hat Israel, Ltd. | Virtual machine functions for multiple privileged pages |
US9753861B2 (en) | 2015-05-27 | 2017-09-05 | Red Hat Israel, Ltd | Exit-less movement of guest memory assigned to a device in a virtualized environment |
US9875047B2 (en) | 2015-05-27 | 2018-01-23 | Red Hat Israel, Ltd. | Exit-less host memory locking in a virtualized environment |
US10162767B2 (en) | 2015-06-27 | 2018-12-25 | Mcafee, Llc | Virtualized trusted storage |
US10395029B1 (en) | 2015-06-30 | 2019-08-27 | Fireeye, Inc. | Virtual system and method with threat protection |
US11113086B1 (en) | 2015-06-30 | 2021-09-07 | Fireeye, Inc. | Virtual system and method for securing external network connectivity |
US10726127B1 (en) | 2015-06-30 | 2020-07-28 | Fireeye, Inc. | System and method for protecting a software component running in a virtual machine through virtual interrupts by the virtualization layer |
US10216927B1 (en) | 2015-06-30 | 2019-02-26 | Fireeye, Inc. | System and method for protecting memory pages associated with a process using a virtualization layer |
US10642753B1 (en) | 2015-06-30 | 2020-05-05 | Fireeye, Inc. | System and method for protecting a software component running in virtual machine using a virtualization layer |
US9626181B2 (en) * | 2015-07-06 | 2017-04-18 | Dell Products L.P. | Systems and methods to securely inject binary images and code into firmware |
US10365937B2 (en) | 2015-07-24 | 2019-07-30 | Red Hat Israel, Ltd. | Entropy increase by executable loader |
JP6769999B2 (ja) * | 2015-08-21 | 2020-10-14 | クリプトグラフィ リサーチ, インコーポレイテッド | セキュア計算環境 |
CN105117273A (zh) * | 2015-09-11 | 2015-12-02 | 中科信息安全共性技术国家工程研究中心有限公司 | 一种xen虚拟化平台中获取客户机进程信息的方法及系统 |
US10033759B1 (en) | 2015-09-28 | 2018-07-24 | Fireeye, Inc. | System and method of threat detection under hypervisor control |
US10158623B2 (en) | 2015-09-30 | 2018-12-18 | International Business Machines Corporation | Data theft deterrence |
US9536088B1 (en) * | 2015-11-09 | 2017-01-03 | AO Kaspersky Lab | System and method for protection of memory in a hypervisor |
US10296737B2 (en) | 2015-12-09 | 2019-05-21 | International Business Machines Corporation | Security enforcement in the presence of dynamic code loading |
CN105511814A (zh) * | 2015-12-11 | 2016-04-20 | 上海爱数信息技术股份有限公司 | 一种静态数据文件的存储方法 |
US10417453B2 (en) * | 2015-12-14 | 2019-09-17 | Cryptography Research, Inc. | Preemption of a container in a secure computation environment |
WO2017116827A1 (en) * | 2015-12-30 | 2017-07-06 | Siege Technologies LLC | Memory fractionation software protection |
US9846610B2 (en) | 2016-02-08 | 2017-12-19 | Red Hat Israel, Ltd. | Page fault-based fast memory-mapped I/O for virtual machines |
US10073710B2 (en) * | 2016-02-25 | 2018-09-11 | Red Hat Israel, Ltd. | Host-driven application memory protection for virtual machines |
US10057069B2 (en) | 2016-02-29 | 2018-08-21 | Red Hat Israel, Ltd. | Securing code loading by a guest in a virtual environment |
US11188651B2 (en) * | 2016-03-07 | 2021-11-30 | Crowdstrike, Inc. | Hypervisor-based interception of memory accesses |
US10116630B2 (en) * | 2016-04-04 | 2018-10-30 | Bitdefender IPR Management Ltd. | Systems and methods for decrypting network traffic in a virtualized environment |
US10255088B2 (en) * | 2016-05-13 | 2019-04-09 | Red Hat Israel, Ltd. | Modification of write-protected memory using code patching |
US20190311117A1 (en) * | 2016-06-14 | 2019-10-10 | Cymmetria, Inc. | Employing code signing as a tool in cyber-security deception |
CA3027728A1 (en) | 2016-06-16 | 2017-12-21 | Virsec Systems, Inc. | Systems and methods for remediating memory corruption in a computer application |
US10268601B2 (en) | 2016-06-17 | 2019-04-23 | Massachusetts Institute Of Technology | Timely randomized memory protection |
KR102495924B1 (ko) * | 2016-07-29 | 2023-02-06 | 삼성전자주식회사 | 어플리케이션의 보안 처리 방법 및 이를 지원하는 전자 장치 |
US10310991B2 (en) * | 2016-08-11 | 2019-06-04 | Massachusetts Institute Of Technology | Timely address space randomization |
US11188365B2 (en) | 2016-11-29 | 2021-11-30 | Red Hat, Inc. | Memory overcommit by speculative fault |
US10592664B2 (en) | 2017-02-02 | 2020-03-17 | Cisco Technology, Inc. | Container application security and protection |
US20180285262A1 (en) * | 2017-03-31 | 2018-10-04 | Intel Corporation | Techniques for shared virtual memory access protection |
US10445247B2 (en) | 2017-06-20 | 2019-10-15 | Red Hat, Inc. | Switching between single-level and two-level page table translations |
US10515216B2 (en) * | 2017-06-30 | 2019-12-24 | Paypal, Inc. | Memory layout based monitoring |
US10423478B2 (en) | 2017-08-29 | 2019-09-24 | Red Hat, Inc. | Security enhanced out of process user space handling of hardware events |
US10719446B2 (en) * | 2017-08-31 | 2020-07-21 | Oracle International Corporation | Directly mapped buffer cache on non-volatile memory |
US10437735B2 (en) | 2017-12-13 | 2019-10-08 | Red Hat, Inc. | Process isolation for out of process page fault handling |
US10902130B2 (en) * | 2018-02-18 | 2021-01-26 | Fujitsu Limited | Guiding automated testing of binary programs |
CN110543789B (zh) * | 2018-05-29 | 2023-05-16 | 腾讯科技(深圳)有限公司 | 手柄与第三方应用程序进行适配的方法、装置及存储介质 |
CN108958876B (zh) * | 2018-07-23 | 2022-02-01 | 郑州云海信息技术有限公司 | 浏览器页面的显示方法和装置 |
US10776020B2 (en) | 2018-08-13 | 2020-09-15 | Red Hat, Inc. | Memory protection in virtualized computer systems using shadow page tables |
US11074094B2 (en) | 2018-08-29 | 2021-07-27 | Red Hat, Inc. | Securing hypercall support for user space processes in virtual machines |
US11363028B2 (en) * | 2018-09-27 | 2022-06-14 | The Toronto-Dominion Bank | Systems and methods for delegating access to a protected resource |
CN109800050B (zh) * | 2018-11-22 | 2021-11-23 | 海光信息技术股份有限公司 | 一种虚拟机的内存管理方法、装置、相关设备及系统 |
US11010285B2 (en) | 2019-01-24 | 2021-05-18 | International Business Machines Corporation | Fault detection and localization to generate failing test cases using combinatorial test design techniques |
US11010282B2 (en) | 2019-01-24 | 2021-05-18 | International Business Machines Corporation | Fault detection and localization using combinatorial test design techniques while adhering to architectural restrictions |
US11106567B2 (en) | 2019-01-24 | 2021-08-31 | International Business Machines Corporation | Combinatoric set completion through unique test case generation |
US11263116B2 (en) | 2019-01-24 | 2022-03-01 | International Business Machines Corporation | Champion test case generation |
US11487906B2 (en) | 2019-03-08 | 2022-11-01 | International Business Machines Corporation | Storage sharing between a secure domain and a non-secure entity |
US11403409B2 (en) * | 2019-03-08 | 2022-08-02 | International Business Machines Corporation | Program interruptions for page importing/exporting |
US11531627B2 (en) | 2019-03-08 | 2022-12-20 | International Business Machines Corporation | Secure storage isolation |
US11640361B2 (en) | 2019-03-08 | 2023-05-02 | International Business Machines Corporation | Sharing secure memory across multiple security domains |
US10963373B2 (en) | 2019-03-25 | 2021-03-30 | Aurora Labs Ltd. | Identifying software dependencies using line-of-code behavior and relation models |
CN110147653B (zh) * | 2019-03-28 | 2022-04-19 | 江苏通付盾信息安全技术有限公司 | 应用程序安全加固方法及装置 |
CN110096300B (zh) * | 2019-04-08 | 2023-03-14 | 上海赛治信息技术有限公司 | 一种fpga程序文件备份管理系统、运行方法及升级方法 |
US10990510B2 (en) * | 2019-06-13 | 2021-04-27 | International Business Machines Corporation | Associating attribute seeds of regression test cases with breakpoint value-based fingerprints |
US10970195B2 (en) | 2019-06-13 | 2021-04-06 | International Business Machines Corporation | Reduction of test infrastructure |
US10963366B2 (en) * | 2019-06-13 | 2021-03-30 | International Business Machines Corporation | Regression test fingerprints based on breakpoint values |
US10970197B2 (en) | 2019-06-13 | 2021-04-06 | International Business Machines Corporation | Breakpoint value-based version control |
US11422924B2 (en) | 2019-06-13 | 2022-08-23 | International Business Machines Corporation | Customizable test set selection using code flow trees |
US11232020B2 (en) | 2019-06-13 | 2022-01-25 | International Business Machines Corporation | Fault detection using breakpoint value-based fingerprints of failing regression test cases |
CN111177716B (zh) * | 2019-06-14 | 2024-04-02 | 腾讯科技(深圳)有限公司 | 一种内存中可执行文件获取方法、装置、设备及存储介质 |
WO2021011138A1 (en) * | 2019-07-14 | 2021-01-21 | Jung Yong Kyu | A hybrid security-enabled lookahead microprocessor based method and apparatus for securing computer systems and data |
US11586606B2 (en) * | 2019-08-16 | 2023-02-21 | Mastercard International Incorporated | Key value fault interception including surrogate responses |
WO2021034753A2 (en) * | 2019-08-16 | 2021-02-25 | The Regents Of The University Of Michigan | Thwarting control plane attacks with displaced and dilated address spaces |
CN110727528A (zh) * | 2019-08-22 | 2020-01-24 | 深圳市元征科技股份有限公司 | 存储器故障恢复方法、装置、电子设备和存储介质 |
CN111061233B (zh) * | 2019-12-10 | 2021-05-14 | 北京慧虹远航科技有限公司 | 一种面向工业控制系统的设计方法、装置和存储介质 |
US11563774B2 (en) * | 2019-12-27 | 2023-01-24 | Activision Publishing, Inc. | Systems and methods for tracking and identifying phishing website authors |
US20230049233A1 (en) * | 2020-01-28 | 2023-02-16 | C2A-Sec, Ltd. | Control flow integrity system and method |
CA3167877A1 (en) * | 2020-02-25 | 2021-09-02 | Production Robots Engineering Limited | Realtime distribution of granular data streams on a network |
CN111400702B (zh) * | 2020-03-24 | 2023-06-27 | 上海瓶钵信息科技有限公司 | 一种虚拟化的操作系统内核保护方法 |
US11063601B1 (en) * | 2020-04-20 | 2021-07-13 | Netapp, Inc. | File system format for persistent memory |
US11513941B2 (en) * | 2020-09-02 | 2022-11-29 | Ge Aviation Systems Llc | Systems and method for flexible write- and read-access of a regulated system |
US11500668B2 (en) | 2020-10-15 | 2022-11-15 | Red Hat, Inc. | Page fault support for virtual machine network accelerators |
CN112348104B (zh) * | 2020-11-17 | 2023-08-18 | 百度在线网络技术(北京)有限公司 | 仿冒程序的识别方法、装置、设备及存储介质 |
CN112328435B (zh) * | 2020-12-07 | 2023-09-12 | 武汉绿色网络信息服务有限责任公司 | 目标数据备份和恢复的方法、装置、设备及存储介质 |
US20220308936A1 (en) * | 2021-03-23 | 2022-09-29 | Vmware, Inc. | Application-level virtualization |
US20220308867A1 (en) * | 2021-03-26 | 2022-09-29 | Intel Corporation | Apparatus and method for managing unsupported instruction set architecture (isa) features in a virtualized environment |
US12020059B2 (en) * | 2021-08-30 | 2024-06-25 | International Business Machines Corporation | Inaccessible prefix pages during virtual machine execution |
US11907101B2 (en) * | 2022-02-22 | 2024-02-20 | Cloud Linux Software, Inc. | Systems and methods for selective patching based on kernel and user space interaction |
CN114691391A (zh) * | 2022-03-14 | 2022-07-01 | 阿里巴巴(中国)有限公司 | 增强型包过滤器的内核态程序的超级调用方法及装置 |
CN114389904B (zh) * | 2022-03-24 | 2022-06-07 | 湖南光韵科技有限公司 | 业务终端交付一体化系统 |
US12045326B2 (en) * | 2022-07-14 | 2024-07-23 | Dell Products L.P. | Secured communication protocol layer for authenticated hardware data access |
CN115048155B (zh) * | 2022-08-11 | 2022-11-15 | 成都智暄科技有限责任公司 | 加载动态库的方法及系统、计算机可读存储介质及装置 |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5699507A (en) * | 1995-01-17 | 1997-12-16 | Lucent Technologies Inc. | Method of identifying similarities in code segments |
US5787285A (en) * | 1995-08-15 | 1998-07-28 | International Business Machines Corporation | Apparatus and method for optimizing applications for multiple operational environments or modes |
US5809563A (en) | 1996-11-12 | 1998-09-15 | Institute For The Development Of Emerging Architectures, Llc | Method and apparatus utilizing a region based page table walk bit |
US6529985B1 (en) * | 2000-02-04 | 2003-03-04 | Ensim Corporation | Selective interception of system calls |
US7539875B1 (en) * | 2000-06-27 | 2009-05-26 | Microsoft Corporation | Secure repository with layers of tamper resistance and system and method for providing same |
US7325126B2 (en) | 2004-03-05 | 2008-01-29 | Microsoft Corporation | System and method for distributed module authentication |
US20070006178A1 (en) | 2005-05-12 | 2007-01-04 | Microsoft Corporation | Function-level just-in-time translation engine with multiple pass optimization |
US7620987B2 (en) * | 2005-08-12 | 2009-11-17 | Microsoft Corporation | Obfuscating computer code to prevent an attack |
US20080086550A1 (en) * | 2006-10-06 | 2008-04-10 | Cingular Wireless Ii, Llc | Integration of data between devices |
US8856782B2 (en) | 2007-03-01 | 2014-10-07 | George Mason Research Foundation, Inc. | On-demand disposable virtual work system |
US8276201B2 (en) * | 2007-03-22 | 2012-09-25 | International Business Machines Corporation | Integrity protection in data processing systems |
US8763115B2 (en) * | 2007-08-08 | 2014-06-24 | Vmware, Inc. | Impeding progress of malicious guest software |
US8239836B1 (en) * | 2008-03-07 | 2012-08-07 | The Regents Of The University Of California | Multi-variant parallel program execution to detect malicious code injection |
US8578483B2 (en) * | 2008-07-31 | 2013-11-05 | Carnegie Mellon University | Systems and methods for preventing unauthorized modification of an operating system |
US8239938B2 (en) | 2008-12-08 | 2012-08-07 | Nvidia Corporation | Centralized device virtualization layer for heterogeneous processing units |
US8341620B2 (en) * | 2009-06-25 | 2012-12-25 | Microsoft Corporation | Streaming optimized virtual application images |
US8341627B2 (en) * | 2009-08-21 | 2012-12-25 | Mcafee, Inc. | Method and system for providing user space address protection from writable memory area in a virtual environment |
US8448153B1 (en) * | 2009-10-29 | 2013-05-21 | Ning Wang | Encoding data and metadata for run-time checking of computer code and data serialization |
US8522225B2 (en) * | 2010-06-25 | 2013-08-27 | International Business Machines Corporation | Rewriting branch instructions using branch stubs |
US20120204235A1 (en) | 2011-02-08 | 2012-08-09 | Joe Jaudon | Updating Resource Access Permissions in a Virtual Computing Environment |
AU2011363943A1 (en) * | 2011-03-31 | 2013-10-24 | Irdeto B.V. | Method of securing non-native code |
US20120260106A1 (en) * | 2011-04-07 | 2012-10-11 | Apple Inc. | System and method for binary layout randomization |
US9311126B2 (en) * | 2011-07-27 | 2016-04-12 | Mcafee, Inc. | System and method for virtual partition monitoring |
US8984478B2 (en) | 2011-10-03 | 2015-03-17 | Cisco Technology, Inc. | Reorganization of virtualized computer programs |
-
2012
- 2012-07-13 US US13/549,410 patent/US8984478B2/en active Active
- 2012-10-03 EP EP12838053.2A patent/EP2764434B1/en active Active
- 2012-10-03 WO PCT/US2012/000486 patent/WO2013052121A1/en active Application Filing
- 2012-10-03 CN CN201280059388.1A patent/CN103959247B/zh not_active Expired - Fee Related
- 2012-10-03 US US13/573,765 patent/US9063899B2/en active Active
-
2015
- 2015-03-12 US US14/656,409 patent/US9535855B2/en active Active
- 2015-05-27 US US14/723,216 patent/US9229881B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US9063899B2 (en) | 2015-06-23 |
EP2764434A1 (en) | 2014-08-13 |
EP2764434B1 (en) | 2019-09-11 |
CN103959247A (zh) | 2014-07-30 |
US20150261690A1 (en) | 2015-09-17 |
WO2013052121A1 (en) | 2013-04-11 |
US9229881B2 (en) | 2016-01-05 |
US20130086550A1 (en) | 2013-04-04 |
US9535855B2 (en) | 2017-01-03 |
US20130086299A1 (en) | 2013-04-04 |
US20150199283A1 (en) | 2015-07-16 |
US8984478B2 (en) | 2015-03-17 |
EP2764434A4 (en) | 2015-05-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103959247B (zh) | 虚拟化计算机程序中的安全 | |
US20200250302A1 (en) | Security control method and computer system | |
US9747172B2 (en) | Selective access to executable memory | |
US9832226B2 (en) | Automatic curation and modification of virtualized computer programs | |
CN105393255B (zh) | 用于虚拟机中的恶意软件检测的过程评估 | |
Reis et al. | BrowserShield: Vulnerability-driven filtering of dynamic HTML | |
CN107771335A (zh) | 受保护区域 | |
Hunt et al. | Confidential computing for OpenPOWER | |
Capizzi et al. | Preventing information leaks through shadow executions | |
CN109564608A (zh) | 对用于应用二进制代码的经更新的版本的目标应用功能的虚拟存储器地址进行更新 | |
CN108475217A (zh) | 用于审计虚拟机的系统及方法 | |
van de Ven | New security enhancements in red hat enterprise linux v. 3, update 3 | |
CN107480524A (zh) | 一种安全沙箱及其构建方法 | |
CN110597496B (zh) | 应用程序的字节码文件获取方法及装置 | |
EP4396711A1 (en) | Systems and methods for inhibiting exploitations in runtime environments | |
Mesbah et al. | Reverse engineering a Java Card memory management algorithm | |
AU2002219852B2 (en) | Systems and methods for preventing unauthorized use of digital content | |
Kirmani et al. | Enhancing Reliability During Physical Memory Forensics: Strategies and Practices | |
US20240362321A1 (en) | Systems and methods for interpreter based application cybersecurity | |
Jeong et al. | Exploiting Metaobjects to Reinforce Data Leakage Attacks | |
AU2002219852A1 (en) | Systems and methods for preventing unauthorized use of digital content | |
Chamorro | Antivirus software advising system | |
AU2008200472A1 (en) | Systems and methods for preventing unauthorized use of digital content related applications | |
Hemalatha et al. | AN INTELLIGENT SECURITY SYSTEM TO MAKE OUT MALICIOUS WEBPAGES | |
AU2010202883A1 (en) | Systems and Methods for Preventing Unauthorized Use of Digital Content |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170222 Termination date: 20211003 |
|
CF01 | Termination of patent right due to non-payment of annual fee |