CN108885661A - 时变地址空间布局随机化 - Google Patents
时变地址空间布局随机化 Download PDFInfo
- Publication number
- CN108885661A CN108885661A CN201780020930.5A CN201780020930A CN108885661A CN 108885661 A CN108885661 A CN 108885661A CN 201780020930 A CN201780020930 A CN 201780020930A CN 108885661 A CN108885661 A CN 108885661A
- Authority
- CN
- China
- Prior art keywords
- system service
- version
- versions
- identifier
- processor
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/554—Detecting local intrusion or implementing counter-measures involving event detection and direct action
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/1727—Details of free space management performed by the file system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/188—Virtual file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0623—Securing storage systems in relation to content
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
Abstract
实施例包括由装置实现的用于时变地址空间布局随机化的计算设备、装置和方法。装置可以启动系统服务的第一多个版本,以及向系统服务的第一多个版本中的每个版本分配随机虚拟地址空间布局。装置可以从第一应用接收对执行系统服务的第一请求。装置可以从系统服务的第一多个版本中随机选择系统服务的第一版本,以及使用系统服务的第一版本的数据来执行系统服务。
Description
背景技术
黑客将各种策略用于攻击计算设备,包括移动设备。许多策略涉及尝试识别应用的存储器布局,使得可以通过了解服务在存储器中处于的位置来利用系统服务中的已知漏洞。这种攻击可以体现以系统服务为目标的“控制劫持攻击”,例如返回导向编程(ROP)。ROP攻击的目标是权限提升和后续益处。这种攻击通常采用暴力(brute force)战术,其中,攻击方穷尽地探索进程地址空间以找出漏洞或小工具(gadget)代码/数据位置。暴力战术可能导致攻击的受害者系统服务崩溃。另一种形式的攻击利用了信息泄漏。这样的技术利用格式字符串漏洞来获得某些信息(例如,返回地址,并且因此获得一些库函数位置)。易受攻击的进程的信息泄漏可能会危害另一个进程,尤其是使用动态碎片(shred)库的进程。攻击可以结合技术,来更有效地发现被一个或多个进程使用的地址空间的可利用漏洞。
地址空间布局随机化(ASLR)是一种众所周知的技术,其通过在运行时将程序的不同部分存储在存储器中随机选择的位置并且使用地址空间映射来实现程序执行,来保护应用免受黑客攻击。ASLR提供传统应用映射所不能承担的针对黑客攻击的保护,在所述传统应用映射中在特定的固定(例如,连续)位置处加载程序部分。ASLR使攻击方难以在活动地运行的进程的地址空间中找到不同的代码位置。但是,ASLR仍然可能被攻击。即使应用代码是使用ASLR来随机化的,但是因为可以使用相同的地址空间,所以在对受害者系统服务的重新初始化时,也可以使用攻击方在暴力攻击中收集的信息。
发明内容
各个实施例的方法和装置提供了用于计算设备上的时变地址空间布局随机化的装置和方法,包括:启动系统服务的第一多个版本;以及向系统服务的第一多个版本中的每个版本分配随机虚拟地址空间布局。各个实施例还可以包括:从第一应用接收对执行系统服务的第一请求;从系统服务的第一多个版本中随机选择系统服务的第一版本;以及使用系统服务的第一版本的数据来执行系统服务。
一些实施例还可以还包括:从第一应用接收对执行系统服务的第二请求;从系统服务的第一多个版本中随机选择系统服务的第二版本;以及使用系统服务的第二版本的数据来执行系统服务。
一些实施例可以包括:向系统服务的第一多个版本中的每个版本分配系统服务版本标识符。系统服务的第一多个版本中的每个版本的系统服务版本标识符可以是不同的。各个实施例还可以包括:将系统服务的第一多个版本中的每个版本的系统服务版本标识符与系统服务的系统服务标识符进行关联;以及存储系统服务的第一多个版本中的每个版本的系统服务版本标识符与系统服务标识符的关联结果(correlation)。各个实施例还可以包括:将系统服务的第一多个版本中的每个版本的系统服务版本标识符与系统服务的第一多个版本中的每个版本的随机虚拟地址空间布局中的相应的一个随机虚拟地址空间布局进行关联。各个实施例还可以包括:存储系统服务的第一多个版本中的每个版本的系统服务版本标识符与系统服务的第一多个版本中的每个版本的随机虚拟地址空间布局中的相应的一个随机虚拟地址空间布局的关联结果。
在一些实施例中,对执行系统服务的第一请求包括系统服务标识符;以及从系统服务的第一多个版本中随机选择系统服务的第一版本可以包括:从与系统服务标识符相关的系统服务的第一多个版本中随机选择系统服务的第一版本。各个实施例还可以包括:向第一应用提供系统服务的第一版本的第一系统服务版本标识符;以及从第一应用接收对执行具有第一系统服务版本标识符的系统服务的第一版本的请求。
一些实施例还可以包括:使用第一系统服务版本标识符与第一系统服务版本的随机虚拟地址空间布局之间的关联结果,来对第一系统服务版本的随机虚拟地址进行定位。这样的实施例还可以包括:将第一系统服务版本的随机虚拟地址转化为物理地址,系统服务的第一版本的数据存储在所述物理地址处;以及取得系统服务的第一版本的数据。
一些实施例还可以包括:向系统服务的第一多个版本中的每个版本分配进程标识符。在这样的实施例中,针对系统服务的第一多个版本中的每个版本的进程标识符可以是相同的。在这样的实施例中,可以针对被分配进程标识符的系统服务的第一多个版本中的每个版本,发生以下操作:向系统服务的第一多个版本中的每个版本分配随机虚拟地址空间布局,向系统服务的第一多个版本中的每个版本分配系统服务版本标识符,以及将系统服务的第一多个版本中的每个版本的系统服务版本标识符与系统服务的系统服务标识符进行关联。
一些实施例还可以还包括:接收对为动态生成的执行系统服务的第一版本的代码分配代码缓冲器空间的请求;随机选择代码缓冲器地址;以及确定与代码缓冲器地址相关的代码缓冲器空间是否足够大并且可用于存储动态生成的代码。这样的实施例还可以包括:响应于确定代码缓冲器空间足够大以存储动态生成的代码,在代码缓冲器地址处存储动态生成的代码。
一些实施例还可以包括:从第二应用接收对执行系统服务的第二请求;检测到来自第二应用的对执行系统服务的第二请求是对系统服务的攻击;以及启动系统服务的第二多个版本。这样的实施例还可以包括:向系统服务的第二多个版本中的每个版本分配随机虚拟地址空间布局。系统服务的第一多个版本中的每个版本的随机虚拟地址空间布局和系统服务的第二多个版本中的每个版本的随机虚拟地址空间布局可以是不同的。这样的实施例还可以包括:从系统服务的第一多个版本和系统服务的第二多个版本中随机选择系统服务的第二版本;以及使用系统服务的第二版本的数据来执行系统服务。
在一些实施例中,启动系统服务的第一个多个版本可以包括:在具有不同指令集架构的多个异构处理器核心中的一个处理器核心上启动系统服务的第一多个版本中的系统服务的多版本中的每个版本。在这样的实施例中,从系统服务的第一多个版本中随机选择系统服务的第一版本可以包括:随机选择在其上启动系统服务的第一版本的多个异构处理器核心中的第一异构处理器核心。在这样的实施例中,使用系统服务的第一版本的数据来执行系统服务可以包括:通过第一异构处理器核心来执行系统服务。这样的实施例还可以包括:将来自第一应用的对执行系统服务的第一请求传输给第一异构处理器核心;接收由第一异构处理器核心对系统服务的执行的输出;以及向第一应用返回输出。
各个实施例可以包括:具有下列各项的计算设备:启动器、通信地连接到启动器的映射器、通信地连接到启动器的请求协调器、以及通信地连接到请求协调器的处理器。启动器、映射器、请求协调器以及处理器可以被配置为执行上文概述的实施例方法中的一个或多个实施例方法的操作。
各个实施例可以包括具有用于执行上文概述的实施例方法中的一个或多个实施例方法的功能的单元的计算设备。
各个实施例可以包括具有存储在其上的处理器可执行指令的非临时性处理器可读存储介质,所述处理器可执行指令被配置为使计算设备的处理器执行上文概述的实施例方法中的一个或多个实施例方法的操作。
附图说明
并入本文中并且组成本说明书的部分的附图示出了各个实施例的示例实施例,并且与上面给出的概括描述和下面给出的详细描述一起用于解释权利要求的特征。
图1是示出适用于实现实施例的计算设备的组件框图。
图2是示出适用于实现实施例的示例多核处理器的组件框图。
图3是示出生成系统服务的各种版本的时变地址空间布局随机化的示例的图解图。
图4A是示出适用于实现实施例的示例时变地址空间布局随机化系统的组件框图和信令图。
图4B是示出适用于实现实施例的具有动态代码生成系统的示例时变地址空间布局随机化系统的组件框图和信令图。
图5是示出适用于实现执行系统服务版本的实施例的示例时变地址空间布局随机化系统的组件框图和信令图。
图6是示出适用于实现执行系统服务的多个版本的实施例的示例时变地址空间布局随机化系统的组件框图和信令图。
图7是示出适用于实现执行针对多个应用的系统服务的多个版本的实施例的示例时变地址空间布局随机化系统的组件框图和信令图。
图8是示出适用于实现执行系统服务的多个版本的实施例的具有对象管理器的示例时变地址空间布局随机化系统的组件框图和信令图。
图9是根据实施例示出用于实现时变地址空间布局随机化的方法的过程流图。
图10是根据实施例示出的用于实现在时变地址空间布局随机化中将虚拟存储器地址空间布局向系统服务版本的随机分配的方法的过程流图。
图11是根据实施例示出用于实现使用时变地址空间布局随机化的系统服务执行的方法的过程流图。
图12是根据实施例示出用于实现使用具有动态代码生成的时变地址空间布局随机化的系统服务执行的方法的过程流图。
图13是示出适用于与各个实施例一起使用的示例移动计算设备的组件框图。
图14是示出适用于与各个实施例一起使用的示例移动计算设备的组件框图。
图15是示出适用于与各个实施例一起使用的示例服务器的组件框图。
具体实施方式
将参考附图对各个实施例进行详细描述。遍及附图将尽可能使用相同的附图标记来指代相同或相似的部分。对特定示例和实现方式的参考是用于说明的目的,并且不旨在限制权利要求书的范围。
术语“计算设备”和“移动计算设备”在本文中可互换地使用,以指代下列各项中的任意一项或所有项:蜂窝电话、智能电话、个人或移动多媒体播放器、个人数据助理(PDA)、膝上型计算机、平板计算机、可转换笔记本电脑/平板电脑(二合一电脑)、智能本、超极本、上网本、掌上电脑、无线电子邮件接收机、具有多媒体互联网能力的蜂窝电话、移动游戏控制台、无线游戏控制器以及包括存储器和可编程处理器的类似的个人电子设备。术语“计算设备”还可以指静止的计算设备,包括个人计算机、桌面式计算机、一体式计算机、工作站、超级计算机、大型计算机、嵌入式计算机、服务器、家庭影院计算机和游戏控制台。
各个实施例包括实现用于以下方法的系统和设备:通过也对时间维度中的应用所使用的系统服务的地址空间布局进行随机化,来防止地址空间布局随机化(ASLR)攻击。各种实施例可以包括启动系统服务的多个版本,系统服务的每个版本具有可以随机选择的不同地址空间布局,并且应用针对系统服务的每个请求可以指向系统服务版本中随机选择的一个系统服务版本。
概括地说,时变ASLR可以在系统的引导时或者在引导系统之后响应于对系统服务的第一请求,来创建系统服务的各种版本。可以为系统服务的每个版本分配随机生成的地址空间布局。针对每个系统服务的每个地址空间布局可以存储用于实现相应系统服务的项,包括存储进程栈、堆、数据和函数指针或库存储器映射。可以在虚拟地址空间中创建针对系统服务的每个版本的地址空间,并且每个虚拟地址空间可以具有到存储在物理地址空间中的系统服务的代码(例如,针对系统服务的代码库)的不同存储器映射。可以实现请求协调器以接收对系统服务的请求,以及随机分配系统服务的各种版本中的一个版本以执行所请求的系统服务。
为了对ASLR进行时变,每当接收到针对相同系统服务的请求时,请求协调器可以对与所请求的系统服务相对应的系统服务版本中的一个版本进行随机分配。这被称为时变ASLR,并且通过为针对系统服务的每个请求随机分配系统服务的不同版本来实现。当实现各个实施例的时变ASLR时,执行暴力攻击的攻击方将观察到针对攻击方针对系统服务提交的每个请求的不同虚拟地址空间。此外,泄露的信息将变得更难以使用,因为获得的针对系统服务的一个版本的信息将不适用于系统服务的其它版本。这将大大增加对系统服务的成功暴力攻击所需要的尝试数量。
在一些实施例中,请求协调器可以被配置为:通过监测请求以识别不平常的请求模式,来检测或怀疑攻击。当检测到或怀疑攻击时,请求协调器可以创建系统服务(或多个系统服务)的新副本以及使用随机地址空间布局来存储新副本,从而进一步增加ASLR系统的随机性。
对于粗粒度的时变ASLR,堆、栈、可执行文件、共享库等的起始位置可以针对相同系统服务的不同版本而改变。在示例系统中,用户空间组件(比如启动器)可以启动相同系统服务的多个版本。每个版本可以作为具有不同地址空间布局的分别进程来启动。不同版本可以包括在进程组中,以及可以与相同的进程组标识符(进程组ID)相关联。内核空间映射函数可以使用进程组ID来识别作为系统服务版本的所有进程,以及将每个进程映射到不同的随机地址空间布局。
在创建过程和映射阶段期间,内核代码可以确保新的随机生成的地址不与系统服务的任何现有版本相冲突。可以为系统服务的每个版本分配系统服务版本标识符(比如句柄、标签或其它引用),所述系统服务版本标识符用于唯一地标识系统服务版本和对象的实际地址。
由系统运行的应用可以使用查找方法来查找系统服务,以取得针对系统服务版本或进程的系统服务版本标识符。请求协调器可以向进行请求的应用返回与所请求的系统服务版本相对应的随机选择的系统服务版本标识符。应用可以在其对系统服务的所有调用中使用该系统服务版本标识符。请求协调器可以为针对相同的系统服务的查找方法的不同执行,返回不同的随机选择的系统服务版本标识符。
对于在虚拟机内具有动态生成的代码的系统服务中的细粒度时变ASLR,代码缓冲器中的不同动态代码段(piece)的位置可以位于代码缓冲器中的随机位置(包括代码缓冲器的开始)。对代码缓冲器中的动态代码的随机化可以由使用内置代码库的存储器分配函数的随机存储器分配器来实现,或者由内核的随机存储器分配器以类似的方式来实现。在任一种情况下,随机存储器分配器可以维护系统服务版本标识符的列表,所述系统服务版本标识符标识出系统服务版本以及为针对系统服务的每个版本的动态代码分配的缓冲器地址。当由系统服务版本标识符标识的系统服务的不同版本尝试分配大小为n字节的缓冲器地址时,随机存储器分配器可以针对每个版本来遍历列表以及确定是否存在未用于系统服务版本的缓冲器地址,以及为系统服务版本标识符分配未使用的缓冲器地址。
图1示出了包括与适用于各个实施例一起使用的与远程计算设备50相通信的计算设备10的系统。计算设备10可以包括具有处理器14的片上系统(SoC)12、存储器16、通信接口18和储存存储器接口20。计算设备还可以包括通信组件22,比如有线或无线调制解调器、储存存储器24、用于建立无线通信链路的天线26。处理器14可以包括各种硬件核心中的任何硬件核心,例如多个处理器核心。
术语“片上系统”(SoC)在本文中用于指代互连的电子电路的集合,其通常但非排他地包括硬件核心、存储器和通信接口。硬件核心可以包括各种不同类型的处理器,比如通用处理器、中央处理单元(CPU)、数字信号处理器(DSP)、图形处理单元(GPU)、加速处理单元(APU)、辅助处理器、单核处理器和多核处理器。硬件核心还可以体现其它硬件和硬件组合,比如现场可编程门阵列(FPGA)、专用集成电路(ASIC)、其它可编程逻辑器件、离散门逻辑器件、晶体管逻辑器件、性能监测硬件、看门狗硬件和时间参考。可以配置集成电路以使得集成电路的组件驻留在单片半导体材料(比如硅)上。
SoC 12可以包括一个或多个处理器14。计算设备10可以包括多于一个的SoC 12,从而增加了处理器14和处理器核心的数量。计算设备10还可以包括不与SoC 12相关联的处理器14。各个处理器14可以是如下文参考图2所描述的多核处理器。处理器14可以均被配置用于特定目的,所述处理器14可以与计算设备10的其它处理器14相同或不同。可以将相同或不同配置的处理器14和处理器核心中的一者或多者分组到一起。处理器14或处理器核心的组可以被称为多处理器集群。
SoC 12的存储器16可以是易失性或非易失性存储器,其被配置用于存储数据和处理器可执行代码以用于被处理器14访问。计算设备10和/或SoC12可以包括被配置用于各种目的的一个或多个存储器16。一个或多个存储器16可以包括易失性存储器,比如随机存取存储器(RAM)或主存储器、或高速缓存器存储器。这些存储器16可以被配置为暂时保存以下各项:从数据传感器或子系统接收的有限数量的数据;从非易失性存储器请求的、在基于各种因素对未来访问的预期下从非易失性存储器加载到存储器16的数据和/或处理器可执行代码指令;和/或由处理器14产生的、并且暂时存储以用于在不存储在非易失性存储器中的情况下的未来快速访问的中间处理数据和/或处理器可执行代码指令。
存储器16可以被配置为至少临时地存储从另一个存储器设备(比如另一个存储器16或储存存储器24)加载到存储器16的数据和处理器可执行代码,以用于由处理器14中的一个或多个处理器访问。加载到存储器16的数据或处理器可执行代码可以响应于由处理器14对功能的执行来被加载。响应于对功能的执行来将数据或处理器可执行代码加载到存储器16可能是由于对存储器16的不成功存储器访问请求或未命中(miss)导致的,因为所请求的数据或处理器可执行代码没有位于存储器16中。响应于未命中,可以对另一个存储器16或储存存储器24进行存储器访问请求,以将所请求的数据或处理器可执行代码从另一个存储器16或储存存储器24加载到存储器设备16。响应于对功能的执行来将数据或处理器可执行代码加载到存储器16可能是由于对另一个存储器16或储存存储器24的存储器访问请求,以及数据或处理器可执行代码可以被加载到存储器16以用于稍后的访问。
存储器16可以被配置为至少临时地存储从原始数据源设备(比如传感器或子系统)加载到存储器16的原始数据。原始数据可以从原始数据源设备流式传输到存储器16以及由存储器存储,直到原始数据可以由机器学习加速器接收和处理为止,如本文中参考图3-图19进一步描述的。
储存存储器接口20和储存存储器24可以一致地工作以允许计算设备10将数据和处理器可执行代码存储在非易失性存储介质上。储存存储器24可以非常类似于存储器16的实施例那样被配置,其中储存存储器24可以存储数据或处理器可执行代码以用于由处理器14中的一个或多个处理器访问。储存存储器24是非易失性的,可以在计算设备10的电源已经被关闭之后保持信息。当重新打开电源并且计算设备10重新启动时,存储在储存存储器24上的信息可以对计算设备10可用。储存存储器接口20可以控制对储存存储器24的访问,以及允许处理器14从储存存储器24读取数据以及将数据写入储存存储器24。
计算设备10的组件中的一些或所有组件可以不同地布置和/或组合,同时仍然供应必要的功能。此外,计算设备10可以不限于组件中的每个组件中的一个组件,以及每个组件的多个实例可以包括在计算设备10的各种配置中。
图2示出了适用于实现实施例的多核处理器14。多核处理器14可以具有多个同构或异构处理器核心200、201、202、203。处理器核心200、201、202、203可以是同构的,因为单个处理器14的处理器核心200、201、202、203可以被配置用于相同的目的以及具有相同或相似的性能特性。例如,处理器14可以是通用处理器,以及处理器核心200、201、202、203可以是同构通用处理器核心。或者,处理器14可以是图形处理单元或数字信号处理器,以及处理器核心200、201、202、203可以分别是同构图形处理器核心或数字信号处理器核心。为了便于参考,术语“处理器”和“处理器核心”可以在本文中可互换使用。
处理器核心200、201、202、203可以是异构的,因为单个处理器14的处理器核心200、201、202、203可以被配置用于不同目的和/或具有不同的性能特性。这种异构处理器核心的异构性可以包括不同的指令集架构、流水线、操作频率等。这种异构处理器核心的示例可以包括被称为“big.LITTLE”架构,其中较慢的低功率处理器核心可以与更强大且耗电的处理器核心耦合。在类似的实施例中,SoC 12可以包括多个同构或异构处理器14。
在图2所示的示例中,多核处理器14包括四个处理器核心200、201、202、203(即,处理器核心0、处理器核心1、处理器核心2和处理器核心3)。为了便于解释,本文中的示例可以指代图2中示出的四个处理器核心200、201、202、203。然而,图2中示出以及在本文中描述的四个处理器核心200、201、202、203仅作为示例来提供,并且决不意味着将各种实施例限制为四核处理器系统。计算设备10、SoC 12或多核处理器14可以单独地或组合地包括比本文中示出和描述的四个处理器核心200、201、202、203更少或更多的处理器核心。
图3根据一些实施例示出了生成存储在存储器中的系统服务的各种版本的时变ASLR的非限制性示例。图3中的图300包括水平轴,沿着所述水平轴指定了不同的计算设备,例如计算设备D1、D2直到针对任意整数值的“x”的Dx。图300还包括垂直轴,其表示在整个所表示的时间中增加的时间和不同的系统服务请求。在图300中绘制的是响应于不同的系统服务请求,在不同时间分配的在不同计算设备中的每个计算设备上请求的多个系统服务310-336的各种版本。例如,计算设备D1被示出为随着时间针对单个系统服务(S1)进行多个系统服务请求以及作为响应来接收系统服务S1的不同版本(SV1-1 314、SV1-2 312、SV1-3310,直到针对任意整数值“N”的SV1-N 316)。在各种实现方式中,响应于针对系统服务S1的系统服务请求,系统服务S1的不同版本310-316中的每个版本可以被随机分配,以及可以位于与系统服务S1的其它版本310-316不同的虚拟存储器地址处。
图300还示出了计算设备D2随着时间针对单个系统服务(S1)进行多个系统服务请求以及作为响应来接收系统服务S1的不同版本(SV1-1 320、SV1-2 326、SV1-3 324,直到针对任意整数值“M”的SV1-M 322)。与计算设备D1一样,在各种实现方式中,响应于针对系统服务S1的系统服务请求,系统服务S1的不同版本320-326中的每个版本可以被随机分配,以及可以位于与系统服务S1的其它版本320-326不同的虚拟存储器地址处。由于对系统服务S1的不同版本320-326的随机分配,图300中的示例示出了:计算设备D2的系统服务S1的不同版本320-326随时间以与计算设备D1的系统服务S1的不同版本310-316不同的顺序来分配。尽管系统服务S1的不同版本310-316和320-326共享系统服务版本标识符(例如,SV1-1、SV1-2、SV1-3),但系统服务S1的相应标识的版本310-316和320-326中的每个版本的单独实现方式可以是不同的。例如,系统服务S1的相应标识的版本310-316和320-326的每个实现方式可以被分配不同的随机虚拟地址空间布局,以及可以在它们各自的计算设备D1或D2上的包含针对不同实现方式或系统服务S1的版本310-316和320-326的不同数据。
图300还示出了计算设备Dx随着时间针对多个系统服务(S1和S2)进行多个系统服务请求以及作为响应来接收系统服务S1和S2的不同版本(SV1-1 336、SV1-2 332、SV2-1334,直到针对任意整数值“Q”的SV2-Q 330)。图300中的示例示出了:计算设备D3也请求由计算设备D1和D2请求的相同系统服务S1。系统服务S1的不同版本332和336可以以相同的方式来与系统服务S1的不同版本310-316和320-326不同。系统服务S2的不同版本330和334可以是类似地随机分配的虚拟地址空间布局,包含针对系统服务S2的版本310-316和320-326的不同实现方式的不同数据,并且是响应于针对系统服务S2的系统服务请求来随机选择的。
图3中示出的示例是非限制性的,并且计算设备可以具有任意数量的系统服务的任意数量的版本。响应于对相应系统服务的多个系统服务请求,可以分配任意次数的系统服务的各种版本。
图4A示出了适用于实现各种实施例的示例时变ASLR系统。计算设备可以包括各种形式的物理存储器400,比如参考图1描述的存储器16和储存存储器24。物理存储器400可以存储各种系统服务的代码,比如针对系统服务S1的代码402。
计算设备可以尝试在不同时间访问针对系统服务S1的代码402。例如,在计算设备上执行的引导过程404可以尝试在引导时间期间访问针对系统服务S1的代码402。在计算设备加电并且能够执行应用406的任何时间期间,在计算设备上执行的应用406也可以尝试访问针对系统服务S1的代码402。
为了实现时变ASLR,响应于由引导进程404或应用406进行的系统服务请求,可以由启动器408来启动系统服务的多个版本310-316。在各种实现方式中,可以对计算设备进行预编程,使得引导进程404将针对任何数量的系统服务的系统服务请求引起对那些系统服务的各种版本310-316的启动。
在各种实现方式中,应用406可以进行针对已经启动的系统服务的系统服务请求,以及系统服务的各种版本可以已经启动。在各种实现方式中,当已经存在系统服务的多于一个的版本时,启动器408可以抑制启动系统服务的进一步版本。在各种实现方式中,当已经存在系统服务的一个或多个版本时,启动器408可以启动有限数量的系统服务版本。
在各种实现方式中,应用406可以针对在那时不具有启动的系统服务版本的系统服务来进行系统服务请求。例如,在由应用进行的系统服务请求之前,在计算设备的加电会话期间,所请求的系统服务可能尚未被请求。类似地,在计算设备的加电会话期间启动的系统服务的先前版本可能由于各种原因(比如缺乏使用、有限的存储空间、有限的计算设备功率以及其它替换策略和算法)而已经被丢弃。当在应用406进行系统服务请求时不存在所请求的系统服务的版本时,启动器408可以启动所请求的系统服务的指定数量的版本。
如本文中所描述的,启动器408可以响应于来自多个源的系统服务请求,以及可以启动指定数量的所请求的系统服务的版本。所请求的系统服务版本的数量可以基于下列各项来变化:预编程的值、测量或预期的所请求的系统服务的使用、所请求的系统服务的优先级或漏洞、计算设备的状态(包括存储器空间和功率可用性)、或者检测到或怀疑的对系统服务的威胁,如本文中参考请求协调器412进一步描述的。启动器408可以将系统服务的每个版本与和相同系统服务的其它版本中的每个版本相同的进程组标识符(ID)相关联。进程组标识符可以定义进程组416,所述进程组416包括具有相同进程组标识符的所请求系统服务的版本310-316。
启动器408可以启动要在指定的异构处理器上运行的系统服务的不同版本。例如,启动的系统服务的第一版本可以被配置为由计算设备的CPU执行,以及启动的系统服务的第二版本可以被配置为由计算设备的DSP执行。启动器408可以启动要由任何类型的处理器执行的系统服务的不同版本。要在异构处理器上执行的系统服务的各种版本可以通过要求不同指令集以用于由不同处理器进行的对版本的实现,来帮助对攻击方将系统服务混淆。试图通过使用来自第二处理器的执行版本的数据来执行第一处理器的系统服务版本的攻击方可能无法提供正确的数据或正确格式的数据来使用针对第一处理器的指令集来执行系统服务版本。
计算设备可以包括映射器410,所述映射器410可以被配置为将系统服务的各种版本310-316映射到虚拟存储器414。映射器410可以被配置为随机选择针对系统服务的各种版本310-316的虚拟存储器地址空间布局,以及将系统服务的各种版本310-316映射到可用于存储系统服务的版本310-316的随机选择的虚拟地址空间布局。响应于先前的随机选择导致不可用于存储系统服务的版本310-316的虚拟地址空间布局,映射器410可以随机地为系统服务的版本310-316选择不同的虚拟地址空间布局。映射器410还可以将虚拟地址空间布局与针对系统服务的相应版本310-316的系统服务版本标识符关联,以及存储相关信息用于响应于系统服务请求来分配和定位系统服务的版本310-316。映射器410还可以提供针对系统服务的各种版本310-316的虚拟地址空间布局到物理存储器400中的相应系统服务402的物理地址的映射。对系统服务的各种版本310-316到相应系统服务402的映射可以用于将系统服务的版本310-316的数据提供给系统服务402以用于对系统服务402的执行。
映射器410还可以将针对系统服务的版本310-316的虚拟地址空间布局映射到系统服务的版本310-316的物理地址,所述物理地址存储了系统服务的版本310-316的数据。系统服务的版本310-316的数据可以包括用于实现系统服务的版本310-316的堆、栈、可执行文件、共享库等。计算设备可以使用系统服务的版本310-316的虚拟地址空间布局来取得系统服务的版本310-316的数据,以及使用系统服务的版本310-316的数据来执行系统服务402。在一些实现方式中,系统服务的版本310-316的数据可以包括用于在系统存储器400中定位系统服务402的引用,例如指针。
计算设备可以包括请求协调器412,所述请求协调器412可以被配置为从应用406接收系统服务请求。系统服务请求可以是针对特定系统服务的,比如系统服务S1 402。请求协调器412可以使用系统服务请求中包括的系统服务的系统服务标识符(例如,名称、句柄、标签或其它引用)来将所请求的系统服务与系统服务的版本310-316相匹配。请求协调器412可以随机选择系统服务的版本310-316中的一个版本以用于执行所请求的系统服务。请求协调器412可以取得随机选择的系统服务的版本310-316的虚拟地址(比如随机选择的虚拟地址空间布局的起始虚拟地址),以定位和取得系统服务的版本310-316的数据。对于被配置为由指定处理器执行的系统服务的随机选择版本310-316,请求协调器412可以随机选择具有系统服务版本的异构处理器,以及可以使用处理器间消息来向异构处理器上的版本和发出系统服务请求的引导进程404或应用406发送以及从其接收消息,所述消息包括所接收的系统服务请求以及由异构处理器执行的系统服务版本的输出。
在各种实现方式中,系统服务的不同数量的启动版本可以处于不同的活动状态。活动状态可以包括唤醒状态、睡眠状态以及各种准唤醒/准睡眠状态。在唤醒状态中,系统服务版本可以由请求协调器412随机选择以用于执行所请求的系统服务。在睡眠状态中,系统服务版本可以是由请求协调器412不可选择的或者比较高活动状态版本要不容易随机选择以用于执行所请求的系统服务的。在各种准唤醒/准睡眠状态中的一种状态中,系统服务版本可以由请求协调器412随机选择以用于执行所请求的系统服务。请求协调器412可以使唤醒状态或较高级别准唤醒/准睡眠状态中的系统服务版本的优先于较低级别准唤醒/准睡眠状态或睡眠状态中的系统服务版本。准唤醒/准睡眠状态中的系统服务版本可能不太快地可访问和/或要求更多的功率来进入唤醒状态以便执行唤醒状态中的版本。类似地,处于睡眠状态的系统服务版本可能比准唤醒/准睡眠状态版本花费更多时间和/或更多功率来进入唤醒状态。
请求协调器412可以取决于各种因素来控制系统服务版本是处于唤醒状态、准唤醒/准睡眠状态还是睡眠状态。例如,这种因素可以包括:处理器、计算设备和/或应用的活动状态,计算设备的电源状态,对系统服务的最近和/或预期调用的数量,和/或处理器、计算设备和/或应用的威胁状态。基于各种因素可以针对系统服务进行多次调用的可能性越大,请求协调器412可以将其控制为处于唤醒状态和/或准唤醒/准睡眠状态的系统服务版本的数量越高。使用示例因素,处理器、计算设备和/或应用的活动状态越高,可以处于唤醒状态和/或准唤醒/准睡眠状态的系统服务版本的数量就越高。类似地,对系统服务的近期和/或预期调用的数量越高,可以处于唤醒状态和/或准唤醒/准睡眠状态的系统服务版本的数量就越高。可用于计算设备的功率越多,可以处于唤醒状态和/或准唤醒/准睡眠状态的系统服务版本的数量越高。此外,处理器、计算设备和/或应用的威胁状态越高(其指示漏洞或可能的攻击),可以处于唤醒状态和/或准唤醒/准睡眠状态的系统服务版本的数量越高。
可以存在针对以下各项的限制设置:系统服务版本总数、处于唤醒状态的版本的数量、处于准唤醒/准睡眠状态的版本的数量、和/或处于睡眠状态的版本的数量。取决于用于控制总共的以及处于各种状态的系统服务版本的数量的简档,限制可以不同。简档可以包括预先确定的限制或者可以基于各种因素来分配限制。
在一些实现方式中,请求协调器412可以检测或怀疑以所请求的系统服务为目标的潜在攻击。请求协调器412可以检测不平常的访问模式和系统服务请求方。响应于检测到或怀疑潜在攻击,请求协调器412可以向启动器408发送警报信号,提示(prompt)启动器408启动和/或增加所请求的系统服务的更多版本的活动状态。所请求的系统服务的额外启动和/或增加的活动状态版本可以通过生成更多不同数据的视图用于对系统服务的不相关执行,来进一步对攻击方使系统服务混淆。因为使用来自一次执行的数据可能不与响应于恶意系统服务请求的使用系统服务的不同版本的后续执行相对应,所以额外的数据以及数据之间缺乏一致性有助于防止攻击方获得可以用于利用系统服务的数据。在恶意系统服务请求中使用这种非对应数据可能导致对执行系统服务的无效尝试,其阻止对系统服务的执行。
图4B示出了适用于实现一些实施例的具有动态代码生成系统的时变ASLR系统的示例。计算设备可以包括在用户空间或内核空间中实现的存储器分配器420,以及用于存储用于执行系统服务的动态生成的代码的代码缓冲器424。存储器分配器420可以被配置为存储与代码缓冲器地址相关的系统服务版本标识符的列表422(或被配置为将一个数据与另一个数据链接的其它数据结构),所述代码缓冲器地址和用于执行相关系统服务的动态生成的代码相对应。
对系统服务的版本310-316的执行可以导致为系统服务402动态生成的代码。动态生成的代码可以存储在代码缓冲器424中用于被生成的代码访问,以用于在不必再次动态生成代码的情况下对系统服务的稍后执行。存储器分配器420可以接收用于存储动态生成的代码的参数,包括:相应系统服务的系统服务版本标识符,以及动态生成的代码的大小。存储器分配器420可以遍历代码缓冲器424以找到具有充足大小和可用性的位置以存储动态生成的代码。存储器分配器420可以使用各种算法或模式(其包括对代码缓冲器地址的随机选择)来遍历代码缓冲器424。在找到足够大的位置时,存储器分配器420可以将代码缓冲器424中的位置的地址与列表422进行比较,以确定位置的任何地址是否已经与系统服务版本标识符相关联。不与系统服务版本标识符相关联的位置可以是用于存储动态生成的代码的可用位置。当在代码缓冲器424中找到足够大并且可用的位置时,存储器分配器420可以提供代码缓冲器地址,用于将动态代码存储在代码缓冲器424的动态代码位置(例如,动态代码位置1至Y)中,以及更新列表422以反映在代码缓冲器地址处对动态生成的代码的存储。代码缓冲器地址可以与系统服务的版本310-316的其它数据一起存储,对所述系统服务的版本310-316的执行导致了动态生成的代码。
图5示出了适用于实现用于执行系统服务版本的一些实施例的示例时变ASLR系统。系统可以包括用户空间500和内核空间516。在用户空间500中,可以实现多个系统服务进程(例如系统服务S1进程508a、508b),用于执行系统服务的不同版本,例如,系统服务S1进程508a可以执行系统服务版本SV1-1,以及系统服务S1进程508b可以执行系统服务版本SV1-2。每个系统服务进程508a、508b可以包括用于执行相应系统服务进程508a、508b的代码的系统服务线程池510a、510b。在启动系统服务版本时,系统服务进程508a、508b可以发送注册信号530a、530b,以向请求协调器412或系统服务管理器注册系统服务的相应版本。
请求协调器412可以被配置为注册系统服务版本以及向进行请求的应用406提供所分配的系统服务版本。在一些实现方式中,应用406可以在用户空间500中运行。请求协调器412可以包括时变ASLR上下文管理器504,所述时变ASLR上下文管理器504用于处理对用于将系统服务与系统服务版本进行关联的信息的存储和更新,以及对系统服务版本的随机选择。时变ASLR上下文管理器504可以使用注册表506或被配置为将一个数据与多个其它数据进行链接的其它数据结构,来将系统服务标识符与绑定(binder)引用(句柄或标签)或系统服务的多个版本的对象进行关联。注册表506可以包括针对用于将系统服务标识符与至少一个绑定引用/对象进行关联的每个系统服务标识符的一个或多个条目。图5中的非限制性示例示出了针对系统服务标识符(系统服务S1)的条目,所述系统服务标识符和均与系统服务的不同版本相对应的绑定引用列表相关,所述绑定引用列表包括针对系统服务版本SV1-1的B1、针对系统服务版本SV1-2的B2、直到针对任意整数值“N”的BN。
内核空间516的功能可以由计算设备的处理器(例如,图1和2中的处理器14)实现。内核空间516可以包括映射表520,或者被配置为将一个数据与多个其它数据进行链接的其它数据结构,以便将系统服务的多个版本的绑定引用与所有者进程和系统服务版本的对象的虚拟地址进行关联。当启动系统服务版本时,可以填充和更新映射表520。图5中的非限制性示例示出了映射表520中针对注册表506的绑定引用的条目。绑定引用B1在映射表520中与所有者进程Pi和虚拟地址VA1相关。类似地,绑定引用B2与所有者进程Pj和虚拟地址VA2相关,以及绑定引用BN与所有者进程Pk和虚拟地址VAN相关。
应用406的应用进程512可以使用所请求的系统服务的系统服务标识符来发送针对系统服务版本的请求532。请求协调器412可以接收针对系统服务版本的请求532。时变ASLR上下文管理器504可以在注册表506中随机选择与所请求的系统服务的系统服务标识符相关的绑定引用中的一个绑定引用。
在一些实现方式中,时变ASLR上下文管理器504可以跟踪向应用406的对所请求的系统服务版本先前分配,以及可以随机选择先前未向应用406提供的绑定引用。时变ASLR上下文管理器504可以避免分配先前提供的绑定引用。例如,时变ASLR上下文管理器504可以通过在随机选择之前忽视(discount)先前提供的绑定引用来避免分配先前提供的绑定引用。作为另一个示例,时变ASLR上下文管理器504可以通过响应于随机选择先前提供的绑定引用来进行后续随机选择,来避免分配先前提供的绑定引用。
请求协调器412可以向应用406返回随机选择的绑定引用。应用406可以接收与所请求的系统服务的系统服务标识符相关的随机选择的绑定引用,以及使用绑定引用来调用所请求的系统服务534。
应用程序406的服务管理器代理514可以与内核空间516对接以访问所请求的系统服务版本。服务管理器代理514可以利用针对所请求的系统服务版本的调用536来提供绑定引用。内核空间516中的绑定驱动器518可以接收针对所请求的系统服务版本的调用536,使用绑定引用来定位与绑定引用相关的所请求的系统服务版本的对象的虚拟地址。绑定驱动器518可以针对所请求的系统服务版本来与相应的系统服务进程508a、508b通信。在这样做时,绑定驱动器518可以使用来自与绑定引用相关的虚拟地址的所请求的系统服务版本的数据,来请求对所请求的系统服务版本的执行538。
相应的系统服务进程508a、508b可以在由系统服务进程508a、508b使用系统服务的指定版本的数据执行完成时,返回对所请求的系统服务的执行的结果540。绑定驱动器518可以将结果转发542到服务管理器代理514,所述服务管理器代理514可以将结果转发544a到应用进程512。
图6示出了适用于实现执行系统服务的多个版本的实施例的示例时变ASLR系统。图6中示出的示例与上文参考图5描述的示例类似。这两个示例共享相同的组件,以及表示对执行系统服务的第一请求的通信信号532a、534a、536a、538a、540a、542a和544a可以与参考图5描述的通信信号532、534、536、538、540、542和544相对应。在图6中所示的示例还包括对执行系统服务的第二请求。
应用进程512可以使用所请求的系统服务的系统服务标识符来发送针对相同系统服务版本的第二请求532b。请求协调器412可以接收针对系统服务版本的第二请求532b。时变ASLR上下文管理器504可以在注册表506中随机选择与所请求的系统服务的系统服务标识符相关的绑定引用中的一个绑定引用。如参考图5所描述的,时变ASLR上下文管理器504可以跟踪向应用406的对所请求的系统服务版本的先前分配,例如,针对对执行系统服务的第一请求的第一分配。时变ASLR上下文管理器504可以随机选择先前未向应用406提供的第二绑定引用。请求协调器412可以向应用406返回随机选择的第二绑定引用。
应用406可以接收随机选择的与所请求的系统服务的系统服务标识符相关的第二绑定引用,以及使用第二绑定引用来调用所请求的系统服务534b。服务管理器代理514可以与内核空间516对接以访问所请求的系统服务版本,利用针对所请求的系统服务版本的调用536b来提供第二绑定引用。绑定驱动器518可以接收针对所请求的系统服务版本的调用536b,使用第二绑定引用来定位所请求的系统服务版本的与第二绑定引用相关的对象的虚拟地址。绑定驱动器518可以针对所请求的系统服务版本来与相应的系统服务进程508b通信。在这样做时,绑定驱动器518可以使用来自与第二绑定引用相关的虚拟地址的所请求的系统服务版本的数据,来请求对所请求的系统服务版本的执行538b。
相应的系统服务进程508b可以在由系统服务进程508b使用系统服务的指定版本的数据的执行完成时,返回对所请求的系统服务的执行的结果540b。绑定驱动器518可以将结果转发542b到服务管理器代理514,所述服务管理器代理514可以将结果转发544b到应用进程512。
图7示出了适用于实现执行针对多个应用的系统服务的多个版本的实施例的示例时变ASLR系统。图7中示出的示例与上文参考图5和图6描述的示例类似。所有示例共享相同的组件,但是图7中示出的示例包括多个应用406a、406b、多个应用进程512a、512b、以及多个服务管理器代理514a、514b。第一应用406a可以与参考图5和图6描述的应用406相对应。第二应用406b可以是可以调用与第一应用406a相同的系统服务的任何应用。此外,图6和图7的示例共享通信信号532a、532b、534a、534b、536a、536b、538a、538b、540a、540b、542a、542b、544a和544b。然而,在图7所示的示例中,通信信号532a、534a、536a、538a、540a、542a和544a可以涉及由第一应用406a对执行系统服务的第一请求,以及通信信号532b、534b、536b、538b、540b、542b和544b可以涉及由第二应用406b对执行系统服务的第二请求。
在各种实现方式中,如用于由相同应用执行相同系统服务的多个请求一样,请求协调器412可以被配置为:避免将所请求系统服务的相同版本分配给用于执行系统服务的连续请求,不管进行请求的应用是相同的还是不同的。即使在对执行系统服务的请求源自不同的应用的情况下避免使用系统服务的相同版本,可以有助于对使用多个应用以试图击败ASLR的攻击方将系统服务混淆。
请求协调器412可以从第二应用406b的第二应用进程512b接收针对系统服务版本的第二请求532b。时变ASLR上下文管理器504可以在注册表506中随机选择与所请求的系统服务的系统服务标识符相关的绑定引用中的一个绑定引用。时变ASLR上下文管理器504可以跟踪向所有应用406a、406b的对所请求的系统服务版本的先前分配。时变ASLR上下文管理器504可以随机选择先前未向应用406a提供的第二绑定引用。请求协调器412可以向第二应用406b返回随机选择的第二绑定引用。
第二应用406b可以接收随机选择的与所请求的系统服务的系统服务标识符相关的第二绑定引用,以及使用第二绑定引用来调用所请求的系统服务534b。第二服务管理器代理514b可以与内核空间516对接以访问所请求的系统服务版本,利用针对所请求的系统服务的版本的调用536b来提供第二绑定引用。绑定驱动器518可以接收针对所请求的系统服务的版本的调用536b,使用第二绑定引用来定位与第二绑定引用相关的所请求的系统服务版本的对象的虚拟地址。绑定驱动器518可以针对所请求的系统服务版本来与相应系统服务进程508b通信,以使用来自与第二绑定引用相关的虚拟地址的所请求的系统服务版本的数据,来请求对所请求的系统服务版本的执行538b。
相应的系统服务进程508b可以在由系统服务进程508b使用系统服务的指定版本的数据的执行完成时,返回对所请求的系统服务540b的执行的结果。绑定驱动器518可以将结果转发542b到第二服务管理器代理514b,所述服务管理器代理514b可以将结果转发544b到第二应用进程512。
图8示出了适用于实现执行系统服务的多个版本的实施例的具有对象管理器的示例时变ASLR系统。图8中示出的示例与上文参考图5和图6描述的示例类似。所有示例共享相同的组件,但是图8中的示例包括应用406的对象管理器800。此外,图6和图8的示例共享通信信号536a、536b、538a、538b、540a、540b、542a和542b。
应用406的应用进程512可以使用所请求的系统服务的系统服务标识符来发送用于执行系统服务的请求802a、802b。对象管理器800可以接收用于执行系统服务的请求802a、802b,以及发送针对系统服务版本的请求804a、804b,包括系统服务标识符。对象管理器800可以响应于接收到用于执行系统服务的请求802a、802b中的一个请求来单独地发送针对系统服务版本的每个请求804a、804b。请求协调器412可以接收针对系统服务版本的请求804a、804b。
时变ASLR上下文管理器504可以响应于针对系统服务版本的请求804a、804b中的一个请求,在注册表506中随机选择与所请求的系统服务的系统服务标识符相关的第一绑定引用。如参考图5所描述的,时变ASLR上下文管理器504可以跟踪向应用406的对所请求的系统服务版本的先前分配,例如,针对对执行系统服务的第一请求804a的对第一绑定引用的第一分配。时变ASLR上下文管理器504可以响应于针对系统服务版本的请求804a、804b中的另一个请求,随机选择先前未向应用406提供的第二绑定引用。请求协调器412可以单独地向应用406返回随机选择的绑定引用。
对象管理器800可以接收随机选择的绑定引用,以及向服务管理器代理514发送具有相应随机选择的绑定引用的、用于执行系统服务的请求806a、806b。服务管理器代理514b可以与内核空间516对接以访问所请求的系统服务版本,利用针对所请求的系统服务版本的调用536a、536b来提供绑定引用。
绑定驱动器518可以接收针对所请求的系统服务版本的调用536a、536b,使用绑定引用来定位与绑定引用相关的所请求的系统服务版本的对象的虚拟地址。绑定驱动器518可以针对所请求的系统服务版本来与相应系统服务进程508a、508b通信,使用来自与绑定引用相关的虚拟地址的所请求的系统服务版本的数据,请求对所请求的系统服务版本的执行538a、538b。
相应的系统服务进程508a、508b可以在由系统服务进程508a、508b使用系统服务的指定版本的数据的执行完成时,返回对所请求的系统服务的执行的结果540a、540b。绑定驱动器518可以将结果转发542a、542b到服务管理器代理514,所述服务管理器代理514可以将结果转发808a、808b到对象管理器800。对象管理器800可以将结果转发810a、810b到应用进程512。
图9根据实施例示出了用于实现时变ASLR的方法900。方法900可以在计算设备中、在处理器(例如,图1和图2中的处理器14)中执行的软件中、在通用硬件中、在专用硬件中,或者在处理器和专用硬件的组合(比如在包括其它单独组件的时变ASLR系统内执行软件的处理器)中实现。为了包含在各个实施例中实现的替代配置,实现方法900的硬件在本文中被称为“计算设备”。
在框902中,计算设备可以接收对启动或执行系统服务的请求。对启动或执行系统服务的请求可以包括系统服务的系统服务标识符。
在框902中接收的对启动系统服务的请求可以源自于由计算设备执行的引导过程。对启动系统服务的请求可以用于启动系统服务,使得服务将可用于响应于对执行系统服务的请求的稍后执行。换句话说,对启动系统服务的请求可以提示计算设备在不执行系统服务的情况下启动系统服务。
在框902中接收的对执行系统服务的请求还可以源自于由计算设备执行的应用。如果在请求时未启动系统服务,则这种对执行系统服务的请求可以提示计算设备启动系统服务。
在确定框904中,计算设备可以确定所请求的系统服务是否已经启动。在一些实现方式中,计算设备可以检查记录(例如,在参考图5-图8描述的注册表506中)以确定是否存在具有下列各项的记录:系统服务标识符、系统服务版本标识符、绑定引用或与系统服务标识符相关的系统服务版本的对象。
在一些实现方式中,在计算设备的操作期间的任何时间处,计算设备可以在可选框918中检测到攻击或怀疑对任何系统服务的攻击。在各种实现方式中,计算设备可以通过识别针对系统服务的不平常访问或请求模式和请求方来检测到或怀疑对系统服务的攻击。
响应于在框918中检测到或怀疑对系统服务的攻击,或者响应于确定所请求的系统服务尚未启动(即,确定框904=“否”),计算设备可以在框906中启动系统服务的多个版本。计算设备可以启动任意数量的系统服务版本。在各种实现方式中,启动的任何系统服务版本的数量可以与另一个系统服务版本的数量相同或不同。启动的系统服务版本的数量可以是预编程的,或取决于多种因素,所述因素包括:预期或测量的系统服务的使用、系统服务的优先级或漏洞、计算设备的状态(包括存储器空间和功率可用性)、以及对系统服务的攻击的检测或怀疑。
在框908中,计算设备可以向系统服务的每个版本分配系统服务版本标识符、绑定引用或对象。系统服务版本标识符、绑定引用或对象可以起到唯一地标识系统服务版本的作用。
在框910中,计算设备可以向系统服务的每个版本分配随机虚拟存储器地址空间布局。系统服务的每个版本的随机虚拟存储器地址空间布局可以映射到物理存储器位置,在所述物理存储器位置中存储用于执行系统服务版本的数据。数据可以包括栈、堆、数据,可执行文件、函数指针或库存储器映射等。在一些实现方式中,系统服务的每个版本的随机虚拟存储器地址空间布局还可以映射到用于执行系统服务的代码的物理存储器位置。在一些实现方式中,数据可以包括到用于执行系统服务的代码的物理存储器位置的指针。参考图10描述了框910中用于向系统服务的每个版本分配随机虚拟存储器地址空间布局的示例方法1000。
在框912中,计算设备可以对以下各项进行关联和存储:系统服务标识符、系统服务版本标识符、绑定引用或系统服务的每个版本的对象、以及系统服务的每个版本的随机虚拟存储器地址。在一些实现方式中,对系统服务版本标识符、绑定引用或系统服务版本的对象的分配可以由计算设备以对系统服务版本标识符、绑定引用或具有系统服务标识符的系统服务版本的对象进行关联的方式来记录。例如,关联结果的记录可以是参考图5-图8描述的注册表506的一部分。在一些实现方式中,将随机虚拟存储器地址到系统服务版本的分配可以由计算设备以将系统服务版本标识符、绑定引用、或具有随机虚拟存储器地址的系统服务版本的对象进行关联的方式来记录。例如,关联结果记录可以是参考图5-图8描述的映射表520的一部分。
在框912中将系统服务、系统服务版本以及系统服务版本的随机虚拟地址的所有关系进行关联和存储之后,或者响应于确定所请求的系统服务已经启动(即,确定框904=“是”),计算设备可以在框914中随机选择系统服务版本。可以使用伪随机算法来实现随机选择。
在一些实现方式中,响应于在时间段内对系统服务的相同版本某个次数的选择,或者由各个应用或单个应用进行的门限数量的针对系统服务的请求,可以多次执行框914中的随机选择。
在一些实现方式中,框914中的随机选择可以包括从排除当前正在使用或最近已经使用过的系统服务版本的系统服务版本的集合中的选择。最近的使用可以通过以下各项来确定:在时间段内系统服务版本的使用,或者由各个应用或单个应用进行的在针对系统服务的门限数量内的请求内的系统服务版本的使用。
在框916中,计算设备可以向请求方提供系统服务版本标识符、绑定引用或系统服务的随机选择版本的对象。
图10根据实施例示出了用于实现在时变ASLR中将虚拟存储器地址空间布局向系统服务版本的随机分配的示例方法1000。方法1000可以在计算设备中、在处理器(例如,图1和图2中的处理器14)中执行的软件中、在通用硬件中、在专用硬件中,或者在处理器和专用硬件的组合(比如在包括其它单独组件的时变ASLR系统内执行软件的处理器)中实现。为了包含在各个实施例中实现的替代配置,实现方法1000的硬件在本文中被称为“计算设备”。
在框1002中,计算设备可以向系统服务的每个版本分配相同的进程组标识符(ID)。
在框1004中,计算设备可以在物理存储器中的位置(物理地址)处存储系统服务版本。在一些实现方式中,可以指定某些存储器设备或存储器设备的分区用于存储系统服务版本。计算设备可以将系统服务版本存储在物理存储器中的未使用位置中,或者根据各种存储器替换策略,通过重写存储在物理存储器中的位置中的当前数据,来将系统服务版本存储在物理存储器中使用的位置中。
在框1006中,计算设备可以为系统服务版本随机选择虚拟地址空间布局。在一些实现方式中,计算设备可以实现用于选择虚拟地址空间布局的伪随机选择算法。在一些实现方式中,可以从用于随机选择针对系统服务版本的虚拟地址空间布局的虚拟地址集合中,排除用于其它目的的虚拟地址(例如,分配给相同或其它系统服务的其它版本的虚拟地址空间布局的虚拟地址)。
在可选确定框1008中,计算设备可以确定随机选择的虚拟地址空间布局是否可用。在一些实现方式中,计算设备可以将随机选择的虚拟地址空间布局与其它所使用的虚拟地址进行比较,以确定随机选择的虚拟地址空间布局是否已经用于其它目的。
响应于确定随机选择的虚拟地址空间布局不可用(即,可选的确定框1008=“否”),计算设备可以在框1006中随机选择针对系统服务版本的虚拟地址空间布局。
响应于确定随机选择的虚拟地址空间布局可用(即,可选的确定框1008=“是”),在框1010中,计算设备可以将针对系统服务版本的随机选择的虚拟地址空间布局映射到存储系统服务版本的物理地址。
在确定框1012中,计算设备可以确定系统服务的更多版本是否仍然存储在物理存储器中并且被分配了随机虚拟地址空间布局。计算设备可以使用与相同系统服务的版本公共的进程组标识符,来确定是否保留系统服务的更多版本。当具有相同进程组标识符的版本保留在用于对随机虚拟地址空间布局进行存储和分配的队列中时,计算设备可以识别出存在保留的系统服务版本。
响应于确定系统服务的更多版本仍然要存储在物理存储器中已经被分配了随机虚拟地址空间布局(即,确定框1012=“是”),计算设备可以在框1014中选择具有相同处理器标识符的系统服务的未存储版本,在框1004中将系统服务版本存储在物理存储器中的位置处,已经所描述的在框1006中随机选择针对系统服务版本的虚拟地址空间布局。
在一些实现方式中,计算系统服务的所有版本可以已经存储在存储器中。因此,响应于确定没有更多的系统服务版本仍然要存储在物理存储器中并且被分配随机虚拟地址空间布局(即,确定框1012=“否”),如参考图9所描述的,计算设备可以在方法900的框912中对以下各项进行关联和存储:系统服务标识符、系统服务版本标识符、绑定引用或系统服务的每个版本的对象、以及系统服务的每个版本的随机虚拟存储器地址空间布局。在各个实施例中,可以执行框912中的操作而不管确定框1012的结果,已经可以与方法1000的各个框1002-1014的操作同时执行。
图11根据实施例示出了用于实现使用时变ASLR的系统服务执行的方法1100。方法1100可以在计算设备中、在处理器(例如,图1和图2中的处理器14)中执行的软件中、在通用硬件中、在专用硬件中、或者在处理器和专用硬件的组合(比如在包括其它单独组件的时变ASLR系统内执行软件的处理器)中实现。为了包含在各个实施例中实现的替代配置,实现方法1100的硬件在本文中被称为“计算设备”。
方法1100可以是对参考图9描述的方法900的实现方式的继续,其中,系统服务的请求方是应用。在框1102中,计算设备可以接收来自应用的针对系统服务版本的请求,包括系统服务版本标识符、绑定引用或针对系统服务版本的对象。
在框1104中,计算设备可以定位系统服务版本的虚拟地址,比如系统服务版本的随机选择的虚拟地址空间布局的起始虚拟地址。在各种实现方式中,计算设备可以使用系统服务版本标识符、绑定引用或系统服务版本的对象来找到将系统服务版本标识符、绑定引用或系统服务的对象与虚拟地址进行关联的记录。例如,计算设备可以搜索参考图5-图8描述的映射表520的记录。
在框1106中,计算设备可以将系统服务版本的虚拟地址转化为物理存储器中存储系统服务版本的数据的位置的物理地址。在该操作中,如本文中参考图10所描述的,在框1010中,计算设备可以使用针对系统服务版本生成的物理地址到虚拟地址的映射。
在框1108中,计算设备可以从物理地址取得用于执行的系统服务版本的数据。
在框1110中,计算设备可以使用所取得的数据来执行系统服务。计算设备可以使用数据来提供用于执行系统服务的变量、条件和代码注入或替换。
在框1112中,计算设备可以将对系统服务的执行的结果返回给应用。
图12根据实施例示出了用于实现使用具有动态代码生成的时变ASLR的系统服务执行的方法1200。方法1200可以在计算设备中、在处理器(例如,图1和图2中的处理器14)中执行的软件中、在通用硬件中、在专用硬件中,或者在处理器和专用硬件的组合(比如在包括其它单独组件的时变ASLR系统内执行软件的处理器)中实现。为了包含在各个实施例中实现的替代配置,实现方法1200的硬件在本文中被称为“计算设备”。
在各种实现方式中,对系统服务的先前执行可以造成动态生成的代码,所述动态生成的代码可以用于对系统服务的后续执行,以及可以改进系统服务的执行效率。在框1202中,计算设备可以接收对为动态生成的来自系统服务版本的代码分配代码缓冲器空间的请求。系统服务的不同版本可以生成不同的动态生成的代码,所述代码可以用于对系统服务版本的后续执行。
在框1204中,计算设备可以遍历代码缓冲器,搜索空代码缓冲器空间以用于存储动态生成的代码。在各种实现方式中,计算设备可以使用各种算法和模式来遍历代码缓冲器,包括随机选择代码缓冲器的地址。计算设备可以选择代码缓冲器的地址以检查地址是否与可用并且足够大以存储动态生成的代码的代码缓冲器空间相关联。足够大以存储动态生成的代码的代码缓冲器空间可以是至少具有动态生成的代码的大小以及包括所选择地址的任何代码缓冲器空间。
在确定框1206中,计算设备可以确定与所选择的代码缓冲器地址相关联的代码缓冲器空间是否可用于来自系统服务版本的动态生成的代码。在各种实现方式中,确定所识别的代码缓冲器空间是否可用可以包括:确定代码缓冲器空间是否可用并且足够大以用于存储动态生成的代码。计算设备可以通过以下操作来确定代码缓冲器空间是否可用并且足够大:将代码缓冲器空间与列表或者被配置为将一个数据与另一个数据相链接的其它数据结构进行比较;将系统服务版本标识符、绑定引用或系统服务版本的对象与代码缓冲器存储器地址进行关联。例如,计算设备可以将代码缓冲器空间与参考图4B描述的列表422的记录进行比较。可用并且足够大的代码缓冲器空间可以是这样一个空间:代码缓冲器空间中没有地址和列表中的与其它动态生成的代码相关的代码缓冲器地址相冲突。
响应于确定与所选择的代码缓冲器地址相关联的代码缓冲器空间可用于来自系统服务版本的动态生成的代码(即,确定框1206=“是”),在框1208中,计算设备可以将来自系统服务版本的动态生成的代码存储在代码缓冲器中所识别的代码缓冲器地址处。
在框1210中,计算设备可以将列表或被配置为将一个数据与另一个数据相链接的其它数据结构更新为:指示来自系统服务版本的所存储的动态生成的代码的代码缓冲器地址不可用或被使用。
响应于确定与系统服务版本相关的代码缓冲器空间不可用于来自系统服务版本的动态生成的代码(即,确定框1206=“否”),计算设备可以在确定框1212中确定是否遍历了代码缓冲器。在各个实施例中,为了遍历代码缓冲器,计算设备可以针对可用并且足够大以存储动态生成的代码的代码缓冲器空间来检查每个代码缓冲器地址。在各个实施例中,为了遍历代码缓冲器,计算设备可以检查足够的代码缓冲器地址,以致于剩余的代码缓冲器地址不能与具有足够空间以存储动态生成的代码的代码缓冲器空间相关。
响应于确定未遍历代码缓冲器(即,确定框1212=“否”),计算设备可以在框1204中继续遍历代码缓冲器,搜索空代码缓冲器空间以用于存储动态生成的代码。
响应于确定遍历了代码缓冲器(即,确定框1212=“是”),计算设备可以在框1214中丢弃或在其它存储器中存储来自系统服务版本的动态生成的代码。
各个实施例(包括但不限于上文参考图1-图12描述的实施例)可以在包括移动计算设备的各种计算系统中实现,图13中示出了适用于与各种实施例一起使用的示例。移动计算设备1300可以包括耦合到触摸屏控制器1304和内部存储器1306的处理器1302。处理器1302可以是被指定用于通用或专用处理任务的一个或多个多核集成电路。内部存储器1306可以是易失性或非易失性存储器,以及还可以是安全的和/或加密的存储器、或者不安全的和/或未加密的存储器、或者它们的任意组合。可以利用的存储器类型的示例包括但不限于DDR、LPDDR、GDDR、WIDEIO、RAM、SRAM、DRAM、P-RAM、R-RAM、M-RAM、STT-RAM和嵌入式DRAM。触摸屏控制器1304和处理器1302还可以耦合到触摸屏面板1312,诸如电阻感测触摸屏、电容感测触摸屏、红外感测触摸屏等。另外,计算设备1300的显示器不需要具有触摸屏功能。
移动计算设备1300可以具有互相耦合和/或耦合到处理器1302的、用于发送和接收通信的一个或更多个无线信号收发机1308(例如,Peanut、蓝牙、ZigBee、Wi-Fi、RF无线电单元)和天线1310。收发机1308和天线1310可以与上述电路一起使用,以实现各个无线传输协议栈和接口。移动计算设备1300可以包括实现经由蜂窝网络的通信并且耦合到处理器的蜂窝网络无线调制解调器芯片1316。
移动计算设备1300可以包括耦合到处理器1302的外围设备连接接口1318。外围设备连接接口1318可以单独被配置为接受一种类型的连接,或者可以被配置为接受各种类型的物理和通信连接(公共和专有的),比如通用串行总线(USB)、火线(FireWire)、雷电接口(Thunderbolt)或PCIe。外围设备连接接口1318还可以耦合到类似配置的外围设备连接端口(未示出)。
移动计算设备1300还可以包括用于提供音频输出的扬声器1314。移动计算设备1300还可以包括由塑料、金属或材料的组合构造的、用于包含本文中描述的组件中的所有或一些组件的壳体1320。移动计算设备1300可以包括耦合到处理器1302的电源1322,比如一次性的或可充电电池。可充电电池还可以耦合到外围设备连接端口,以从移动计算设备1300外部的源接收充电电流。移动计算设备1300还可以包括用于接收用户输入的物理按钮1324。移动计算设备1300还可以包括用于打开或关闭移动计算设备1300的电源按钮1326。
各个实施例(包括但不限于上文参考图1-图12描述的实施例)可以在包括膝上型计算机1400的各种计算系统中实现,图14中示出了其示例。许多膝上型计算机包括用作计算机的指向设备的触摸板触摸表面1417,并且因此可以接收与在配备有触摸屏显示器的计算设备上实现的那些和上述那些类似的拖动、滚动和轻弹的手势。膝上型计算机1400将通常包括耦合到易失性存储器1412和大容量非易失性存储器(例如闪存存储器的磁盘驱动器1413)的处理器1411。另外,计算机1400可以具有用于发送和接收电磁辐射的一个或多个天线1408,所述天线可以连接到耦合到处理器1411的无线数据链路和/或蜂窝电话收发机1416。计算机1400还可以包括耦合到处理器1411的软盘驱动1414和压缩盘(CD)驱动1415。在笔记本配置中,计算机壳体包括:全部耦合到处理器1411的触摸板1417、键盘1418和显示器1419。计算设备的其它配置可以包括公知的(例如,经由USB输入)耦合到处理器的计算机鼠标或轨迹球,所述计算机鼠标或轨迹球还可以结合各个实施例使用。
各个实施例(包括但不限于上文参考图1-图12描述的实施例)还可以在固定计算系统(比如各种商用服务器中的任意服务器)中实现。图15中示出了示例服务器1500。这种服务器1500通常包括耦合到易失性存储器1502和大容量非易失性存储器(例如磁盘驱动1504)的一个或多个多核处理器部件(assembly)1501。如图15所示,可以通过将多核处理器部件1501插入到部件的机架中来将所述多核处理器部件1501添加到服务器1500。服务器1500还可以包括耦合到处理器1501的软盘驱动、压缩盘(CD)或数字多功能盘(DVD)盘驱动器1506。服务器1500还可以包括:耦合到多核处理器部件1501的网络接入端口1503,以用于建立与网络1505(诸如耦合到其它广播系统计算机和服务器、互联网、公共交换电话网和/或蜂窝数据网络(例如,CDMA、TDMA、GSM、PCS、3G、4G、LTE或任何其它类型的蜂窝数据网络)的局域网)的网络接口连接。
用于在可编程处理器上执行以执行各个实施例的操作的计算机程序代码或“程序代码”可以用高级编程语言(比如C、C++、C#、Smalltalk、Java、JavaScript、Visual Basic、结构化查询语言(例如,Transact-SQL)、Perl)或以各种其它编程语言来编写。存储在本申请中使用的计算机可读存储介质上的程序代码或程序可以指代其格式可由处理器理解的机器语言代码(比如对象代码)。
前述方法描述和过程流图仅作为说明性示例来提供,并且不旨在要求或暗示各个实施例的操作必须以所呈现的顺序来执行。如本领域技术人员将了解的:前述实施例中的操作的顺序可以以任意顺序执行。诸如“此后”、“然后”、“接下来”等的词语不旨在限制操作的顺序;这些词语仅用于引导读者通过方法的描述。另外,例如,使用冠词“一(a)”、“一个(an)”或“这个(the)”的以单数形式对权利要求元素的任何提及不被解释为将元素限制为单数。
结合各个实施例描述的各个说明性的逻辑框、模块、电路和算法操作均可以实现成电子硬件、计算机软件或它们的组合。为了清楚地说明硬件和软件之间的该可交换性,上文对各个说明性的组件、框、模块、电路和操作均围绕其功能进行了总体描述。至于这种功能是实现为硬件还是实现为软件,取决于特定的应用和对整个系统所施加的设计约束。本领域技术人员可以针对每个特定应用,以变通的方式实现所描述的功能,但是这种实现决策不应解释为造成对权利要求书的范围的背离。
用于实现结合本文所公开的实施例所描述的各种说明性的逻辑、逻辑块、模块和电路的硬件可以使用被设计为执行本文所描述的功能的通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立门或晶体管逻辑器件、分立硬件组件或它们的任意组合来实现或执行。通用处理器可以是微处理器,但是,在替代方案中,处理器可以是任何常规的处理器、控制器、微控制器、或状态机。处理器还可以实现为计算设备的组合,例如,DSP和微处理器的组合、多个微处理器、一个或多个微处理器与DSP内核的结合、或者任何其它这种配置。或者,一些操作或方法可以由特定于给定功能的电路来执行。
在一个或多个实施例中,可以用硬件、软件、固件、或者它们的任意组合来实现所描述的功能。如果用软件实现,则可以将功能在非临时性计算机可读介质或非临时性处理器可读介质上存储为一个或多个指令或代码。本文所公开的方法或算法的操作可以体现在可以位于非临时性计算机可读或处理器可读存储介质上的处理器可执行软件模块中。非临时性计算机可读或处理器可读存储介质可以是可以由计算机或处理器访问的任何存储介质。举例说明而非限制性地,这样的非临时性计算机可读或处理器可读介质可以包括RAM、ROM、EEPROM、闪存存储器、CD-ROM或其它光盘存储、磁盘存储或其它磁存储设备、或可以用于以指令或数据结构的形式存储期望的程序代码以及可以被计算机访问的任何其它介质。如本文中所使用的,磁盘和光盘包括压缩光盘(CD)、激光光盘、光盘、数字多功能光盘(DVD)、软盘和蓝光光盘,其中磁盘通常磁性地复制数据,而光盘则利用激光来光学地复制数据。上面的组合也包括在非临时性计算机可读和处理器可读介质的范围之内。此外,方法或算法的操作可以作为代码和/或指令中的一者或任意组合或集合来位于可以被并入计算机程序产品中的非临时性处理器可读介质和/或计算机可读介质上。
为使本领域任何技术人员能够实现或者使用权利要求,提供了对所公开的实施例的前述描述。对于本领域技术人员来说,对这些实施例的各种修改将是显而易见的,以及在不脱离权利要求书的范围的情况下,本文中定义的一般原理可以应用于其它实施例和实现方式。因此,本公开内容不旨在限于本文中描述的实施例和实现方式,而是符合与所附权利要求书和本文中公开的原理和新颖性特征相一致的最广范围。
Claims (36)
1.一种在计算设备上的时变地址空间布局随机化的方法,包括:
启动系统服务的第一多个版本;
向所述系统服务的所述第一多个版本中的每个版本分配随机虚拟地址空间布局;
从第一应用接收对执行所述系统服务的第一请求;
从所述系统服务的所述第一多个版本中随机选择所述系统服务的第一版本;以及
使用所述系统服务的所述第一版本的数据来执行所述系统服务。
2.根据权利要求1所述的方法,还包括:
从所述第一应用接收对执行所述系统服务的第二请求;
从所述系统服务的所述第一多个版本中随机选择所述系统服务的第二版本;以及
使用所述系统服务的所述第二版本的数据来执行所述系统服务。
3.根据权利要求1所述的方法,还包括:
向所述系统服务的所述第一多个版本中的每个版本分配系统服务版本标识符,其中,所述系统服务的所述第一多个版本中的每个版本的所述系统服务版本标识符是不同的;
将所述系统服务的所述第一多个版本中的每个版本的所述系统服务版本标识符与所述系统服务的系统服务标识符进行关联;
存储所述系统服务的所述第一多个版本中的每个版本的所述系统服务版本标识符与所述系统服务标识符的关联结果;
将所述系统服务的所述第一多个版本中的每个版本的所述系统服务版本标识符与所述系统服务的所述第一多个版本中的每个版本的所述随机虚拟地址空间布局中的相应的一个随机虚拟地址空间布局进行关联;以及
存储所述系统服务的所述第一多个版本中的每个版本的所述系统服务版本标识符与所述系统服务的所述第一多个版本中的每个版本的所述随机虚拟地址空间布局中的相应的一个随机虚拟地址空间布局的关联结果。
4.根据权利要求3所述的方法,其中:
对执行所述系统服务的所述第一请求包括所述系统服务标识符;
从所述系统服务的所述第一多个版本中随机选择所述系统服务的第一版本包括:从与所述系统服务标识符相关的所述系统服务的所述第一多个版本中随机选择所述系统服务的所述第一版本;
所述方法还包括:
向所述第一应用提供所述系统服务的所述第一版本的第一系统服务版本标识符;以及
从所述第一应用接收对执行具有所述第一系统服务版本标识符的所述系统服务的所述第一版本的请求。
5.根据权利要求4所述的方法,还包括:
使用所述第一系统服务版本标识符与所述第一系统服务版本的所述随机虚拟地址空间布局之间的关联结果,来对所述第一系统服务版本的随机虚拟地址进行定位;
将所述第一系统服务版本的所述随机虚拟地址转化为物理地址,所述系统服务的所述第一版本的所述数据存储在所述物理地址处;以及
取得所述系统服务的所述第一版本的所述数据。
6.根据权利要求3所述的方法,还包括向所述系统服务的所述第一多个版本中的每个版本分配进程标识符,
其中,针对所述系统服务的所述第一多个版本中的每个版本的所述进程标识符是相同的,并且
其中,针对被分配所述进程标识符的所述系统服务的所述第一多个版本中的每个版本,发生以下操作:向所述系统服务的所述第一多个版本中的每个版本分配随机虚拟地址空间布局,向所述系统服务的所述第一多个版本中的每个版本分配系统服务版本标识符,以及将所述系统服务的所述第一多个版本中的每个版本的所述系统服务版本标识符与所述系统服务的系统服务标识符进行关联。
7.根据权利要求1所述的方法,还包括:
接收对为动态生成的执行所述系统服务的所述第一版本的代码分配代码缓冲器空间的请求;
随机选择代码缓冲器地址;
确定与所述代码缓冲器地址相关的代码缓冲器空间是否足够大并且可用于存储所述动态生成的代码;以及
响应于确定所述代码缓冲器空间足够大以存储所述动态生成的代码,在所述代码缓冲器地址处存储所述动态生成的代码。
8.根据权利要求1所述的方法,还包括:
从第二应用接收对执行所述系统服务的第二请求;
检测到来自所述第二应用的对执行所述系统服务的所述第二请求是对所述系统服务的攻击;
启动所述系统服务的第二多个版本;
向所述系统服务的所述第二多个版本中的每个版本分配随机虚拟地址空间布局,其中,所述系统服务的所述第一多个版本中的每个版本的所述随机虚拟地址空间布局和所述系统服务的所述第二多个版本中的每个版本的所述随机虚拟地址空间布局是不同的;
从所述系统服务的所述第一多个版本和所述系统服务的所述第二多个版本中随机选择所述系统服务的第二版本;以及
使用所述系统服务的所述第二版本的数据来执行所述系统服务。
9.根据权利要求1所述的方法,其中:
启动系统服务的第一个多个版本包括:在具有不同指令集架构的多个异构处理器核心中的一个处理器核心上启动所述系统服务的所述第一多个版本中的所述系统服务的多版本中的每个版本;
从所述系统服务的所述第一多个版本中随机选择所述系统服务的第一版本包括:随机选择在其上启动所述系统服务的所述第一版本的所述多个异构处理器核心中的第一异构处理器核心;
使用所述系统服务的所述第一版本的数据来执行所述系统服务包括:通过所述第一异构处理器核心来执行所述系统服务;以及
所述方法还包括:
将来自所述第一应用的对执行所述系统服务的所述第一请求传输给所述第一异构处理器核心;
接收由所述第一异构处理器核心对所述系统服务的所述执行的输出;以及
向所述第一应用返回所述输出。
10.一种计算设备,包括:
启动器,其被配置为:执行包括启动系统服务的第一个多个版本的操作;
映射器,其通信地连接到所述启动器,并且被配置为执行包括向所述系统服务的所述第一多个版本中的每个版本分配随机虚拟地址空间布局的操作;
请求协调器,其通信地连接到所述启动器,并且被配置为执行包括下列各项的操作:
从第一应用接收对执行所述系统服务的第一请求;
从所述系统服务的所述第一多个版本中随机选择所述系统服务的第一版本;以及
处理器,其通信地连接到所述请求协调器,并且配置有可执行指令以执行包括使用所述系统服务的所述第一版本的数据来执行所述系统服务的操作。
11.根据权利要求10所述的计算设备,其中:
所述请求协调器被配置为执行还包括下列各项的操作:
从所述第一应用接收对执行所述系统服务的第二请求;以及
从所述系统服务的所述第一多个版本中随机选择所述系统服务的第二版本;以及
所述处理器被配置有可执行指令以执行还包括使用所述系统服务的所述第二版本的数据来执行所述系统服务的操作。
12.根据权利要求10所述的计算设备,其中:
所述启动器被配置为执行还包括以下操作的操作:向所述系统服务的所述第一多个版本中的每个版本分配系统服务版本标识符,其中,所述系统服务的所述第一多个版本中的每个版本的所述系统服务版本标识符是不同的;
所述请求协调器被配置为执行还包括下列各项的操作:
将所述系统服务的所述第一多个版本中的每个版本的所述系统服务版本标识符与所述系统服务的系统服务标识符进行关联;以及
存储所述系统服务的所述第一多个版本中的每个版本的所述系统服务版本标识符与所述系统服务标识符的关联结果;以及
所述处理器被配置有用于执行还包括下列各项的操作的可执行指令:
将所述系统服务的所述第一多个版本中的每个版本的所述系统服务版本标识符与所述系统服务的所述第一多个版本中的每个版本的所述随机虚拟地址空间布局中的相应的一个随机虚拟地址空间布局进行关联;以及
存储所述系统服务的所述第一多个版本中的每个版本的所述系统服务版本标识符与所述系统服务的所述第一多个版本中的每个版本的所述随机虚拟地址空间布局中的相应的一个随机虚拟地址空间布局的关联结果。
13.根据权利要求12所述的计算设备,其中:
所述请求协调器被配置为执行操作,使得:
从所述第一应用接收对执行所述系统服务的所述第一请求包括接收所述系统服务标识符;
从所述系统服务的所述第一多个版本中随机选择所述系统服务的第一版本包括:从与所述系统服务标识符相关的所述系统服务的所述第一多个版本中随机选择所述系统服务的所述第一版本;以及
所述处理器被配置有用于执行还包括下列各项的操作的可执行指令:
向所述第一应用提供所述系统服务的所述第一版本的第一系统服务版本标识符;以及
从所述第一应用接收对执行具有所述第一系统服务版本标识符的所述系统服务的所述第一版本的请求。
14.根据权利要求13所述的计算设备,其中,所述处理器被配置有可执行指令以执行还包括下列各项的操作:
使用所述第一系统服务版本标识符与所述第一系统服务版本的所述随机虚拟地址空间布局之间的关联结果,来对所述第一系统服务版本的随机虚拟地址进行定位;
将所述第一系统服务版本的所述随机虚拟地址转化为物理地址,所述系统服务的所述第一版本的所述数据存储在所述物理地址处;以及
取得所述系统服务的所述第一版本的所述数据。
15.根据权利要求12所述的计算设备,其中:
所述启动器被配置为执行还包括向所述系统服务的所述第一多个版本中的每个版本分配进程标识符的操作,其中,针对所述系统服务的所述第一多个版本中的每个版本的所述进程标识符是相同的;
所述映射器被配置为执行操作,使得针对被分配所述进程标识符的所述系统服务的所述第一多个版本中的每个版本,发生向所述系统服务的所述第一多个版本中的每个版本分配随机虚拟地址空间布局;
所述启动器被配置为执行操作,使得针对被分配所述进程标识符的所述系统服务的所述第一多个版本中的每个版本,发生向所述系统服务的所述第一多个版本中的每个版本分配系统服务版本标识符;以及
所述处理器被配置有可执行指令以执行操作,使得针对被分配所述进程标识符的所述系统服务的所述第一多个版本中的每个版本,将所述系统服务的所述第一多个版本中的每个版本的所述系统服务版本标识符与所述系统服务的系统服务标识符进行关联。
16.根据权利要求10所述的计算设备,还包括存储器分配器,其通信地连接到所述请求协调器,并且被配置为执行包括下列各项的操作:
接收对为动态生成的执行所述系统服务的所述第一版本的代码分配代码缓冲器空间的请求;
随机选择代码缓冲器地址;
确定与所述代码缓冲器地址相关的代码缓冲器空间是否足够大并且可用于存储所述动态生成的代码;以及
响应于确定所述代码缓冲器空间足够大以存储所述动态生成的代码,在所述代码缓冲器地址处存储所述动态生成的代码。
17.根据权利要求10所述的计算设备,其中:
所述请求协调器被配置为执行还包括下列各项的操作:
从第二应用接收对执行所述系统服务的第二请求;
检测到来自所述第二应用的对执行所述系统服务的所述第二请求是对所述系统服务的攻击;
所述启动器被配置为执行还包括启动所述系统服务的第二多个版本的操作;
所述映射器被配置为执行还包括下列操作的操作:向所述系统服务的所述第二多个版本中的每个版本分配随机虚拟地址空间布局,其中,所述系统服务的所述第一多个版本中的每个版本的所述随机虚拟地址空间布局和所述系统服务的所述第二多个版本中的每个版本的所述随机虚拟地址空间布局是不同的;
所述请求协调器被配置为执行还包括以下操作的操作:从所述系统服务的所述第一多个版本和所述系统服务的所述第二多个版本中随机选择所述系统服务的第二版本;以及
所述处理器被配置有可执行指令以执行还包括使用所述系统服务的所述第二版本的数据来执行所述系统服务的操作。
18.根据权利要求10所述的计算设备,其中:
所述启动器被配置为执行操作,使得启动系统服务的第一个多个版本包括:在具有不同指令集架构的多个异构处理器核心中的一个处理器核心上启动所述系统服务的所述第一多个版本中的所述系统服务的多版本中的每个版本;
所述请求协调器被配置为执行操作,使得从所述系统服务的所述第一多个版本中随机选择所述系统服务的第一版本包括:随机选择在其上启动所述系统服务的所述第一版本的所述多个异构处理器核心中的第一异构处理器核心;
所述处理器是所述第一异构处理器核心,并且被配置有可执行指令来执行操作,使得使用所述系统服务的所述第一版本的数据来执行所述系统服务包括:通过所述第一异构处理器核心来执行所述系统服务;以及
所述请求协调器被配置为执行还包括下列各项的操作:
将来自所述第一应用的对执行所述系统服务的所述第一请求传输给所述第一异构处理器核心;
接收由所述第一异构处理器核心对所述系统服务的所述执行的输出;以及
向所述第一应用返回所述输出。
19.一种计算设备,包括:
用于启动系统服务的第一多个版本的单元;
用于向所述系统服务的所述第一多个版本中的每个版本分配随机虚拟地址空间布局的单元;
用于从第一应用接收对执行所述系统服务的第一请求的单元;
用于从所述系统服务的所述第一多个版本中随机选择所述系统服务的第一版本的单元;以及
用于使用所述系统服务的所述第一版本的数据来执行所述系统服务的单元。
20.根据权利要求19所述的计算设备,还包括:
用于从所述第一应用接收对执行所述系统服务的第二请求的单元;
用于从所述系统服务的所述第一多个版本中随机选择所述系统服务的第二版本的单元;以及
用于使用所述系统服务的所述第二版本的数据来执行所述系统服务的单元。
21.根据权利要求19所述的计算设备,还包括:
用于向所述系统服务的所述第一多个版本中的每个版本分配系统服务版本标识符的单元,其中,所述系统服务的所述第一多个版本中的每个版本的所述系统服务版本标识符是不同的;
用于将所述系统服务的所述第一多个版本中的每个版本的所述系统服务版本标识符与所述系统服务的系统服务标识符进行关联的单元;
用于存储所述系统服务的所述第一多个版本中的每个版本的所述系统服务版本标识符与所述系统服务标识符的关联结果的单元;
用于将所述系统服务的所述第一多个版本中的每个版本的所述系统服务版本标识符与所述系统服务的所述第一多个版本中的每个版本的所述随机虚拟地址空间布局中的相应的一个随机虚拟地址空间布局进行关联的单元;以及
用于存储所述系统服务的所述第一多个版本中的每个版本的所述系统服务版本标识符与所述系统服务的所述第一多个版本中的每个版本的所述随机虚拟地址空间布局中的相应的一个随机虚拟地址空间布局的关联结果的单元。
22.根据权利要求21所述的计算设备,其中:
对执行所述系统服务的所述第一请求包括所述系统服务标识符;以及
用于从所述系统服务的所述第一多个版本中随机选择所述系统服务的第一版本的单元包括:用于从与所述系统服务标识符相关的所述系统服务的所述第一多个版本中随机选择所述系统服务的所述第一版本的单元;
所述计算设备还包括:
用于向所述第一应用提供所述系统服务的所述第一版本的第一系统服务版本标识符的单元;以及
用于从所述第一应用接收对执行具有所述第一系统服务版本标识符的所述系统服务的所述第一版本的请求的单元。
23.根据权利要求22所述的计算设备,还包括:
用于使用所述第一系统服务版本标识符与所述第一系统服务版本的所述随机虚拟地址空间布局之间的关联结果,来对所述第一系统服务版本的随机虚拟地址进行定位的单元;
用于将所述第一系统服务版本的所述随机虚拟地址转化为物理地址的单元,所述系统服务的所述第一版本的所述数据存储在所述物理地址处;以及
用于取得所述系统服务的所述第一版本的所述数据的单元。
24.根据权利要求21所述的计算设备,还包括:用于向所述系统服务的所述第一多个版本中的每个版本分配进程标识符的单元,其中,针对所述系统服务的所述第一多个版本中的每个版本的所述进程标识符是相同的,
其中:
用于向所述系统服务的所述第一多个版本中的每个版本分配随机虚拟地址空间布局的单元包括:用于针对被分配所述进程标识符的所述系统服务的所述第一多个版本中的每个版本,向所述系统服务的所述第一多个版本中的每个版本分配所述随机虚拟地址空间布局的单元;
用于向所述系统服务的所述第一多个版本中的每个版本分配系统服务版本标识符的单元包括:用于针对被分配所述进程标识符的所述系统服务的所述第一多个版本中的每个版本,向所述系统服务的所述第一多个版本中的每个版本分配所述系统服务版本标识符的单元;以及
用于将所述系统服务的所述第一多个版本中的每个版本的所述系统服务版本标识符与系统服务的所述系统服务标识符进行关联的单元包括:用于针对被分配所述进程标识符的所述系统服务的所述第一多个版本中的每个版本,将所述系统服务的所述第一多个版本中的每个版本的所述系统服务版本标识符与所述系统服务的所述系统服务标识符进行关联的单元。
25.根据权利要求19所述的计算设备,还包括:
用于接收对为动态生成的执行所述系统服务的所述第一版本的代码分配代码缓冲器空间的请求的单元;
用于随机选择代码缓冲器地址的单元;
用于确定与所述代码缓冲器地址相关的代码缓冲器空间是否足够大并且可用于存储所述动态生成的代码的单元;以及
用于响应于确定所述代码缓冲器空间足够大以存储所述动态生成的代码,在所述代码缓冲器地址处存储所述动态生成的代码的单元。
26.根据权利要求19所述的计算设备,还包括:
用于从第二应用接收对执行所述系统服务的第二请求的单元;
用于检测到来自所述第二应用的对执行所述系统服务的所述第二请求是对所述系统服务的攻击的单元;
用于启动所述系统服务的第二多个版本的单元;
用于向所述系统服务的所述第二多个版本中的每个版本分配随机虚拟地址空间布局的单元,其中,所述系统服务的所述第一多个版本中的每个版本的所述随机虚拟地址空间布局和所述系统服务的所述第二多个版本中的每个版本的所述随机虚拟地址空间布局是不同的;
用于从所述系统服务的所述第一多个版本和所述系统服务的所述第二多个版本中随机选择所述系统服务的第二版本的单元;以及
用于使用所述系统服务的所述第二版本的数据来执行所述系统服务的单元。
27.根据权利要求19所述的计算设备,其中:
用于启动系统服务的第一个多个版本的单元包括:用于在具有不同指令集架构的多个异构处理器核心中的一个处理器核心上启动所述系统服务的所述第一多个版本中的所述系统服务的多版本中的每个版本的单元;
用于从所述系统服务的所述第一多个版本中随机选择所述系统服务的第一版本的单元包括:用于随机选择在其上启动所述系统服务的所述第一版本的所述多个异构处理器核心中的第一异构处理器核心的单元;
用于使用所述系统服务的所述第一版本的数据来执行所述系统服务的单元包括:用于通过所述第一异构处理器核心来执行所述系统服务的单元;以及
所述计算设备还包括:
用于将来自所述第一应用的对执行所述系统服务的所述第一请求传输给所述第一异构处理器核心的单元;
用于接收由所述第一异构处理器核心对所述系统服务的所述执行的输出的单元;以及
用于向所述第一应用返回所述输出的单元。
28.一种具有存储在其上的处理器可执行指令的非临时性处理器可读存储介质,所述指令被配置为使计算设备的处理器执行包括下列各项的操作:
启动系统服务的第一多个版本;
向所述系统服务的所述第一多个版本中的每个版本分配随机虚拟地址空间布局;
从第一应用接收对执行所述系统服务的第一请求;
从所述系统服务的所述第一多个版本中随机选择所述系统服务的第一版本;以及
使用所述系统服务的所述第一版本的数据来执行所述系统服务。
29.根据权利要求28所述的非临时性处理器可读存储介质,其中,所存储的处理器可执行指令被配置为使所述处理器执行还包括下列各项的操作:
从所述第一应用接收对执行所述系统服务的第二请求;
从所述系统服务的所述第一多个版本中随机选择所述系统服务的第二版本;以及
使用所述系统服务的所述第二版本的数据来执行所述系统服务。
30.根据权利要求28所述的非临时性处理器可读存储介质,其中,所存储的处理器可执行指令被配置为使所述处理器执行还包括下列各项的操作:
向所述系统服务的所述第一多个版本中的每个版本分配系统服务版本标识符,其中,所述系统服务的所述第一多个版本中的每个版本的所述系统服务版本标识符是不同的;
向所述系统服务的所述第一多个版本中的每个版本分配系统服务版本标识符,其中,所述系统服务的所述第一多个版本中的每个版本的所述系统服务版本标识符是不同的;
将所述系统服务的所述第一多个版本中的每个版本的所述系统服务版本标识符与所述系统服务的系统服务标识符进行关联;
存储所述系统服务的所述第一多个版本中的每个版本的所述系统服务版本标识符与所述系统服务标识符的关联结果;
将所述系统服务的所述第一多个版本中的每个版本的所述系统服务版本标识符与所述系统服务的所述第一多个版本中的每个版本的所述随机虚拟地址空间布局中的相应的一个随机虚拟地址空间布局进行关联;以及
存储所述系统服务的所述第一多个版本中的每个版本的所述系统服务版本标识符与所述系统服务的所述第一多个版本中的每个版本的所述随机虚拟地址空间布局中的相应的一个随机虚拟地址空间布局的关联结果。
31.根据权利要求30所述的非临时性处理器可读存储介质,其中:
对执行所述系统服务的所述第一请求包括所述系统服务标识符;
所存储的处理器可执行指令被配置为使所述处理器执行操作,使得从所述系统服务的所述第一多个版本中随机选择所述系统服务的第一版本包括:从与所述系统服务标识符相关的所述系统服务的所述第一多个版本中随机选择所述系统服务的所述第一版本;以及
所存储的处理器可执行指令被配置为使所述处理器执行还包括下列各项的操作:
向所述第一应用提供所述系统服务的所述第一版本的第一系统服务版本标识符;以及
从所述第一应用接收对执行具有所述第一系统服务版本标识符的所述系统服务的所述第一版本的请求。
32.根据权利要求31所述的非临时性处理器可读存储介质,其中,所存储的处理器可执行指令被配置为使所述处理器执行还包括下列各项的操作:
使用所述第一系统服务版本标识符与所述第一系统服务版本的所述随机虚拟地址空间布局之间的关联结果,来对所述第一系统服务版本的随机虚拟地址进行定位;
将所述第一系统服务版本的所述随机虚拟地址转化为物理地址,所述系统服务的所述第一版本的所述数据存储在所述物理地址处;以及
取得所述系统服务的所述第一版本的所述数据。
33.根据权利要求30所述的非临时性处理器可读存储介质,其中,所存储的处理器可执行指令被配置为使所述处理器执行还包括以下操作的操作:向所述系统服务的所述第一多个版本中的每个版本分配进程标识符,其中,针对所述系统服务的所述第一多个版本中的每个版本的所述进程标识符是相同的;并且
其中,所存储的处理器可执行指令被配置为使所述处理器执行操作使得:针对被分配所述进程标识符的所述系统服务的所述第一多个版本中的每个版本,发生以下操作:向所述系统服务的所述第一多个版本中的每个版本分配随机虚拟地址空间布局,向所述系统服务的所述第一多个版本中的每个版本分配系统服务版本标识符,以及将所述系统服务的所述第一多个版本中的每个版本的所述系统服务版本标识符与所述系统服务的系统服务标识符进行关联。
34.根据权利要求28所述的非临时性处理器可读存储介质,其中,所存储的处理器可执行指令被配置为使所述处理器执行还包括下列各项的操作:
接收对为动态生成的执行针对所述系统服务的所述第一版本的代码分配代码缓冲器空间的请求;
随机选择代码缓冲器地址;
确定与所述代码缓冲器地址相关的代码缓冲器空间是否足够大并且可用于存储所述动态生成的代码;以及
响应于确定所述代码缓冲器空间足够大以存储所述动态生成的代码,在所述代码缓冲器地址处存储所述动态生成的代码。
35.根据权利要求28所述的非临时性处理器可读存储介质,其中,所存储的处理器可执行指令被配置为使所述处理器执行还包括下列各项的操作:
从第二应用接收对执行所述系统服务的第二请求;
检测到来自所述第二应用的对执行所述系统服务的所述第二请求是对所述系统服务的攻击;
启动所述系统服务的第二多个版本;
向所述系统服务的所述第二多个版本中的每个版本分配随机虚拟地址空间布局,其中,所述系统服务的所述第一多个版本中的每个版本的所述随机虚拟地址空间布局和所述系统服务的所述第二多个版本中的每个版本的所述随机虚拟地址空间布局是不同的;
从所述系统服务的所述第一多个版本和所述系统服务的所述第二多个版本中随机选择所述系统服务的第二版本;以及
使用所述系统服务的所述第二版本的数据来执行所述系统服务。
36.根据权利要求28所述的非临时性处理器可读存储介质,其中,所存储的处理器可执行指令被配置为使所述处理器执行操作以使得:
启动系统服务的第一个多个版本包括:在具有不同指令集架构的多个异构处理器核心中的一个处理器核心上启动所述系统服务的所述第一多个版本中的所述系统服务的多版本中的每个版本;
从所述系统服务的所述第一多个版本中随机选择所述系统服务的第一版本包括:随机选择在其上启动所述系统服务的所述第一版本的所述多个异构处理器核心中的第一异构处理器核心;以及
使用所述系统服务的所述第一版本的数据来执行所述系统服务包括:通过所述第一异构处理器核心来执行所述系统服务,并且
其中,所存储的处理器可执行指令被配置为使所述处理器执行还包括下列各项的操作:
将来自所述第一应用的对执行所述系统服务的所述第一请求传输给所述第一异构处理器核心;
接收由所述第一异构处理器核心对所述系统服务的所述执行的输出;以及
向所述第一应用返回所述输出。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/087,198 | 2016-03-31 | ||
US15/087,198 US10013554B2 (en) | 2016-03-31 | 2016-03-31 | Time varying address space layout randomization |
PCT/US2017/019716 WO2017172164A1 (en) | 2016-03-31 | 2017-02-27 | Time varying address space layout randomization |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108885661A true CN108885661A (zh) | 2018-11-23 |
Family
ID=58358838
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780020930.5A Pending CN108885661A (zh) | 2016-03-31 | 2017-02-27 | 时变地址空间布局随机化 |
Country Status (9)
Country | Link |
---|---|
US (2) | US10013554B2 (zh) |
EP (1) | EP3437008A1 (zh) |
JP (1) | JP2019513270A (zh) |
KR (1) | KR20180125976A (zh) |
CN (1) | CN108885661A (zh) |
BR (1) | BR112018069707A2 (zh) |
CA (1) | CA3016005A1 (zh) |
TW (1) | TW201737150A (zh) |
WO (1) | WO2017172164A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015185071A1 (en) * | 2014-06-04 | 2015-12-10 | Giesecke & Devrient Gmbh | Method for enhanced security of computational device with multiple cores |
US10268601B2 (en) | 2016-06-17 | 2019-04-23 | Massachusetts Institute Of Technology | Timely randomized memory protection |
US10191791B2 (en) * | 2016-07-02 | 2019-01-29 | Intel Corporation | Enhanced address space layout randomization |
US10310991B2 (en) * | 2016-08-11 | 2019-06-04 | Massachusetts Institute Of Technology | Timely address space randomization |
US10481816B2 (en) * | 2017-10-18 | 2019-11-19 | Western Digital Technologies, Inc. | Dynamically assigning data latches |
GB2568527B (en) * | 2017-11-20 | 2020-04-15 | Trustonic Ltd | Address layout varying process |
US11070373B2 (en) * | 2018-02-21 | 2021-07-20 | Ebay Inc. | Masked key hopping |
KR102186221B1 (ko) * | 2018-11-29 | 2020-12-03 | 한국전자통신연구원 | 하드웨어 기반의 임베디드 시스템의 주소 공간 레이아웃 랜덤화 방법 및 이를 위한 장치 |
US11681794B2 (en) | 2021-04-07 | 2023-06-20 | Oracle International Corporation | ASLR bypass |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4875159A (en) * | 1987-12-22 | 1989-10-17 | Amdahl Corporation | Version management system using plural control fields for synchronizing two versions of files in a multiprocessor system |
CN101133393A (zh) * | 2005-03-02 | 2008-02-27 | 西姆毕恩软件有限公司 | 用于计算装置的双模式操作系统 |
US20130013843A1 (en) * | 2011-07-07 | 2013-01-10 | Zoran Radovic | Efficient storage of memory version data |
US20130091318A1 (en) * | 2011-10-11 | 2013-04-11 | Mcafee, Inc. | System and method for critical address space protection in a hypervisor environment |
US20150032951A1 (en) * | 2004-04-08 | 2015-01-29 | Texas Instruments Incorporated | Methods, apparatus, and systems for secure demand paging and other paging operations for processor devices |
-
2016
- 2016-03-31 US US15/087,198 patent/US10013554B2/en not_active Expired - Fee Related
-
2017
- 2017-02-27 BR BR112018069707A patent/BR112018069707A2/pt not_active Application Discontinuation
- 2017-02-27 CA CA3016005A patent/CA3016005A1/en not_active Abandoned
- 2017-02-27 CN CN201780020930.5A patent/CN108885661A/zh active Pending
- 2017-02-27 EP EP17711838.7A patent/EP3437008A1/en not_active Withdrawn
- 2017-02-27 KR KR1020187027765A patent/KR20180125976A/ko unknown
- 2017-02-27 JP JP2018550779A patent/JP2019513270A/ja active Pending
- 2017-02-27 WO PCT/US2017/019716 patent/WO2017172164A1/en active Application Filing
- 2017-03-06 TW TW106107191A patent/TW201737150A/zh unknown
-
2018
- 2018-07-02 US US16/025,932 patent/US20180314825A1/en not_active Abandoned
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4875159A (en) * | 1987-12-22 | 1989-10-17 | Amdahl Corporation | Version management system using plural control fields for synchronizing two versions of files in a multiprocessor system |
US20150032951A1 (en) * | 2004-04-08 | 2015-01-29 | Texas Instruments Incorporated | Methods, apparatus, and systems for secure demand paging and other paging operations for processor devices |
CN101133393A (zh) * | 2005-03-02 | 2008-02-27 | 西姆毕恩软件有限公司 | 用于计算装置的双模式操作系统 |
US20130013843A1 (en) * | 2011-07-07 | 2013-01-10 | Zoran Radovic | Efficient storage of memory version data |
US20130091318A1 (en) * | 2011-10-11 | 2013-04-11 | Mcafee, Inc. | System and method for critical address space protection in a hypervisor environment |
Non-Patent Citations (2)
Title |
---|
BENJAMIN COX ET AL: "N—Variant Systems:A Secretless Framework for Security through Diversity", 《HTTP://WWW.CS.VIRGINIA.EDU/一EVANS/PUBS/NVARIANT/USENIX06一PACKAGED.PDF》 * |
FACOL A DI ET AL: "UNIUERSI A DEGLI STUDIDI MILANO Diversified Process Replicae for Defeating Memory Error Exploits Diversified Process Replicae for Defeating Memory Error Exploits", 《HTTP://WWW.ISG.RHUL.AC.UK/SULLIVAN/PUBS/TR/DIVERSIFIED-PROCESS-REPLICAE_ TR1406·PDF》 * |
Also Published As
Publication number | Publication date |
---|---|
KR20180125976A (ko) | 2018-11-26 |
TW201737150A (zh) | 2017-10-16 |
US20170286674A1 (en) | 2017-10-05 |
US10013554B2 (en) | 2018-07-03 |
JP2019513270A (ja) | 2019-05-23 |
EP3437008A1 (en) | 2019-02-06 |
BR112018069707A2 (pt) | 2019-02-05 |
WO2017172164A1 (en) | 2017-10-05 |
CA3016005A1 (en) | 2017-10-05 |
US20180314825A1 (en) | 2018-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108885661A (zh) | 时变地址空间布局随机化 | |
Ghose et al. | Enabling the adoption of processing-in-memory: Challenges, mechanisms, future research directions | |
CN107636625A (zh) | 用于共享系统高速缓存的虚拟化控制的方法和装置 | |
US20140089602A1 (en) | System cache with partial write valid states | |
US20160364142A1 (en) | Memory system | |
US9218040B2 (en) | System cache with coarse grain power management | |
TWI492055B (zh) | 具資料擱置狀態之系統快取記憶體及最佳化系統快取記憶體之方法 | |
US20150269091A1 (en) | Secure support for i/o in software cryptoprocessor | |
CN106537361A (zh) | 用于通过组和通路将缓存灵活划分成组件缓存的方法和装置 | |
JP2018005395A (ja) | 演算処理装置、情報処理装置および演算処理装置の制御方法 | |
CN109829316A (zh) | 加密设备、包括所述加密设备的片上系统以及电子设备 | |
CN107438837A (zh) | 数据高速缓存 | |
CN106155930A (zh) | 应用层管理的存储器高速缓存 | |
JP6453997B2 (ja) | ヘテロジニアスプロセッサシステムにおけるキャッシュ間のデータ移動 | |
TW201717004A (zh) | 用於簡化用於有效平行計算的以任務為基礎的運行時間之方法 | |
JP2017519294A (ja) | フラッシュメモリベースストレージデバイスのマルチホスト電力コントローラ(mhpc) | |
US11836087B2 (en) | Per-process re-configurable caches | |
JP2018511105A (ja) | マルチクラスタシステムにおいて利用可能なキャッシュを選択する方法 | |
WO2016015583A1 (zh) | 一种内存管理方法、装置以及内存控制器 | |
TWI526831B (zh) | 針對瀏覽應用程式最佳化之快取分配方法 | |
EP2901287B1 (en) | System cache with sticky removal engine | |
EP2764439B1 (en) | Mapping persistent storage | |
JP2018511111A (ja) | ビクティムキャッシュモードを向上させるためのプロセススケジューリング | |
CN106339330B (zh) | 高速缓存刷新的方法及系统 | |
TW201734763A (zh) | 辨識增強型同步操作結果以改善執行時操作 |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20181123 |
|
WD01 | Invention patent application deemed withdrawn after publication |