内核运行时随机化的装置和方法制造方法及图纸

技术编号:31500881 阅读:28 留言:0更新日期:2021-12-22 23:13
一种装置包括耦合至非易失性存储器和运行时内存的处理器。所述处理器用于从所述非易失性存储器中读取链接可执行镜像和随机化镜像。所述链接可执行镜像包括链接可执行程序,所述随机化镜像包括符号表、重定位表和对象表中的一种或多种。所述处理器加载所述链接可执行镜像生成运行时程序,执行运行时随机化生成随机化运行时程序,并执行所述随机化运行时程序。所述运行时随机化包括:将所述运行时程序的段复制到临时位置,其中,所述复制的段包括多个可重定位对象;根据所述多个可重定位对象的随机顺序,将每个可重定位对象写入所述运行时程序,生成随机化运行时程序;以及对所述随机化运行时程序执行重定位。机化运行时程序执行重定位。机化运行时程序执行重定位。

【技术实现步骤摘要】
【国外来华专利技术】内核运行时随机化的装置和方法


[0001]所公开的实施例的方面总体涉及计算装置,更特别地,涉及移动通信装置内的软件安全性。

技术介绍

[0002]现代计算装置,例如手机和其他支持通信的移动计算设备,使用操作系统内核(称为内核)来管理装置内运行的软件应用。内核,尤其是LinuxTM内核,已知容易受到各种攻击,这些攻击可能会进行权限升级,例如获取根访问权限或根能力。
[0003]Linux内核通常从由内核链接配置确定的众所周知的虚拟地址开始,在链接期间确定内核中所有功能和数据的位置,并且每次加载内核时保持不变。许多漏洞或攻击都是基于对内核函数和数据的了解,以及它们在地址空间中的位置。例如,有一类攻击被称为返回导向编程(return oriented programming,简称ROP)攻击或返回libc,基于对其运行时地址的了解,利用内核代码的一小部分(称为小工具)。这种类型的攻击所需的信息可以从内核镜像和数据泄露中获得。
[0004]防止这些攻击的一种方法是内核地址空间布局随机化(kernel address space layout randomization,简称KASLR)。KASLR旨在通过随机安排程序的重要数据区域,如随机安排可执行文件的基址、数据、栈、堆以及包含库的类似区域,防止攻击者跳转到已知的小工具。
[0005]当在内核加载时使用KASLR时,攻击者只需获取单个函数的地址,即可确定其余所有内核函数和数据对象的地址。在内核的启动或执行过程中,某些内核函数的地址往往会通过数据泄露而暴露出来,从而危害利用KASLR加载的内核。
[0006]其他的随机化和加载技术已经被尝试过,然而每一种技术都有其已知的漏洞。因此,需要改进的方法和装置来保护内核或其他加载的软件程序不被利用。相应地,需要提供解决至少一些上述问题的方法和装置。

技术实现思路

