时变地址空间布局随机化制造技术

技术编号:19561906 阅读:18 留言:0更新日期:2018-11-25 00:30
实施例包括由装置实现的用于时变地址空间布局随机化的计算设备、装置和方法。装置可以启动系统服务的第一多个版本,以及向系统服务的第一多个版本中的每个版本分配随机虚拟地址空间布局。装置可以从第一应用接收对执行系统服务的第一请求。装置可以从系统服务的第一多个版本中随机选择系统服务的第一版本,以及使用系统服务的第一版本的数据来执行系统服务。

Randomization of time-varying address space layout

The embodiments include computing devices, devices and methods implemented by devices for randomizing time-varying address space layout. The device can start the first or more versions of the system service and assign a random virtual address space layout to each version of the first or more versions of the system service. The device may receive a first request for executing system services from the first application. The device can randomly select the first version of the system service from the first or more versions of the system service and use the data of the first version of the system service to perform the system service.

【技术实现步骤摘要】
【国外来华专利技术】时变地址空间布局随机化
技术介绍
黑客将各种策略用于攻击计算设备,包括移动设备。许多策略涉及尝试识别应用的存储器布局,使得可以通过了解服务在存储器中处于的位置来利用系统服务中的已知漏洞。这种攻击可以体现以系统服务为目标的“控制劫持攻击”,例如返回导向编程(ROP)。ROP攻击的目标是权限提升和后续益处。这种攻击通常采用暴力(bruteforce)战术,其中,攻击方穷尽地探索进程地址空间以找出漏洞或小工具(gadget)代码/数据位置。暴力战术可能导致攻击的受害者系统服务崩溃。另一种形式的攻击利用了信息泄漏。这样的技术利用格式字符串漏洞来获得某些信息(例如,返回地址,并且因此获得一些库函数位置)。易受攻击的进程的信息泄漏可能会危害另一个进程,尤其是使用动态碎片(shred)库的进程。攻击可以结合技术,来更有效地发现被一个或多个进程使用的地址空间的可利用漏洞。地址空间布局随机化(ASLR)是一种众所周知的技术,其通过在运行时将程序的不同部分存储在存储器中随机选择的位置并且使用地址空间映射来实现程序执行,来保护应用免受黑客攻击。ASLR提供传统应用映射所不能承担的针对黑客攻击的保护,在所述传统应用映射中在特定的固定(例如,连续)位置处加载程序部分。ASLR使攻击方难以在活动地运行的进程的地址空间中找到不同的代码位置。但是,ASLR仍然可能被攻击。即使应用代码是使用ASLR来随机化的,但是因为可以使用相同的地址空间,所以在对受害者系统服务的重新初始化时,也可以使用攻击方在暴力攻击中收集的信息。
技术实现思路
各个实施例的方法和装置提供了用于计算设备上的时变地址空间布局随机化的装置和方法,包括:启动系统服务的第一多个版本;以及向系统服务的第一多个版本中的每个版本分配随机虚拟地址空间布局。各个实施例还可以包括:从第一应用接收对执行系统服务的第一请求;从系统服务的第一多个版本中随机选择系统服务的第一版本;以及使用系统服务的第一版本的数据来执行系统服务。一些实施例还可以还包括:从第一应用接收对执行系统服务的第二请求;从系统服务的第一多个版本中随机选择系统服务的第二版本;以及使用系统服务的第二版本的数据来执行系统服务。一些实施例可以包括:向系统服务的第一多个版本中的每个版本分配系统服务版本标识符。系统服务的第一多个版本中的每个版本的系统服务版本标识符可以是不同的。各个实施例还可以包括:将系统服务的第一多个版本中的每个版本的系统服务版本标识符与系统服务的系统服务标识符进行关联;以及存储系统服务的第一多个版本中的每个版本的系统服务版本标识符与系统服务标识符的关联结果(correlation)。各个实施例还可以包括:将系统服务的第一多个版本中的每个版本的系统服务版本标识符与系统服务的第一多个版本中的每个版本的随机虚拟地址空间布局中的相应的一个随机虚拟地址空间布局进行关联。各个实施例还可以包括:存储系统服务的第一多个版本中的每个版本的系统服务版本标识符与系统服务的第一多个版本中的每个版本的随机虚拟地址空间布局中的相应的一个随机虚拟地址空间布局的关联结果。在一些实施例中,对执行系统服务的第一请求包括系统服务标识符;以及从系统服务的第一多个版本中随机选择系统服务的第一版本可以包括:从与系统服务标识符相关的系统服务的第一多个版本中随机选择系统服务的第一版本。各个实施例还可以包括:向第一应用提供系统服务的第一版本的第一系统服务版本标识符;以及从第一应用接收对执行具有第一系统服务版本标识符的系统服务的第一版本的请求。一些实施例还可以包括:使用第一系统服务版本标识符与第一系统服务版本的随机虚拟地址空间布局之间的关联结果,来对第一系统服务版本的随机虚拟地址进行定位。这样的实施例还可以包括:将第一系统服务版本的随机虚拟地址转化为物理地址,系统服务的第一版本的数据存储在所述物理地址处;以及取得系统服务的第一版本的数据。一些实施例还可以包括:向系统服务的第一多个版本中的每个版本分配进程标识符。在这样的实施例中,针对系统服务的第一多个版本中的每个版本的进程标识符可以是相同的。在这样的实施例中,可以针对被分配进程标识符的系统服务的第一多个版本中的每个版本,发生以下操作:向系统服务的第一多个版本中的每个版本分配随机虚拟地址空间布局,向系统服务的第一多个版本中的每个版本分配系统服务版本标识符,以及将系统服务的第一多个版本中的每个版本的系统服务版本标识符与系统服务的系统服务标识符进行关联。一些实施例还可以还包括:接收对为动态生成的执行系统服务的第一版本的代码分配代码缓冲器空间的请求;随机选择代码缓冲器地址;以及确定与代码缓冲器地址相关的代码缓冲器空间是否足够大并且可用于存储动态生成的代码。这样的实施例还可以包括:响应于确定代码缓冲器空间足够大以存储动态生成的代码,在代码缓冲器地址处存储动态生成的代码。一些实施例还可以包括:从第二应用接收对执行系统服务的第二请求;检测到来自第二应用的对执行系统服务的第二请求是对系统服务的攻击;以及启动系统服务的第二多个版本。这样的实施例还可以包括:向系统服务的第二多个版本中的每个版本分配随机虚拟地址空间布局。系统服务的第一多个版本中的每个版本的随机虚拟地址空间布局和系统服务的第二多个版本中的每个版本的随机虚拟地址空间布局可以是不同的。这样的实施例还可以包括:从系统服务的第一多个版本和系统服务的第二多个版本中随机选择系统服务的第二版本;以及使用系统服务的第二版本的数据来执行系统服务。在一些实施例中,启动系统服务的第一个多个版本可以包括:在具有不同指令集架构的多个异构处理器核心中的一个处理器核心上启动系统服务的第一多个版本中的系统服务的多版本中的每个版本。在这样的实施例中,从系统服务的第一多个版本中随机选择系统服务的第一版本可以包括:随机选择在其上启动系统服务的第一版本的多个异构处理器核心中的第一异构处理器核心。在这样的实施例中,使用系统服务的第一版本的数据来执行系统服务可以包括:通过第一异构处理器核心来执行系统服务。这样的实施例还可以包括:将来自第一应用的对执行系统服务的第一请求传输给第一异构处理器核心;接收由第一异构处理器核心对系统服务的执行的输出;以及向第一应用返回输出。各个实施例可以包括:具有下列各项的计算设备:启动器、通信地连接到启动器的映射器、通信地连接到启动器的请求协调器、以及通信地连接到请求协调器的处理器。启动器、映射器、请求协调器以及处理器可以被配置为执行上文概述的实施例方法中的一个或多个实施例方法的操作。各个实施例可以包括具有用于执行上文概述的实施例方法中的一个或多个实施例方法的功能的单元的计算设备。各个实施例可以包括具有存储在其上的处理器可执行指令的非临时性处理器可读存储介质,所述处理器可执行指令被配置为使计算设备的处理器执行上文概述的实施例方法中的一个或多个实施例方法的操作。附图说明并入本文中并且组成本说明书的部分的附图示出了各个实施例的示例实施例,并且与上面给出的概括描述和下面给出的详细描述一起用于解释权利要求的特征。图1是示出适用于实现实施例的计算设备的组件框图。图2是示出适用于实现实施例的示例多核处理器的组件框图。图3是示出生成系统服务的各种版本的时变地址空间布局随机化的示例的图解图。图4A是示本文档来自技高网...

