CN115964758A - 一种基于TrustZone的内核数据完整性保护方法 - Google Patents
一种基于TrustZone的内核数据完整性保护方法 Download PDFInfo
- Publication number
- CN115964758A CN115964758A CN202211514849.1A CN202211514849A CN115964758A CN 115964758 A CN115964758 A CN 115964758A CN 202211514849 A CN202211514849 A CN 202211514849A CN 115964758 A CN115964758 A CN 115964758A
- Authority
- CN
- China
- Prior art keywords
- monitor
- program
- data
- protected
- shadow
- 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
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Storage Device Security (AREA)
Abstract
本发明提供了一种基于TrustZone的内核数据完整性保护方法,包括编译器和监视器。编译器的输入是内核(及待保护的应用程序)的源代码,编译器执行静态分析,确定所有需要保护的安全关键数据,并在程序中插入必要的监控代码,以向独立操作系统运行的监视器报告与需要保护的目标相关的操作。监视器接收到受保护程序中安全关键数据的合法(即原程序定义的)操作后,在专用表中生成或更新关键数据的卷影副本。使用安全关键数据时,监视器将通过比较其运行时值和卷影副本来检查关键数据的完整性。如果检测到不匹配,则表示受保护程序中安全关键数据被非法更改。作为响应,监视器将终止相应的程序,通过proc文件系统向用户报告违规情况。
Description
技术领域
本发明属于系统安全领域,尤其涉及一种基于TrustZone的内核数据完整性保护方法。
背景技术
现实中,操作系统内核存在漏洞,其中在内存中的数据会受到内存损坏攻击(Memory Corruption Attack)。一旦攻击者攻击操作系统内核,他们就可以获得系统的最高权限,并执行他们想要的任何恶意操作,包括操纵底层硬件、在系统中执行任意代码、在内存或磁盘上读写任意数据等。
内存损坏攻击可以大致分为两类:面向控制的或面向数据的。针对控制流劫持攻击的防御措施包括数据执行预防(DEP)、内存随机化(如ASLR、DSR)、控制流完整性(CFI)。防御面向数据攻击的防御措施有动态攻击分析(DTA)和数据流完整性(DFI)。
然而,以上现有方法存在很多不足之处。例如,这些防御在没有特殊硬件支持的情况下会产生很大的开销,控制流可能会受到非控制数据的影响,防御措施多以控制流保护为主,缺乏对非控制流数据的保护等。
发明内容
本发明所要解决的技术问题是针对现有技术的不足,提供一种基于TrustZone的内核数据完整性保护方法,通过带外方式(Out-of-band)以较少的开销、较高可靠性保护操作系统内核(包括应用程序)免受内存损坏攻击。
本发明所述的一种基于TrustZone的内核数据完整性保护方法,包括:
步骤1,向编译器输入内核及待保护的应用程序的源代码,编译器执行静态分析,确定所有需要保护的安全关键数据,并在程序中插入必要的监控代码,以向独立操作系统运行的监控器报告与需要保护的目标相关的操作;
步骤2,监视器接收到受保护程序中安全关键数据的合法(即原程序定义的)操作后,在专用表中生成或更新安全关键数据的卷影副本。稍后,当使用所述安全关键数据时,监视器将通过比较其运行时值和卷影副本来检查关键数据的完整性。如果检测到不匹配,则表示受保护程序中安全关键数据被非法更改。作为响应,监视器将终止相应的程序,并通过proc文件系统向用户报告违规情况。
步骤1中,所述需要保护的内核(及待保护的应用程序)在内存中的安全关键数据包含:
返回地址;
函数指针;
Vtables指针;
用户注释的非控制数据。
步骤1包括如下步骤:
步骤1-1,编译器定位目标,确定在待保护的应用程序或内核中插入代码的位置,以报告目标内存数据;
步骤1-2,编译器进行代码插装,得到插入了安全代码的增强程序;
步骤1-3,增强程序中对安全关键数据的操作,通过高速共享内存OCRAM从NormalWorld传递到Secure World的监控器中;
步骤1-4,受保护程序向监视器报告五种类型的操作,包括OP_STORE、OP_LOAD、OP_PUSH、OP_POP、OP_FORK和OP_FREE,来监控安全关键数据的生命周期。
其中OP_STORE指写内存就是存储操作,将数据从寄存器写入到内存。OP_LOAD指读内存,也就是加载操作,从内存读数据到寄存器。OP_PUSH指将数据压入栈中。OP_POP指从栈中弹出数据。OP_FORK是复制进程的操作,程序一开始就会产生一个进程,当这个进程执行到OP_FORK时,OP_FORK就会复制一份原来的进程即就是创建一个新进程,称子进程,而原来的进程称为父进程,此时父子进程是共存的,它们一起向下执行代码。OP_FREE操作显示系统使用和空闲的内存情况,包括物理内存、交互区内存和内核缓冲区内存。
步骤1-2包括:
步骤1-2-1,通过堆或栈上帧指针的固定偏移量计算返回地址对象的位置;
步骤1-2-2,如果内存对象声明为函数指针类型,如指向函数地址的特殊指针类型,则直接检测到函数指针;如果函数指针是从其他类型转换而来的,如void*类型,则执行流分析来跟踪一组内存对象,所述内存对象的类型不是函数指针,而是从函数指针传播到函数指针;
步骤1-2-3,通过C++ABI实现Vtable指针的标识;
步骤1-2-4,使用属性注释(__attribute__((annotate("sensitive"))))来定位用户注释的非控制数据。
步骤1-3包括如下步骤:
步骤1-3-1,共享内存被组织为块矩阵,矩阵的每一列表示一个环形缓冲区;一个单独的环形缓冲区被分配给增强程序的操作的其中一组进程,一组进程的任务标识符具有相同的哈希值(即tid);当报告安全关键数据的操作时,程序进程会将环形缓冲区之一的一组进程推送到相应的环中;
步骤1-3-2,环形缓冲区中的每一组进程都由编写共享内存的程序签名,在程序启动时,编译器插入的额外监控代码将与监视器一起计算公私密钥对,公钥保存在监视器中,程序使用私钥对写入共享内存的操作进行签名,在执行任何操作请求之前,监视器将首先使用与程序ID关联的公钥检查签名是否有效;签名确保只有经过身份验证的进程才能写入环形缓冲区,从而防止恶意程序写入任意环形缓冲区。
步骤1-3-3,使用OCRAM(可以采用i.MX6处理器)作为Normal World和SecureWorld之间的共享内存。OCRAM在内存地址空间中静态映射,能够通过Advanced eXtensibleInterface(AXI)总线直接访问。
步骤2中,监视器是独立操作系统运行在ARM的TrustZone技术所分隔的SecureWorld中的。
步骤2中,隔离执行允许两段不同代码完全隔离运行,将安全关键组件和其他非安全关键的软件组件放在不同域中运行。
步骤2中,ARM的TrustZone技术是一种系统范围的安全解决方案,ARM提供两个执行域:Normal World和Secure World,隔离了内存空间和正确配置的安全外围设备。
步骤2中,所述专用表分为两种:一种是阴影查找表,另一种是非返回数据和返回地址的卷影堆栈;
步骤2中,所述监视器接收到受保护程序中安全关键数据的合法(即原程序定义的)操作后,在专用表中生成或更新安全关键数据的卷影副本,具体包括:
为了报告函数指针、vtable指针或与安全相关的非控制数据的初始化或赋值,包含数据地址和内容的OP_STORE消息被写入共享内存,作为响应,监视器将在卷影堆栈中生成相关数据地址和内容的卷影副本;
当返回地址需要保护时,OP_PUSH消息将写入共享内存,收到OP_PUSH消息后,监视器将在卷影堆栈上制作返回地址的卷影副本;
当程序中使用安全关键数据时,OP_LOAD或OP_POP消息将写入共享内存,通知监视器执行完整性检查,根据操作类型,监视器将在阴影查找表中搜索非返回数据,并在卷影堆栈中搜索返回地址,如果未找到安全关键数据的卷影副本,或者安全关键数据与程序报告的运行时值不匹配,则会检测到冲突;
当OP_FORK消息写入共享内存时,监视器会将与父进程相关联的所有卷影副本克隆到子进程,使分支进程中的安全关键数据仍然受到保护;
为了防止use-after-free攻击,当发出OP_FREE消息时,监视器将从阴影查找表或卷影堆栈中删除所有相关的卷影副本。
本发明提出了一种基于TrustZone的内核数据完整性保护方法,通过该方法,监视器独立操作系统运行于安全世界,保护操作系统内核的完整性。评估结果表明,本发明方法是正确、有效和高效的。
本发明具有如下有益效果:
1)提供了一个独立操作系统运行的监控器,通过带外方式(Out-of-band)以较少的开销、较高可靠性保护操作系统内核(包括应用程序)免受内存损坏攻击;
2)扩展了CFI最初提出的影子堆栈概念,不仅保护返回地址,还保护其他安全关键数据,如函数指针、vtable指针和用户注释的敏感非控制数据。;
3)提供了Normal World与Secure World之间的快速通信机制,因此无需上下文切换即可高效执行完整性检查;
附图说明
图1为系统架构概览图。
图2为共享内存的多个环形缓冲区和监视器管理的查找表图。
图3为阴影查找表的工作流程图。
具体实施方式
本发明提供了一种基于TrustZone的内核数据完整性保护方法,包括:
步骤1,向编译器输入内核(及待保护的应用程序)的源代码,编译器执行静态分析,确定所有需要保护的安全关键数据,并在程序中插入必要的监控代码,以向独立操作系统运行的监控器报告与需要保护的目标相关的操作;
步骤2,监视器接收到受保护程序中安全关键数据的合法(即原程序定义的)操作后,在专用表中生成或更新安全关键数据的卷影副本。稍后,当使用该安全关键数据时,监视器将通过比较其运行时值和卷影副本来检查关键数据的完整性。如果检测到不匹配,则表示受保护程序中安全关键数据被非法更改。作为响应,监视器将终止相应的程序,并通过proc文件系统向用户报告违规情况。
步骤1中,所述需要保护的目标包含:
返回地址;
函数指针;
Vtables指针;
用户注释的非控制数据。
步骤1包括如下步骤:
步骤1-1,编译器定位目标,确定在受保护的应用程序或内核中插入代码的位置,以报告目标内存数据;
步骤1-2,编译器进行代码插装,得到插入了安全代码的增强程序;
步骤1-3,增强程序中对安全关键数据的操作通过高速共享内存OCRAM从NormalWorld传递到Secure World的监控器中;
步骤1-4,受保护程序向监视器报告五种类型的操作,包括OP_STORE、OP_LOAD、OP_PUSH、OP_POP、OP_FORK和OP_FREE,来监控安全关键数据的生命周期。OP_STORE指写内存就是存储操作,将数据从寄存器写入到内存。OP_LOAD指读内存,也就是加载操作,从内存读数据到寄存器。OP_PUSH指将数据压入栈中。OP_POP指从栈中弹出数据。OP_FORK是复制进程的操作,程序一开始就会产生一个进程,当这个进程执行到OP_FORK时,OP_FORK就会复制一份原来的进程即就是创建一个新进程,称子进程,而原来的进程称为父进程,此时父子进程是共存的,它们一起向下执行代码。OP_FREE操作显示系统使用和空闲的内存情况,包括物理内存、交互区内存和内核缓冲区内存。
步骤1-2包括:
步骤1-2-1,通过堆或栈上帧指针的固定偏移量计算返回地址对象的位置;
步骤1-2-2,如果内存对象声明为函数指针类型,如指向函数地址的特殊指针类型,则直接检测到函数指针;如果函数指针是从其他类型转换而来的,如void*类型,则执行流分析来跟踪一组内存对象,所述内存对象的类型不是函数指针,而是从函数指针传播到函数指针;
步骤1-2-3,Vtable指针的标识是通过C++ABI实现的;
步骤1-2-4,使用属性注释(__attribute__((annotate("sensitive"))))来定位用户注释的非控制数据。
步骤1-3包括如下步骤:
步骤1-3-1,共享内存被组织为块矩阵,矩阵的每一列表示一个环形缓冲区;一个单独的环形缓冲区被分配给增强程序的操作的其中一组进程,这些进程的任务标识符具有相同的哈希值(即tid);当报告安全关键数据的操作时,程序进程会将环形缓冲区之一的一组进程推送到相应的环中;
步骤1-3-2,环形缓冲区中的每一组进程都由编写共享内存的程序签名,在程序启动时,编译器插入的额外监控代码将与监视器一起计算公私密钥对,公钥保存在监视器中,程序使用私钥对写入共享内存的操作进行签名,在执行任何操作请求之前,监视器将首先使用与程序ID关联的公钥检查签名是否有效;签名确保只有经过身份验证的进程才能写入环形缓冲区,从而防止恶意程序写入任意环形缓冲区。
步骤1-3-3,使用OCRAM作为Normal World和Secure World之间的共享内存。OCRAM在内存地址空间中静态映射,能够通过Advanced eXtensible Interface(AXI)总线直接访问。
步骤2中,监视器是隔离执行在ARM的TrustZone技术所分隔的Secure World中的。
步骤2中,隔离执行允许两段不同代码完全隔离运行,将安全关键组件和其他非安全关键的软件组件放在不同域中运行。
步骤2中,ARM的TrustZone技术是一种系统范围的安全解决方案,ARM提供两个执行域:Normal World和Secure World,隔离了内存空间和正确配置的安全外围设备。
步骤2中,所述在专用表中生成或更新关键数据的卷影副本,具体包括:监视器管理的专用表分为两种:一种是阴影查找表,另一种是非返回数据和返回地址的卷影堆栈.
步骤2中,所述监视器接收到受保护程序中安全关键数据的合法(即原程序定义的)操作后,在专用表中生成或更新关键数据的卷影副本,具体包括:
为了报告函数指针、vtable指针或与安全相关的非控制数据的初始化或赋值,包含数据地址和内容的OP_STORE消息被写入共享内存,作为响应,监视器将在卷影堆栈中生成相关数据地址和内容的卷影副本;
当返回地址需要保护时,OP_PUSH消息将写入共享内存,收到OP_PUSH消息后,监视器将在卷影堆栈上制作返回地址的卷影副本;
当程序中使用安全关键数据时,OP_LOAD或OP_POP消息将写入共享内存,通知监视器执行完整性检查,根据操作类型,监视器将在阴影查找表中搜索非返回数据,并在卷影堆栈中搜索返回地址,如果未找到安全关键数据的卷影副本,或者安全关键数据与程序报告的运行时值不匹配,则会检测到冲突;
当OP_FORK消息写入共享内存时,监视器会将与父进程相关联的所有卷影副本克隆到子进程,使分支进程中的安全关键数据仍然受到保护;
为了防止use-after-free攻击,当发出OP_FREE消息时,监视器将从阴影查找表或卷影堆栈中删除所有相关的卷影副本。
实施例
1、系统场景
图1是系统架构概览图,主要由编译器和监视器两部分组成。其中ARM TrustZone提供两个执行域:Normal World和Secure World。隔离了内存空间和正确配置的安全外围设备,监视器在Secure World中运行。两个执行域之间的通信通过使用OCRAM构成的共享内存,OCRAM在内存地址空间中静态映射,可以通过Advanced eXtensible Interface(AXI)总线直接访问。各组成部分功能如下:
编译器:编译器执行静态分析,确定所有需要保护的安全关键数据,并在程序中插入必要的监控代码,以向独立操作系统运行的监控器报告与需要保护的目标相关的操作。
监视器:监视器接收到受保护程序中安全关键数据的合法(即原程序定义的)操作后,在专用表中生成或更新安全关键数据的卷影副本。稍后,当使用该安全关键数据时,监视器将通过比较其运行时值和卷影副本来检查关键数据的完整性。如果检测到不匹配,则表示受保护程序中安全关键数据被非法更改。作为响应,监视器将终止相应的程序,并通过proc文件系统向用户报告违规情况。
共享内存:两个世界之间的通信依靠共享内存,增强程序中对安全关键数据的操作通过高速共享内存OCRAM从Normal World传递到Secure World的监控器中,以便监视器在专用表中生成或更新安全关键数据的卷影副本。
图2是共享内存的多个环形缓冲区和监视器管理的查找表图,在将对安全关键数据的操作写入共享内存时的具体功能如下:
一个单独的环形缓冲区被分配给一组具有相同任务标识符散列(即tid)的进程。当报告安全关键数据的操作时,程序进程会将环形缓冲区之一的一组进程推送到相应的环中。通过这种设计,监视器允许在不同CPU内核上运行的多个进程同时写入不同的环形缓冲区。环形缓冲区中的每一组进程都由编写共享内存的程序签名。例如:在程序启动时,编译器插入的额外监控代码将与监视器计算一个公私密钥对。公钥保存在监视器中,程序使用私钥对写入共享内存的消息进行签名。在执行任何操作请求之前,监视器将首先使用与任务ID关联的公钥检查签名是否有效。签名确保只有经过验证的进程才能写入环形缓冲区,从而防止恶意程序写入任意环形缓冲区。
监视器管理的专用表分为两种:一种是阴影查找表,另一种是非返回数据和返回地址的卷影堆栈;
2、监视器查找阴影查找表流程
如图3所示,非返回目标数据存储在阴影查找表中,哈希bucket存储任务ID、安全关键数据的内存位置(称为数据地址)、数据值和时间戳。当增强程序中对安全关键数据的操作写入共享内存时,监视器将首先通过验证消息签名来确定写入操作是否经过身份验证。身份验证后,监控器将根据消息中嵌入的任务ID和数据地址计算哈希键。计算密钥后,监视器将根据消息类型对相应的哈希bucket进行操作。例如,如果类型为OP_STORE,那么在找不到匹配项的情况下,监控器将创建一个新的bucket来对安全关键数据进行卷影复制,或者更新表中现有bucket的数据值。如果消息类型为OP_LOAD,监视器将比较安全关键数据的运行时值与存储的卷影副本。如果不匹配或没有发现bucket,监视器将发出完整性冲突。
具体实现中,本申请提供计算机存储介质以及对应的数据处理单元,其中,该计算机存储介质能够存储计算机程序,所述计算机程序通过数据处理单元执行时可运行本发明提供的一种基于TrustZone的内核数据完整性保护方法的发明内容以及各实施例中的部分或全部步骤。所述的存储介质可为磁碟、光盘、只读存储记忆体(read-only memory,ROM)或随机存储记忆体(random access memory,RAM)等。
本领域的技术人员可以清楚地了解到本发明实施例中的技术方案可借助计算机程序以及其对应的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以计算机程序即软件产品的形式体现出来,该计算机程序软件产品可以存储在存储介质中,包括若干指令用以使得一台包含数据处理单元的设备(可以是个人计算机,服务器,单片机。MUU或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本发明提供了一种基于TrustZone的内核数据完整性保护方法,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。
Claims (10)
1.一种基于TrustZone的内核数据完整性保护方法,其特征在于,包括如下步骤:
步骤1,向编译器输入内核及待保护的应用程序的源代码,编译器执行静态分析,确定所有需要保护的安全关键数据,并在程序中插入必要的监控代码,以向独立操作系统运行的监控器报告与需要保护的目标相关的操作;
步骤2,监视器接收到受保护程序中安全关键数据的合法操作后,在专用表中生成或更新关键数据的卷影副本;当使用所述安全关键数据时,监视器将通过比较运行时值和卷影副本来检查关键数据的完整性,如果检测到不匹配,则表示受保护程序中安全关键数据被非法更改,作为响应,监视器将终止相应的程序,并通过proc文件系统向用户报告违规情况。
2.根据权利要求1所述的方法,其特征在于,步骤1中,所述安全关键数据包含:
返回地址;
函数指针;
Vtables指针;
用户注释的非控制数据。
3.根据权利要求2所述的方法,其特征在于,步骤1包括如下步骤:
步骤1-1,编译器定位目标,确定在待保护的应用程序或内核中插入代码的位置,以报告目标内存数据;
步骤1-2,编译器进行代码插装,得到插入了安全代码的增强程序;
步骤1-3,增强程序中对安全关键数据的操作,通过高速共享内存OCRAM从NormalWorld传递到Secure World的监控器中;
步骤1-4,受保护程序向监视器报告五种类型的操作,包括OP_STORE、OP_LOAD、OP_PUSH、OP_POP、OP_FORK和OP_FREE,来监控安全关键数据的生命周期。
4.根据权利要求3所述的方法,其特征在于,步骤1-2包括:
步骤1-2-1,通过堆或栈上帧指针的固定偏移量计算返回地址对象的位置;
步骤1-2-2,如果内存对象声明为函数指针类型,则直接检测到函数指针;如果函数指针是从其他类型转换而来的,则执行流分析来跟踪一组内存对象,所述内存对象的类型不是函数指针,而是从函数指针传播到函数指针;
步骤1-2-3,通过C++ABI实现Vtable指针的标识;
步骤1-2-4,使用属性注释(__attribute__((annotate("sensitive"))))来定位用户注释的非控制数据。
5.根据权利要求4所述的方法,其特征在于,步骤1-3包括如下步骤:
步骤1-3-1,共享内存被组织为块矩阵,矩阵的每一列表示一个环形缓冲区;一个单独的环形缓冲区被分配给增强程序的操作的其中一组进程,一组进程的任务标识符具有相同的哈希值;当报告安全关键数据的操作时,程序进程会将环形缓冲区之一的一组进程推送到相应的环中;
步骤1-3-2,环形缓冲区中的每一组进程都由编写共享内存的程序签名,在程序启动时,编译器插入的额外监控代码将与监视器一起计算公私密钥对,公钥保存在监视器中,程序使用私钥对写入共享内存的操作进行签名,在执行任何操作请求之前,监视器将首先使用与程序ID关联的公钥检查签名是否有效;签名确保只有经过身份验证的进程才能写入环形缓冲区,从而防止恶意程序写入任意环形缓冲区;
步骤1-3-3,使用OCRAM作为Normal World和Secure World之间的共享内存,OCRAM在内存地址空间中静态映射,能够通过AXI总线直接访问。
6.根据权利要求5所述的方法,其特征在于,步骤2中,监视器是独立操作系统运行在ARM的TrustZone技术所分隔的Secure World中的。
7.根据权利要求6所述的方法,其特征在于,步骤2中,隔离执行允许两段不同代码完全隔离运行,将安全关键组件和其他非安全关键的软件组件放在不同域中运行。
8.根据权利要求7所述的方法,其特征在于,步骤2中,ARM提供两个执行域:NormalWorld和Secure World,隔离了内核空间和正确配置的安全外围设备。
9.根据权利要求8所述的方法,其特征在于,步骤2中,所述专用表分为两种:一种是阴影查找表,另一种是非返回数据和返回地址的卷影堆栈。
10.根据权利要求9所述的方法,其特征在于,步骤2中,所述监视器接收到受保护程序中安全关键数据的合法操作后,在专用表中生成或更新安全关键数据的卷影副本,具体包括:
为了报告函数指针、vtable指针或与安全相关的非控制数据的初始化或赋值,包含数据地址和内容的OP_STORE消息被写入共享内存;作为响应,监视器将在卷影堆栈中生成相关数据地址和内容的卷影副本;
当返回地址需要保护时,OP_PUSH消息将写入共享内存,收到OP_PUSH消息后,监视器将在卷影堆栈上制作返回地址的卷影副本;
当程序中使用安全关键数据时,OP_LOAD或OP_POP消息将写入共享内存,通知监视器执行完整性检查,根据操作类型,监视器将在阴影查找表中搜索非返回数据,并在卷影堆栈中搜索返回地址,如果未找到安全关键数据的卷影副本,或者安全关键数据与程序报告的运行时值不匹配,则会检测到冲突;
当OP_FORK消息写入共享内存时,监视器会将与父进程相关联的所有卷影副本克隆到子进程,使分支进程中的安全关键数据仍然受到保护;
为了防止use-after-free攻击,当发出OP_FREE消息时,监视器将从阴影查找表或卷影堆栈中删除所有相关的卷影副本。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211514849.1A CN115964758A (zh) | 2022-11-30 | 2022-11-30 | 一种基于TrustZone的内核数据完整性保护方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211514849.1A CN115964758A (zh) | 2022-11-30 | 2022-11-30 | 一种基于TrustZone的内核数据完整性保护方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115964758A true CN115964758A (zh) | 2023-04-14 |
Family
ID=87362464
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211514849.1A Pending CN115964758A (zh) | 2022-11-30 | 2022-11-30 | 一种基于TrustZone的内核数据完整性保护方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115964758A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116662037A (zh) * | 2023-07-24 | 2023-08-29 | 杭州鉴智机器人科技有限公司 | 一种共享内存的处理方法、装置、电子设备及存储介质 |
-
2022
- 2022-11-30 CN CN202211514849.1A patent/CN115964758A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116662037A (zh) * | 2023-07-24 | 2023-08-29 | 杭州鉴智机器人科技有限公司 | 一种共享内存的处理方法、装置、电子设备及存储介质 |
CN116662037B (zh) * | 2023-07-24 | 2023-10-20 | 杭州鉴智机器人科技有限公司 | 一种共享内存的处理方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108090346B (zh) | 一种基于数据流监控的代码复用攻击防御方法及系统 | |
US11748468B2 (en) | Dynamic switching between pointer authentication regimes | |
EP3207485B1 (en) | Code pointer authentication for hardware flow control | |
Volckaert et al. | Cloning your gadgets: Complete ROP attack immunity with multi-variant execution | |
US8990934B2 (en) | Automated protection against computer exploits | |
US20080077767A1 (en) | Method and apparatus for secure page swapping in virtual memory systems | |
US20020194389A1 (en) | Secure machine platform that interfaces to operating systems and customized control programs | |
CN109359487A (zh) | 一种基于硬件隔离的可扩展安全影子存储及标签管理方法 | |
US7251735B2 (en) | Buffer overflow protection and prevention | |
Williams et al. | CPU support for secure executables | |
CN112639789A (zh) | 用于存储器完好性检查的完好性树 | |
CN115964758A (zh) | 一种基于TrustZone的内核数据完整性保护方法 | |
Park et al. | Microarchitectural protection against stack-based buffer overflow attacks | |
CN112463287A (zh) | 基于插桩的访问请求处理方法及系统 | |
Katsunuma et al. | Base address recognition with data flow tracking for injection attack detection | |
CN109977665B (zh) | 基于tpcm的云服务器启动过程防窃取和防篡改方法 | |
US11556645B2 (en) | Monitoring control-flow integrity | |
EP2720170B1 (en) | Automated protection against computer exploits | |
Wang et al. | Kernel and application integrity assurance: Ensuring freedom from rootkits and malware in a computer system | |
Shahriar et al. | Monitoring buffer overflow attacks: A perennial task | |
Taassori | Low Overhead Secure Systems | |
Ahmad | Defeating Critical Threats to Cloud User Data in Trusted Execution Environments | |
CN113806714A (zh) | 一种应用程序的白名单信息安全传输方法与装置 | |
Khanvilkar | Guaranteeing memory integrity in secure processors with Dynamic Trees | |
Josef et al. | Analysis of security possibilities of platforms for 3D graphics |
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 |