[0007]所公开的实施例的目的是在计算装置中执行时为内核和其他软件程序提供更好的软件安全性。这个目的由独立权利要求的主题实现。进一步有利的修改可以在从属权利要求中找到。
[0008]第一方面,上述及其他目的和优点通过包括耦合至非易失性存储器和运行时内存的处理器的装置获得。所述处理器用于从所述非易失性存储器中读取链接可执行镜像和随机化镜像。所述链接可执行镜像包括链接可执行程序,所述随机化镜像包括符号表、重定位表和对象表中的一种或多种。所述处理器将所述链接可执行镜像加载到所述运行时内存中以生成运行时程序,并对所述运行时程序进行运行时随机化以生成随机化运行时程序,并执行所述随机化运行时程序。所述运行时随机化包括将所述运行时程序的段复制到临时位置,其中,所述复制的段包括多个可重定位对象;根据所述多个可重定位对象的随机顺序,
将所述多个可重定位对象中的每个可重定位对象写入所述运行时程序,生成随机化运行时程序;以及对所述随机化运行时程序执行重定位。执行所述重定位包括更新符号表、重定位表、代码段和数据段中的一个或多个。随机排序所述多个可重定位对象可以防止攻击者使用所述可重定位对象的一部分,通过将每个可重定位对象放置在所述运行时程序内不可预测和未知的位置,从而危害所述运行时程序。
[0009]根据第一方面,在所述装置的一种可能的实现方式中,所述处理器用于在复制所述段之后擦除所述段。擦除或初始化所述段使用的内存,确保程序对象或函数均不能被攻击者定位和/或使用。
[0010]根据第一方面,在所述装置的一种可能的实现方式中,所述段包括多个段,所述多个段可以包括文本段和数据段中的一个或多个,所述处理器用于将所述多个段复制到所述临时位置。通过随机化运行时程序的较大部分,复制多个段提高安全性。
[0011]根据第一方面,在所述装置的一种可能的实现方式中,所述链接可执行镜像和所述随机化镜像包括压缩数据,所述处理器用于读取和解压所述压缩数据。将所述链接可执行镜像和所述随机化镜像以压缩形式存储,减少了用于存储所述链接可执行镜像和所述随机化镜像的非易失性存储量。
[0012]根据第一方面,在所述装置的一种可能的实现方式中,所述多个可重定位对象包括编译单元、函数和数据对象中的一个或多个,所述处理器用于根据所述多个可重定位对象的随机顺序,将所述多个可重定位对象中的每个可重定位对象写入所述随机化运行时程序。使用不同类型的可重定位对象提供了替代方案,可以根据被随机化的应用程序的具体细节提供不同的优势。
[0013]根据第一方面,在所述装置的一种可能的实现方式中,加载所述链接可执行镜像包括:生成随机偏移值;根据所述随机偏移值加载所述运行时程序;根据所述随机偏移值更新动态重定位表。将所述运行时程序的基址与所述运行时随机化过程进行随机化会为所述随机化运行时程序中的代码和数据对象的位置增加额外的随机化,从而使得攻击者更难识别他们试图攻击的程序对象或小工具的位置。
[0014]根据第一方面,在所述装置的一种可能的实现方式中,所述处理器用于在启动加载器的上下文中执行所述运行时随机化。配置所述加载器或启动加载器以执行运行时随机化,使得对未设计成随机化的链接可执行镜像执行运行时随机化。
[0015]根据第一方面,在所述装置的一种可能的实现方式中,所述随机化镜像嵌入在所述链接可执行镜像中,所述处理器用于读取所述链接可执行镜像和随机化镜像。将所述链接可执行镜像和所述随机化镜像组合为同一可加载镜像中,使得用于执行自身运行时随机化的程序能够被传统加载器加载,而无需所述加载器知道所述运行时随机化过程,或者用于执行运行时随机化。
[0016]根据第一方面,在所述装置的一种可能的实现方式中,所述运行时程序包括内核,所述处理器用于在所述内核的上下文中执行所述运行时随机化。当应用于内核时,运行时随机化是特别有利的,因为内核倾向于长时间运行,而且内核的许多部分都是在高权限级别上运行的。
[0017]根据第一方面,在所述装置的一种可能的实现方式中,所述装置包括移动通信设备。手机等移动通信设备由于运行着许多高度敏感的应用,如银行应用、购物应用、社交媒
体账户等,一旦被泄露,会造成严重的财务和个人后果,因此安全性的提高使其受益匪浅。
[0018]第二方面,通过以下方法获得上述及其他目的和优点,所述方法包括:从非易失性存储器中读取链接可执行镜像和随机化镜像,其中,所述链接可执行镜像包括链接可执行程序,所述随机化镜像包括符号表、重定位表和对象表中的一种或多种;将所述链接可执行镜像加载到所述运行时内存中以生成运行时程序;对所述运行时程序进行运行时随机化以生成随机化运行时程序;以及执行所述随机化运行时程序。执行所述运行时随机化包括:将所述运行时程序的段复制到临时位置,其中,所述复制的段包括多个可重定位对象;根据所述多个可重定位对象的随机顺序,将所述多个可重定位对象中的每个可重定位对象写入所述运行时程序,生成随机化运行时程序;以及执行所述随机化运行时程序的重定位。执行所述重定位包括更新符号表、重定位表、代码段和数据段中的一个或多个。所述多个可重定位对本文档来自技高网
...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】1.一种装置(100),其特征在于,包括耦合至非易失性存储器(104)和运行时内存(106)的处理器(102),所述处理器(102)用于:从所述非易失性存储器(104)中读取链接可执行镜像(108)和随机化镜像(110),其中,所述链接可执行镜像(108)包括链接可执行程序,所述随机化镜像(110)包括符号表、重定位表和对象表中的一个或多个;将所述链接可执行镜像(108)加载到所述运行时内存(106)中以生成运行时程序(112);对所述运行时程序(112)进行运行时随机化以生成随机化运行时程序(118);以及执行所述随机化运行时程序(118);其中所述运行时随机化包括:将所述运行时程序(112)的段(114)复制到临时位置(116),其中,所述复制的段包括多个可重定位对象;根据所述多个可重定位对象的随机顺序,将所述多个可重定位对象中的每个可重定位对象写入所述运行时程序(118),生成随机化运行时程序(118);以及对所述随机化运行时程序(118)执行重定位,其中,执行所述重定位包括更新符号表、重定位表、代码段和数据段中的一个或多个。2.根据权利要求1所述的装置(100),其特征在于,所述处理器用于在复制所述段(114)后擦除所述段(114)。3.根据前述权利要求中任一项所述的装置(100),其特征在于,所述段(114)包括多个段,所述多个段包括文本段和数据段中的一个或多个,所述处理器(102)用于将所述多个段复制到所述临时位置(116)。4.根据前述权利要求中任一项所述的装置(100),其特征在于,所述链接可执行镜像(108)和所述随机化镜像(110)包括压缩数据,所述处理器(102)用于读取和解压所述压缩数据。5.根据前述权利要求中任一项所述的装置(100),其特征在于,所述多个可重定位对象包括编译单元、函数和数据对象中的一个或多个,所述处理器(102)用于根据所述多个可重定位对象的随机顺序将所述多个可重定位对象中的每个可重定位对象写入所述随机运行时程序(118)。6.根据权利要求1所述的装置(100),其特征在于,加载所述链接可执行镜像(108)包括:生成随机偏移值;根据所述随机偏移值加载所述运行时程序(112);以及根据所述随机偏移值更新动态重定位表。7.根据前述权利要求中任一项所述的装置(100),其特征在于,所述处理器(102)...

【专利技术属性】
技术研发人员:德米特里
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

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

1