【技术保护点】
1.一种在计算设备上的时变地址空间布局随机化的方法,包括:启动系统服务的第一多个版本;向所述系统服务的所述第一多个版本中的每个版本分配随机虚拟地址空间布局;从第一应用接收对执行所述系统服务的第一请求;从所述系统服务的所述第一多个版本中随机选择所述系统服务的第一版本;以及使用所述系统服务的所述第一版本的数据来执行所述系统服务。

【技术特征摘要】
【国外来华专利技术】2016.03.31 US 15/087,1981.一种在计算设备上的时变地址空间布局随机化的方法,包括:启动系统服务的第一多个版本;向所述系统服务的所述第一多个版本中的每个版本分配随机虚拟地址空间布局;从第一应用接收对执行所述系统服务的第一请求;从所述系统服务的所述第一多个版本中随机选择所述系统服务的第一版本;以及使用所述系统服务的所述第一版本的数据来执行所述系统服务。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.一种计算设备,包括:用于启动系统服务的第一多个版本的单元;用于向所述系统服务的所述第一多个版本中的每个版本分配随机虚拟地址空间布局的单元;用于从第一应用接收对执行所述系统服务的第一请求的单元;用于从所述系统服务的所述第一多个版本中随机选择所述系统服务的...

【专利技术属性】
技术研发人员:S·A·K·加塔拉G·C·卡斯卡瓦尔R·古普塔
申请(专利权)人:高通股份有限公司
类型:发明
国别省市:美国,US

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

1