CN112100686B - 一种基于arm指针验证的内核代码指针完整性保护方法 - Google Patents

一种基于arm指针验证的内核代码指针完整性保护方法 Download PDF

Info

Publication number
CN112100686B
CN112100686B CN202010885933.9A CN202010885933A CN112100686B CN 112100686 B CN112100686 B CN 112100686B CN 202010885933 A CN202010885933 A CN 202010885933A CN 112100686 B CN112100686 B CN 112100686B
Authority
CN
China
Prior art keywords
pointer
sensitive
code
sensitive pointer
variable
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010885933.9A
Other languages
English (en)
Other versions
CN112100686A (zh
Inventor
杨昱天
朱凇伯
申文博
周亚金
任奎
王文海
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang University ZJU
Original Assignee
Zhejiang University ZJU
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhejiang University ZJU filed Critical Zhejiang University ZJU
Priority to CN202010885933.9A priority Critical patent/CN112100686B/zh
Publication of CN112100686A publication Critical patent/CN112100686A/zh
Application granted granted Critical
Publication of CN112100686B publication Critical patent/CN112100686B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种基于ARM指针验证的内核代码指针完整性保护方法,利用指针验证码对内核中所有的敏感指针提供完整性保护。此方法包括如下步骤:(1)定位内核代码中所有的敏感指针;(2)插入指针验证指令使得:向内存写入敏感指针前生成并嵌入指针验证码,从内存读入敏感指针后检查指针验证码;(3)修改内核启动代码,在启动早期初始化指针验证特性,随后初始化全局敏感指针的指针验证码。本发明不仅保护了内核的控制流完整性,也能防止攻击者通过篡改数据指针间接篡改代码指针,在内核中全面保护了代码指针完整性。

Description

一种基于ARM指针验证的内核代码指针完整性保护方法
技术领域
本发明涉及计算机系统安全领域,尤其涉及一种基于ARM指针验证(PointerAuthentication,PA)的内核代码指针完整性(Code Pointer Integrity,CPI)的保护方法。
背景技术
操作系统是计算机系统运行的基础,其上任何安全问题会直接危害系统整体安全。近年来,针对操作系统的攻击层出不穷,如2017到2019年的WannaCry蠕虫式勒索病毒。根据攻击手段的演化,对操作系统的攻击主要分为三类:代码注入攻击、代码重用攻击以及非控制数据攻击。与此同时,操作系统安全在攻击者和防护者的不断对抗中得到很大提升,随着抗代码注入攻击硬件安全特性的大规模部署,主流操作系统均已实现基于硬件的抗代码注入攻击防护。攻击者无法注入新的代码,转而篡改系统中的代码指针,控制系统控制流重用已有代码片段构造攻击载荷,被称为代码重用攻击。篡改返回地址的ROP攻击和篡改函数指针的JOP攻击都是常见的代码重用攻击技术。非控制数据攻击由于限制条件多、攻击载荷复杂以及通用性较低等特点,目前并未被攻击者广泛采用。抵御代码重用攻击成为当下操作系统防护的重点问题。
已有的针对代码重用攻击的保护技术主要可以分为基于控制流完整性(Control-Flow Integrity,CFI)和基于内存完整性的两类保护方法。基于控制流完整性的保护只对控制数据的跳转进行限制,不对控制数据(即代码指针)本身进行保护。这类保护方案通常需要事先对程序进行分析,创建精准的控制流图(Control-Flow Graph,CFG),对于每一个控制数据构建允许跳转目标的集合;然后在运行时根据事先建立的控制流图对程序跳转进行检查,不允许控制流图以外的任何跳转。但令人遗憾的是,大规模代码上静态分析得到的控制流图精确性往往受限,导致保护精度也受限。例如J.Li等在2018年发表的工作中(LiJ,Tong X,Zhang F,et al.Fine-CFI:Fine-grained control-flow integrity foroperating system kernels[J].IEEE Transactions on Information Forensics andSecurity,2018,13(6):1535-1550.)同时使用了基于指向(points-to) 分析和基于类型分析的方法构建控制流图后,平均每个间接跳转依然有57个合法的跳转目标。另外运行时在跳转处(call-site)的检查也会引入无法忽视的运行时性能开销,严重影响被保护程序性能。
基于内存性完整性的保护方法着眼于保护控制数据本身,此类工作保证只有经过验证后的值才能写入到控制数据,因此不需要对控制数据在跳转时进行检查,提高了性能。然而早期的此类保护方法没有借助专用的安全硬件,造成性能低下。PointGuard(Cowan C,Beattie S, Johansen J,et al.PointGuardTM:Protecting pointers from bufferoverflow vulnerabilities[C]//Proceedings of the 12th conference on USENIXSecurity Symposium.2003,12: 91-104.)使用简单的异或加密保护内存中的指针,以弥补性能上的不足,然而简单异或加密算法极易遭受攻击,安全性弱。2015年提出的CCFI(Mashtizadeh AJ,Bittau A,Boneh D,et al. CCFI:Cryptographically enforcedcontrol flow integrity[C]//Proceedings of the 22nd ACM SIGSAC Conference onComputer and Communications Security.2015:941-951.)利用x86平台的 AES指令集实现高效地计算代码指针的消息验证码(Message Authentication Code,MAC),并利用MAC保护代码指针的完整性。然而CCFI依然引入了52%的性能开销,且不能对操作系统内核进行保护。
上述工作更严重的问题在于,它们仅能保护代码指针本身,却不能保护可用于访问代码指针的数据指针。利用这一防护漏洞,攻击者可以利用与COOP(Schuster F,TendyckT, Liebchen C,et al.Counterfeit object-oriented programming:On the difficultyof preventing code reuse attacks in C++applications[C]//2015IEEE Symposium onSecurity and Privacy.IEEE,2015: 745-762.)相似的方法,通过篡改存有函数指针的内核对象的指针,实现间接劫持内核控制流的攻击。
CPI(Kuznetzov V,Szekeres L,Payer M,et al.Code-pointer integrity[M]//The Continuing Arms Race:Code-Reuse Attacks and Defenses.2018:81-116.)提出保护所有的敏感指针以实现代码指针完整性。敏感指针包括代码指针和可用于访问敏感指针的数据指针。虽然能实现全面的保护,但是在ARM平台上实现该工作的可行性受到后来研究者的质疑(Evans I,Fingeret S, Gonzalez J,et al.Missing the point(er):On theeffectiveness of code pointer integrity[C]//2015 IEEE Symposium on Securityand Privacy.IEEE,2015:781-796.)。同时CPI只能保护用户态程序,无法直接应用于操作系统。
PARTS(Liljestrand H,Nyman T,Wang K,et al.PAC it up:Towards PointerIntegrity using ARM Pointer Authentication[C]//28th USENIX Security Symposium(USENIX Security 19).2019: 177-194.)提出使用ARM平台的指针验证(PointerAuthentication,PA)特性实现对代码指针和数据指针的高效防护。遗憾的是,PARTS无法自动化地识别敏感的数据指针,同时也只能保护用户态程序。
发明内容
本发明实施例的目的是提供一种基于ARM指针验证的内核代码指针完整性保护方法,以高效地保护操作系统内核中代码指针的完整性。
为了达到上述目的,本发明实施例所采用的技术方案如下:
本发明实施例提供一种基于ARM指针验证的内核代码指针完整性保护方法,包括:
标记操作系统代码中所有的函数指针类型为敏感指针类型,得到初始化的敏感指针类型集,其中敏感指针类型集为所有敏感指针类型的集合;
根据初始化的敏感指针类型集和代码中包含的类型信息,计算并确定完整的敏感指针类型集;
根据确定的敏感指针类型集,标记代码结构体中所有敏感指针类型的域为敏感指针域,得到初始化的敏感指针域集,其中敏感指针域集为所有敏感指针域的集合;根据确定的敏感指针类型集,标记代码中所有敏感指针类型的变量为敏感指针变量,得到初始化的敏感指针变量集,其中敏感指针变量集为所有敏感指针变量的集合;
根据代码语义、初始化的敏感指针域集和初始化的敏感指针变量集,计算并确定完整的敏感指针变量集和敏感指针域集;
根据确定的敏感指针变量集,对操作系统内核代码进行如下修改:在敏感指针变量写入内存的代码前插入PAC生成代码StoreGenkey(sensptr),在敏感指针变量从内存中读取的代码后插入PAC验证代码LoadAuthkey(sensptr),其中key表示128bit的PA密钥,sensptr表示敏感指针变量,当操作系统内核运行时,动态执行插入的PAC生成代码生成敏感指针的PAC,动态执行插入的PAC验证代码验证敏感指针的PAC,若PAC验证通过,则代码指针一定完整,反之,则代码指针完整性被破坏;
在操作系统内核启动代码中插入PA密钥初始化代码keyinit(),该代码开启ARMCPU的 PA特性并用随机数初始化PA密钥;
根据确定的敏感指针变量集,确定该集合中的全局变量,记为全局敏感指针变量;
根据确定的全局敏感指针变量,在keyinit()之后插入全局敏感指针变量初始化代码 sensvar_init()。该代码对所有全局敏感指针变量调用StoreGenkey(gsensptr),其中key表示128bit 的PA密钥,gsensptr表示全局敏感指针变量。
进一步地,根据初始化的敏感指针类型集和代码中包含的类型信息,计算并确定完整的敏感指针类型集,包括:
根据代码中包含的类型信息,找到所有包含敏感指针类型的结构体类型,将指向这些结构体的指针类型加入敏感指针类型集,重复这一步骤直到敏感指针类型集稳定。
进一步地,根据代码语义、初始化的敏感指针域集和初始化的敏感指针变量集,计算并确定完整的敏感指针变量集和敏感指针域集,包括:
所有来自敏感指针域、被敏感指针变量赋值、与敏感指针变量比较大小或者成为间接调用目标的变量都被标记为敏感指针变量,若敏感指针变量来自于结构体的一个域,则同时标记该域为敏感指针域,重复这一步骤直到敏感指针变量集和敏感指针域集稳定。
进一步地,在敏感指针变量写入内存的代码前插入PAC生成代码StoreGenkey(sensptr),包括:
若敏感指针变量为代码指针,则以敏感指针变量的内存地址作为修饰符,使用ARM提供的PACIA指令为敏感代码指针写入PAC,其中PA密钥保存在apia寄存器,若敏感指针变量为数据指针,则以敏感指针变量的内存地址作为修饰符,使用ARM提供的PACDA指令为敏感数据指针写入PAC,其中PA密钥保存在apda寄存器。
进一步地,在敏感指针变量从内存中读取的代码后插入PAC验证代码 LoadAuthkey(sensptr),包括:
若敏感指针变量为代码指针,则以敏感指针变量的内存地址作为修饰符,使用ARM提供的AUTIA指令为敏感代码指针验证PAC,其中PA密钥保存在apia寄存器,若敏感指针变量为数据指针,则以敏感指针变量的内存地址作为修饰符,使用ARM提供的AUTDA指令为敏感数据指针验证PAC,其中PA密钥保存在apda寄存器;如果验证不通过,则表明操作系统内核的代码指针完整性被破坏,终止操作系统内核继续执行或是引发警报。
根据以上技术方案,本发明的有益效果是,本发明能自动识别操作系统内核中的所有敏感指针,节省了人工分析的时间且保证覆盖了全部的敏感指针;本发明自动插入保护敏感指针的代码,可以有效抵抗攻击者通过直接篡改代码指针,或是通过篡改内核对象指针间接篡改代码指针造成的代码重用攻击;本发明利用了ARM提供的基于硬件的指针验证功能,减少了保护所有敏感指针带来的性能开销。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是本发明实施例提供一种基于ARM指针认证的内核代码指针完整性保护方法的流程示意图;
图2是本发明实施例提供中ARM平台上指针验证中PAC指针的格式。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1为本发明实施例提供的一种基于ARM指针验证的内核代码指针完整性保护方法的流程图;本实施例提供的一种基于ARM指针验证的内核代码指针完整性保护方法,利用指针验证码对内核中所有的敏感指针(包括代码指针和能用于访问代码指针的数据指针)提供完整性保护,本实施例以保护Linux操作系统内核的代码指针为例来进行说明,该方法包括以下步骤:
步骤S101,标记操作系统代码中所有的函数指针类型为敏感指针类型,得到初始化的敏感指针类型集,其中敏感指针类型集为所有敏感指针类型的集合;
具体地,首先利用LLVM10编译器编译Linux v4.9.78内核,生成整个Linux内核的中间表示码(Intermediate Representation,IR),记作IRLinux,相比于源代码,IRLinux可以使后续的分析更加便捷;根据IRLinux包含的类型信息,将其中所有函数指针类型添加到初始化的敏感指针类型集。
步骤S102,根据初始化的敏感指针类型集和代码中包含的类型信息,计算并确定完整的敏感指针类型集;
具体地,遍历IRLinux中包含的所有结构体类型,采用深度优先搜索(Depth-firstsearch,DFS) 策略处理嵌套的结构体;对于一个结构体,如果它具有敏感指针类型的域,则将指向该结构体的指针类型也添加到敏感指针类型集中;遍历结构体的过程将重复直到敏感指针类型集的大小不再变化为止,所得到的完整的敏感指针类型集包含了所有的敏感代码指针和敏感数据指针。
步骤S103,根据确定的敏感指针类型集,标记代码结构体中所有敏感指针类型的域为敏感指针域,得到初始化的敏感指针域集,其中敏感指针域集为所有敏感指针域的集合;根据确定的敏感指针类型集,标记代码中所有敏感指针类型的变量为敏感指针变量,得到初始化的敏感指针变量集,其中敏感指针变量集为所有敏感指针变量的集合;
具体地,首先遍历IRLinux中结构体的所有域并确定初始的敏感指针域集;再遍历IRLinux包含的所有变量并确定每个变量是否为初始的敏感指针变量,初始的敏感指针变量是敏感指针类型的变量,或者是是来自于敏感指针域的变量;
步骤S104,根据代码语义、初始化的敏感指针域集和初始化的敏感指针变量集,计算并确定完整的敏感指针变量集和敏感指针域集;
具体地,根据IRLinux中每条指令的语义,把所有来自敏感指针域、被敏感指针变量赋值、与敏感指针变量比较大小或者成为间接调用目标的变量都被标记为敏感指针变量,若敏感指针变量来自于结构体的一个域,则同时标记该域为敏感指针域,重复这一步骤直到敏感指针变量集和敏感指针域集稳定。
步骤S105,根据确定的敏感指针变量集,对操作系统内核代码进行如下修改:在敏感指针变量写入内存的代码前插入PAC生成代码StoreGenkey(sensptr),在敏感指针变量从内存中读取的代码后插入PAC验证代码LoadAuthkey(sensptr),其中key表示128bit的PA密钥,sensptr 表示敏感指针变量,当操作系统内核运行时,动态执行插入的PAC生成代码生成敏感指针的 PAC,动态执行插入的PAC验证代码验证敏感指针的PAC,若PAC验证通过,则代码指针一定完整,反之,则代码指针完整性被破坏;
具体地,若敏感指针变量为代码指针,则PAC生成代码StoreGenkey(sensptr)以敏感指针变量的内存地址作为修饰符,使用ARMv8.3提供的PACIA指令为敏感代码指针写入PAC, PAC验证代码LoadAuthkey(sensptr)以敏感指针变量的内存地址作为修饰符,使用ARMv8.3 提供的AUTIA指令验证PAC,PA密钥保存在apia寄存器;若敏感指针变量为敏感数据指针,则PAC生成代码StoreGenkey(sensptr)以敏感指针变量的内存地址作为修饰符,使用ARMv8.3 提供的PACDA指令为敏感数据指针写入PAC,PAC验证代码LoadAuthkey(sensptr)以敏感指针变量的内存地址作为修饰符,使用ARMv8.3提供的AUTDA指令验证PAC,PA密钥保存在apda寄存器。携带PAC的指针格式如图2所示。
步骤S106,在操作系统内核启动代码中插入PA密钥初始化代码keyinit(),该代码开启 ARM CPU的PA特性并用随机数初始化PA密钥;
具体地,PA密钥初始化代码keyinit()被插入到start_kernel()中的boot_init_stack_canary() 语句之后。keyinit()应该位于Linux操作系统的随机数生成器初始化函数之后,因为keyinit() 需要调用随机数生成器。
步骤S107,根据确定的敏感指针变量集,确定该集合中的全局变量,记为全局敏感指针变量;
具体地,遍历敏感指针变量集,如果一个变量同时是IRLinux中的全局变量,则标记它为全局敏感指针变量。
步骤S108,根据确定的全局敏感指针变量,在keyinit()之后插入全局敏感指针变量初始化代码sensvar_init()。该代码对所有全局敏感指针变量调用StoreGenkey(gsensptr),其中key 表示128bit的PA密钥,gsensptr表示全局敏感指针变量。
具体地,本步骤为全局敏感指针变量初始化PAC。全局敏感指针变量在初始化时默认具有完整性,本发明在操作系统内核启动时直接生成全局敏感指针对应的PAC,使初始化的全局敏感指针在被操作系统内核读取时能够通过LoadAuthkey(sensdata)当中的完整性验证。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (5)

1.一种基于ARM指针验证的内核代码指针完整性保护方法,其特征在于,包括:
标记操作系统代码中所有的函数指针类型为敏感指针类型,得到初始化的敏感指针类型集,其中敏感指针类型集为所有敏感指针类型的集合;
根据初始化的敏感指针类型集和代码中包含的类型信息,计算并确定完整的敏感指针类型集;
根据确定的敏感指针类型集,标记代码结构体中所有敏感指针类型的域为敏感指针域,得到初始化的敏感指针域集,其中敏感指针域集为所有敏感指针域的集合;根据确定的敏感指针类型集,标记代码中所有敏感指针类型的变量为敏感指针变量,得到初始化的敏感指针变量集,其中敏感指针变量集为所有敏感指针变量的集合;
根据代码语义、初始化的敏感指针域集和初始化的敏感指针变量集,计算并确定完整的敏感指针变量集和敏感指针域集;
根据确定的敏感指针变量集,对操作系统内核代码进行如下修改:在敏感指针变量写入内存的代码前插入PAC生成代码StoreGenkey(sensptr),在敏感指针变量从内存中读取的代码后插入PAC验证代码LoadAuthkey(sensptr),其中key表示128bit的PA密钥,sensptr表示敏感指针变量,当操作系统内核运行时,动态执行插入的PAC生成代码生成敏感指针的PAC,动态执行插入的PAC验证代码验证敏感指针的PAC,若PAC验证通过,则代码指针一定完整,反之,则代码指针完整性被破坏;
在操作系统内核启动代码中插入PA密钥初始化代码keyinit(),该代码开启ARM CPU的PA特性并用随机数初始化PA密钥;
根据确定的敏感指针变量集,确定该集合中的全局变量,记为全局敏感指针变量;
根据确定的全局敏感指针变量,在keyinit()之后插入全局敏感指针变量初始化代码sensvar_init(),该代码对所有全局敏感指针变量调用StoreGenkey(gsensptr),其中key表示128bit的PA密钥,gsensptr表示全局敏感指针变量。
2.根据权利要求1所述一种基于ARM指针验证的内核代码指针完整性保护方法,其特征在于,根据初始化的敏感指针类型集和代码中包含的类型信息,计算并确定完整的敏感指针类型集,包括:
根据代码中包含的类型信息,找到所有包含敏感指针类型的结构体类型,将指向这些结构体的指针类型加入敏感指针类型集,重复这一步骤直到敏感指针类型集稳定。
3.根据权利要求1所述一种基于ARM指针验证的内核代码指针完整性保护方法,其特征在于,根据代码语义、初始化的敏感指针域集和初始化的敏感指针变量集,计算并确定完整的敏感指针变量集和敏感指针域集,包括:
所有来自敏感指针域、被敏感指针变量赋值、与敏感指针变量比较大小或者成为间接调用目标的变量都被标记为敏感指针变量,若敏感指针变量来自于结构体的一个域,则同时标记该域为敏感指针域,重复这一步骤直到敏感指针变量集和敏感指针域集稳定。
4.根据权利要求1所述一种基于ARM指针验证的内核代码指针完整性保护方法,其特征在于,在敏感指针变量写入内存的代码前插入PAC生成代码StoreGenkey(sensptr),包括:
若敏感指针变量为代码指针,则以敏感指针变量的内存地址作为修饰符,使用ARM提供的PACIA指令为敏感代码指针写入PAC,其中PA密钥保存在apia寄存器,若敏感指针变量为数据指针,则以敏感指针变量的内存地址作为修饰符,使用ARM提供的PACDA指令为敏感数据指针写入PAC,其中PA密钥保存在apda寄存器。
5.根据权利要求1所述一种基于ARM指针验证的内核代码指针完整性保护方法,其特征在于,在敏感指针变量从内存中读取的代码后插入PAC验证代码LoadAuthkey(sensptr),包括:
若敏感指针变量为代码指针,则以敏感指针变量的内存地址作为修饰符,使用ARM提供的AUTIA指令为敏感代码指针验证PAC,其中PA密钥保存在apia寄存器,若敏感指针变量为数据指针,则以敏感指针变量的内存地址作为修饰符,使用ARM提供的AUTDA指令为敏感数据指针验证PAC,其中PA密钥保存在apda寄存器;如果验证不通过,则表明操作系统内核的代码指针完整性被破坏,终止操作系统内核继续执行或是引发警报。
CN202010885933.9A 2020-08-28 2020-08-28 一种基于arm指针验证的内核代码指针完整性保护方法 Active CN112100686B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010885933.9A CN112100686B (zh) 2020-08-28 2020-08-28 一种基于arm指针验证的内核代码指针完整性保护方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010885933.9A CN112100686B (zh) 2020-08-28 2020-08-28 一种基于arm指针验证的内核代码指针完整性保护方法

Publications (2)

Publication Number Publication Date
CN112100686A CN112100686A (zh) 2020-12-18
CN112100686B true CN112100686B (zh) 2022-04-08

Family

ID=73758308

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010885933.9A Active CN112100686B (zh) 2020-08-28 2020-08-28 一种基于arm指针验证的内核代码指针完整性保护方法

Country Status (1)

Country Link
CN (1) CN112100686B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113032737B (zh) * 2021-03-15 2021-11-30 清华大学 软件的保护方法、装置、电子设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104598808A (zh) * 2015-01-08 2015-05-06 中国科学院信息工程研究所 基于寄存器架构的Android应用完整性验证方法
CN105260659A (zh) * 2015-09-10 2016-01-20 西安电子科技大学 一种基于qemu的内核级代码重用型攻击检测方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8561183B2 (en) * 2009-07-31 2013-10-15 Google Inc. Native code module security for arm instruction set architectures
CN102930185B (zh) * 2012-11-28 2015-07-29 中国人民解放军国防科学技术大学 运行时程序安全关键数据的完整性验证方法及装置
US9015835B2 (en) * 2013-06-23 2015-04-21 Intel Corporation Systems and methods for procedure return address verification
CN104809401B (zh) * 2015-05-08 2017-12-19 南京大学 一种操作系统内核完整性保护方法
US10223295B2 (en) * 2016-03-10 2019-03-05 Microsoft Technology Licensing, Llc Protected pointers
US11144631B2 (en) * 2018-09-11 2021-10-12 Apple Inc. Dynamic switching between pointer authentication regimes

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104598808A (zh) * 2015-01-08 2015-05-06 中国科学院信息工程研究所 基于寄存器架构的Android应用完整性验证方法
CN105260659A (zh) * 2015-09-10 2016-01-20 西安电子科技大学 一种基于qemu的内核级代码重用型攻击检测方法

Also Published As

Publication number Publication date
CN112100686A (zh) 2020-12-18

Similar Documents

Publication Publication Date Title
US7853803B2 (en) System and method for thwarting buffer overflow attacks using encrypted process pointers
US20090187771A1 (en) Secure data storage with key update to prevent replay attacks
US7607122B2 (en) Post build process to record stack and call tree information
Szekeres et al. Eternal war in memory
US8041958B2 (en) Method for preventing malicious software from execution within a computer system
US7251735B2 (en) Buffer overflow protection and prevention
US10528729B2 (en) Methods and systems for defending against cyber-attacks
KR20160145014A (ko) 하드웨어-기반 스택 제어 정보 보호
Zhang et al. Recfa: Resilient control-flow attestation
US8621238B1 (en) Using software-based decision procedures to control instruction-level execution
Ismail et al. Tightly Seal Your Sensitive Pointers with {PACTight}
CN112100686B (zh) 一种基于arm指针验证的内核代码指针完整性保护方法
WO2001097010A2 (en) Data processing method and device for protected execution of instructions
US10885184B1 (en) Rearranging executables in memory to prevent rop attacks
Nakano et al. Memory access pattern protection for resource-constrained devices
Adiletta et al. Mayhem: Targeted corruption of register and stack variables
CN111881485B (zh) 一种基于arm指针验证的内核敏感数据完整性保护方法
Zonouz et al. Dynamic memory protection via Intel SGX-supported heap allocation
CN114981811A (zh) 用于软件安全的装置和方法
Bouffard et al. Heap Hop! Heap Is Also Vulnerable
CN114547651B (zh) 一种基于链式加密的操作系统中断上下文保护方法
Kisore et al. FFRR: a software diversity technique for defending against buffer overflow attacks
KR102258408B1 (ko) 반환 명령어 난독화 방법 및 난독화된 반환 명령어 실행방법
CN117972799A (zh) 一种应用于arm处理器的指针保护方法、计算机系统
Tsantekidis et al. MMU-based Access Control for Libraries.

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant