CN109840410B - 一种进程内数据隔离与保护的方法和系统 - Google Patents
一种进程内数据隔离与保护的方法和系统 Download PDFInfo
- Publication number
- CN109840410B CN109840410B CN201711460396.8A CN201711460396A CN109840410B CN 109840410 B CN109840410 B CN 109840410B CN 201711460396 A CN201711460396 A CN 201711460396A CN 109840410 B CN109840410 B CN 109840410B
- Authority
- CN
- China
- Prior art keywords
- instruction
- register
- address
- range
- library function
- 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
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
本发明涉及一种进程内数据隔离与保护的方法,包括将应用程序划分为主函数区域和库函数区域;处理器设置PC范围寄存器、数据限界寄存器和库函数返回地址寄存器;当该处理器执行库函数的访存指令时,判断该访存指令的访存地址是否处于该数据限界寄存器的范围;当处于该范围时,继续执行该访存指令,反之则报告非法状态并进行异常处理;当该处理器执行从该库函数区域到该主函数区域的跳转返回指令时,如该跳转返回指令的目的地址等于该预期返回地址,则继续执行该跳转返回指令;反之则报告非法状态并进行异常处理。本发明可以大大降低运行时的安全检查软件指令开销,有效提高应用程序安全性和执行效率。
Description
技术领域
本发明属于计算机领域,计算机系统结构方向,具体涉及一种软硬件协同实现的内存安全结构系统。
背景技术
传统的计算机系统的数据保护大多数基于虚拟内存机制进行保护。虚拟地址和进程号的映射关系(页表)进行访问权限管理。但这种管理只限于进程之间的地址保护,不能提供对同一进程内部的数据隔离和保护功能。随着计算机应用程序的复杂度不断增加,应用程序不可避免的要调用各种第三方代码。而第三方代码的安全性和可靠性难以得到保证,这就对进程内部的数据保护提出了挑战。
如何防止高优先级软件影响破坏应用程序的执行结果,如何实现同一应用程序内部不同区域之间的内存隔离,通常需要软硬件协同实现。近年来,安全研究人员提出一些内存隔离的研究成果,通过软硬件结合的方式,实现对应用程序的运行时安全保护。
针对进程内隔离,Intel处理器安全领域已有的研究成果可以分为两个类型:域隔离(domain-based isolation)和基于地址的隔离(address-based isolation)。这两类技术都是对内存进行区域划分,主要区别在于防御的漏洞类型不同,划分对象的准则依据不同。
1、Intel处理器的域隔离方法,例如:
MPK(Memoryprotection keys,内存保护关键字),MPK实现隔离的方法是,把敏感数据放在使用特殊保护关键字的页面中,称为敏感域(sensitive domain)。通过修改读写使能位,改变敏感域的访问权限。
AES-NI encryption:通过加密实现内存隔离。Intel为此定义了专门的加密指令,称为AES-NI。这种指令集能够加快AES加密基本块的执行速度。
Intel SGX(Intel Software Guard Extension):主要提供了一些指令用于创建一个可信执行环境(TEE)Enclave,主要目的是保护应用程序的安全敏感代码不被恶意的高优先级软件中断或破坏执行。
2、Intel处理器中基于地址的隔离方法(Address-based isolation),把地址空间分为两个或者多个区域,给程序插桩实现运行时检查。可以简单区分为敏感数据区与不敏感数据区,只允许某些特殊指令能够访问敏感数据区。访问敏感数据区的load和store指令事先被编译器插桩。运行时进行边界比较,确定访问对象是否允许访问。
例如:MPX(memoryprotection extensions):Intel MPX是对指针访问进行空间范围检查的一套处理器硬件辅助机制,从第六代Core处理器(Skylake)开始支持。在编译器、运行时库和操作系统的支持下,英特尔MPX通过检查指针引用,判断其正常编译时的意图是不是因为缓冲区溢出而造成的运行时恶意利用,从而提高软件的安全性。
3、用于RISC指令集的内存隔离方法。
RISC指令集的结构设计人员也提出一些相应的安全研究内容。
Physical Memory Protection:物理内存保护,是RISC-V指令集提出的一种内存保护机制。在寄存器中配置一些物理内存区域,设定好该区域的读写执行权限。在取指和访存时检查对应地址的权限是否正确。
Trustzone:通过处理器扩展隔离所有SOC硬件和软件资源,使他们分别处于两个区域:用于安全子系统的安全区域及用于存储其他所有内容的普通区域。
现有技术存在的问题和缺点:
1、传统的进程内地址保护也可以通过调用内核的mprotect()等调用,来设定对特定页面的读写权限来保护。但是这种调用内核的保护方法,软件开销比较大,对进程内部的频繁函数调用来说并不实用。
2、现有技术的多种数据隔离的实现方法,主要是对程序访问的特定数据对象进行隔离和监控。如MPX在代码中对敏感数据的读写实现插桩。MPX对每一条关键区域的访存指令插桩,比较它的访问地址是否超出关键变量的合法区域,在程序执行过程中找出地址越界访问。MPX的插桩监控只能针对敏感数据的显式访问指令,对于程序语义依赖较多,若程序跳过变量使用指针访问同样地址,很容易产生MPX无法发现的越界访问。同时,MPX的软件开销很大,对敏感数据访问密集时,可以达到4倍的运行时开销;
3、在MPX等方法中,要有效保障第三方代码,需要第三方代码本身经过精心设计,避免指针引用越界,而不能完全依靠编译器。而这对大量不同源的第三方代码来说是不现实的,因此并不能完全解决前面提出的进程空间内的地址保护问题。
发明内容
为解决上述问题,本发明公开了一种基于处理器程序计数器和访存地址关联实现进程内数据隔离与保护的方法。
具体来说,本发明涉及一种进程内数据隔离与保护方法,包括以下步骤:
步骤1,将应用程序的进程可执行代码地址区域划分为主函数区域和库函数区域;
步骤2,操作系统内核设置该应用程序的主函数的PC范围,并将该PC范围保存在PC范围寄存器;
步骤3,该主函数设置该应用程序的库函数的可访问地址范围,并将该可访问地址范围保存在数据界限寄存器;
步骤4,该主函数调用该库函数时,处理器设置该库函数的返回地址寄存器,以保存该主函数调用该库函数的预期返回地址;
步骤5,当执行该库函数的访存指令时,检查该访存指令的访存地址是否属于该数据限界寄存器所指示的内存区域;当属于于该数据限界寄存器所指示的内存区域时,继续执行该访存指令,反之则报告非法状态并进行异常处理;
步骤6,当该处理器判定当前执行的是从该库函数区域到该主函数区域的跳转返回指令时,检查该跳转返回指令的目的地址是否等于该预期返回地址;当相等时则继续执行该跳转返回指令,反之则报告非法状态并进行异常处理。
本发明所述的进程内数据隔离与保护方法,其中仅该操作系统内核在加载该应用程序产生新进程或调度执行进程之前能对该PC范围寄存器进行修改,具体过程包括:在该应用程序的编译过程中将主函数的PC范围保存在可执行文件中;该操作系统内核加载该应用程序时,在该可执行文件中得到该PC范围,对该PC范围寄存器进行配置;在进程切换过程中,为每个进程保存或恢复相应的PC范围寄存器;当该应用程序的PC值处于该PC范围寄存器之外,当前指令为库函数指令,如该库函数指令修改该PC范围寄存器或者该数据限界寄存器,报告非法状态并进行异常处理。
本发明所述的进程内数据隔离与保护方法,在该应用程序的执行过程中,仅该主函数能对该数据限界寄存器进行修改,具体包括:当该处理器判定当前指令的PC值处于该PC范围时,允许该当前指令对该数据限界寄存器进行配置,否则报告非法状态并进行异常处理。
本发明所述的进程内数据隔离与保护方法,还包括设置寄存器配置指令,以分别对该PC范围寄存器、该数据限界寄存器和该库函数返回地址寄存器进行配置;该寄存器配置指令包括读/写该PC范围寄存器的第一读写指令、读/写该数据限界寄存器的第二读写指令,读/写该返回地址寄存器的库函数调用指令和库函数调用返回指令。
本发明所述的进程内数据隔离与保护方法,其中当该处理器执行该第一读写指令时,判断当前处理器是否在内核态,如果是则执行指令,反之则报告非法状态并进行异常处理;当该处理器执行该第二读写指令时,根据该PC是否落入PC范围寄存器判断当前进程是否是主函数,如果是则执行指令,反之则报告非法状态并进行异常处理;当该处理器执行该库函数调用指令时,将该预期返回地址写入该返回地址寄存器,当该处理器执行该库函数调用返回指令时,如果该库函数调用返回指令的PC值没有落入该PC范围,而该库函数调用返回指令的目标PC落入该PC范围,则比较该目标PC是否等于该预期返回地址,如果是则执行指令,反之则报告非法状态并进行异常处理。
本发明还涉及一种进程内数据隔离与保护系统,包括以下模块:
函数区域划分模块,用于将应用程序的进程可执行代码地址区域划分为主函数区域和库函数区域;
PC范围设置模块,用于操作系统内核设置该应用程序的主函数的PC范围,并将该PC范围保存在PC范围寄存器;
可访问地址设置模块,用于该主函数设置该应用程序的库函数的可访问地址范围,并将该可访问地址范围保存在数据界限寄存器;
返回地址设置模块,用于该主函数调用该库函数时,处理器设置该库函数的返回地址寄存器,以保存该主函数调用该库函数的预期返回地址;
访存指令保护模块,用于当执行该库函数的访存指令时,检查该访存指令的访存地址是否属于该数据限界寄存器所指示的内存区域;当属于于该数据限界寄存器所指示的内存区域时,继续执行该访存指令,反之则报告非法状态并进行异常处理;
跳转返回指令保护模块,用于当该处理器判定当前执行的是从该库函数区域到该主函数区域的跳转返回指令时,检查该跳转返回指令的目的地址是否等于该预期返回地址;当相等时则继续执行该跳转返回指令,反之则报告非法状态并进行异常处理。
本发明所述的进程内数据隔离与保护系统,其中所述PC范围设置模块中,仅该操作系统内核在加载该应用程序产生新进程或调度执行进程之前能对该PC范围寄存器进行修改。
本发明所述的进程内数据隔离与保护系统,其中所述可访问地址寄存器设置模块中,在该应用程序的执行过程中,仅该主函数能对数据限界寄存器进行修改。
本发明所述的进程内数据隔离与保护系统,还包括:
寄存器配置模块,用于设置寄存器配置指令,以分别对该PC范围寄存器、该数据限界寄存器和该返回地址寄存器进行配置,该寄存器配置指令包括读写该PC范围寄存器的第一读写指令、读写该数据限界寄存器的第二读写指令和读写该返回地址寄存器的库函数调用指令和库函数调用返回指令;
读写指令判断模块,用于对当前进程的读写指令进行识别;其中当执行第一读写指令时,判断当前处理器是否在内核态,如果是则执行指令,反之则报告非法状态并进行异常处理;当执行该第二读写指令时,根据该PC范围判断当前PC是否属于主函数,如果是则执行指令,反之则报告非法状态并进行异常处理;当该处理器执行该库函数调用指令时,将该预期返回地址写入该返回地址寄存器,当该处理器执行该库函数调用返回指令时,如果该库函数调用返回指令的PC值没有落入该PC范围,而该库函数调用返回指令的目标PC落入该PC范围,则比较该目标PC是否等于该预期返回地址,如果是则执行指令,反之则报告非法状态并进行异常处理。
本发明的检查点是函数调用,对于数据的保护更加完善;访存地址检查主要依赖于访存指令的硬件实现,不需要再加入软件指令进行越界检查,可以大大降低运行时的软件指令开销;通过把应用程序划分成可信的主函数和库函数区域两种不同的安全级别,为用户程序不同区域赋以不同的权限,提高应用程序安全性。
附图说明
图1是本发明对应的运行时进程空间划分示意图。
图2是本发明实施例的数据保护执行流程图。
图3是本发明实施例的指令五级流水线处理比较的过程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明的基于程序计数器和访存地址实现的进程内数据隔离与保护进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本发明提出一种基于应用程序PC值和待访问数据地址关联,实现同一应用程序内部的内存隔离方法。
本发明的实现依赖于程序PC,PC(program counter)指程序计数器,是用于存放下一条指令所在单元的地址的地方。当执行一条指令时,首先需要根据PC中存放的指令地址,将指令由内存取到指令寄存器中,此过程称为“取指令”。与此同时,PC中的地址或自动加1或由转移指针给出下一条指令的地址。此后经过分析指令,执行指令。完成第一条指令的执行,而后根据PC取出第二条指令的地址,如此循环,执行每一条指令。本发明所要解决的技术问题是,同一进程内部,如何限制不可信代码可能对安全敏感数据造成破坏和越界访问。本发明的实施目的是实现用户进程内部的内存隔离和数据保护。本发明重点解决非预期的地址访问越界,特别是缓冲区溢出问题。
缓冲区溢出,简单的说就是计算机对接收的输入数据没有进行有效的检测(理想的情况是程序检查数据长度并不允许输入超过缓冲区长度的字符),向缓冲区内填充数据时超过了缓冲区本身的容量,而导致数据溢出到被分配空间之外的内存空间,使得溢出的数据覆盖了其他内存空间的数据。
应用程序执行函数调用时,由于参数长度不可控或者被调函数本身不可信,可能出现缓冲区溢出破坏同一进程内部的其他数据。如栈内的函数返回值或者返回地址,这些数据直接影响程序的控制流方向和执行结果。也有可能出现堆溢出,修改堆内分配的数据值。
这里的被调函数,可以是C/C++中的库函数,也可以是web浏览器调用的javascript实现的用户接口,若没有数据隔离措施,都有可能导致主程序的数据被破坏。
C语言中大多数缓冲区溢出问题可以直接追溯到标准C库。最有害的罪魁祸首是不进行自变量检查的、有问题的字符串操作等。
一些标准函数很有可能使程序陷入困境。如以下函数列表:
strcpy(),strcat(),sprint(),scanf(),sscanf(),fscanf(),vfscanf(),vsprintf(),vscanf(),vsscanf(),streadd(),strecpy(),strtrns()。
比如strcpy()函数将源字符串复制到缓冲区。没有指定要复制字符的具体数目。复制字符的数目直接取决于源字符串中的数目。如果源字符串碰巧来自用户输入,且没有专门限制其大小,则可能会引发复制目标的访问越界问题。
一、本发明实施例对应的程序内存结构框架
本发明的进程运行时空间可以划分为如下内存区域。如图1所示。
应用程序运行时空间101:包含数据段102、代码段103与栈空间104。
数据段102:数据段102包含库函数可以访问的数据段107,由主函数授权。
代码段103:包含主函数代码105与库函数代码106,哪部分程序代码是主函数代码可以由程序员为函数添加关键字属性确定,主函数代码105对库函数代码106有调用关系。
栈空间104:栈空间的初始化由内核指定一块地址范围,程序开始执行时,主函数的栈指针指向初始值,然后单向增长,主函数调用库函数前,配置好库函数代码106可以访问的栈空间108。
主函数代码段105:主函数代码105对库函数代码106有调用关系,并且在调用之前指定106可以访问的数据区107以及106可以访问的栈空间108。
库函数代码段106:106能够访问数据区107和栈空间108。
库函数可以访问的数据107:由主函数代码105配置。
库函数可以访问的栈空间108:由主函数代码105配置。
二、本发明实施例对应的寄存器类型
新增寄存器分为三种,它们的名称和功能如表1所示。
表1本发明新增的寄存器类型及其功能
三、本发明实施例对应的寄存器读写指令
新增的指令分为四种,它们的名称和功能表如表2所示。
表2本发明新增的指令及其功能
四、本发明实施例的执行流程
主函数调用LibC函数执行应用程序时,用户自主选择是否启用地址保护措施,就像MPX对应的mpx_exec命令。一旦启用地址保护,接下来的被调函数只能访问特定的数据区和向下增长的栈空间,直到应用程序结束库函数的调用返回到主函数内,这次地址保护自动结束。
本发明的执行流程图如图2所示,步骤文字描述如下:
步骤201,在编译应用程序时,按照代码可靠程度,把二进制文件的代码段划分为两部分,主函数与库函数区域。主函数通常经函数调用进入库函数区域。即使没有源码的二进制文件,也可以进行后端处理,同样对二进制文件进行可靠程度分段处理。编译器将分区信息作为附属信息置入可执行文件。
步骤202,在主函数内部,调用库函数之前,编译器插入应用程序接口函数,控制库函数可以访问的数据区和栈指针当前位置。
步骤203,在启动地址保护前,由内核读取分区信息并填写主函数的PC范围到PC范围寄存器。
步骤204,主函数代码开始执行。
步骤205,主函数调用库函数,执行插桩指令,配置允许库函数区域访存的数据限界寄存器。调用库函数,调用之前,填写返回地址到返回地址寄存器。
步骤206,库函数区域执行时,硬件实时检查当前访存指令的访存地址是否落入事先配置的安全许可区域。
步骤207,若没有发生越界访问,库函数执行返回,比较返回地址是否等于返回地址寄存器保存的PC值,若不等,进入异常处理程序,若相等,则返回主函数的返回点。
步骤208,库函数执行时如果发生越界访问,则产生异常处理。
步骤209,主函数执行结束或者异常处理程序执行完毕,程序执行结束。
五、本发明实施例的CPU流水线
图3是本发明实施例的指令五级流水线处理比较的过程示意图,如图3所示,为了实现地址越界判断,流水线中增加了一系列地址比较,若访存地址或者分支跳转目标地址超出指定范围,产生对应的异常信号:
步骤301,取指阶段(IF,Instruction Fetch),根据PC值从icache取出指令。
步骤302,译码阶段(ID,Instruction Decode),取到指令后解析其功能,判断是否是LD/ST/分支跳转指令,若是则判断当前执行代码PC所属的范围:内核、主函数或是库函数。判断依据为指令当前的特权级以及主函数PC范围寄存器。若特权级处于内核态,则执行的是内核代码,不进行读写越界以及跳转是否正确的判断;若当前指令PC在主函数PC范围寄存器所存储的地址范围内,则执行的是主函数代码,不进行读写是否越界的判断;若特权级不处于内核态,当前指令PC又不在主函数PC寄存器所存储的地址范围内,则执行的是库函数代码,要进行读写越界以及跳转是否正确的检查。
步骤303,执行阶段(EX,Execute)。根据ID阶段的判断结果,若是LD/ST指令,且当前代码属于库函数,则传输读写地址到判断模块,由专有的判断模块判断其是否越界。若是跳转指令,则需要判断跳转的地址是否在主函数PC寄存器所存储的范围内,即是否属于主函数。若跳转地址不属于主函数,且当前指令属于主函数,则把当前指令的下一条指令PC值存入新增的返回地址寄存器;若跳转地址属于主函数,且当前指令属于库函数,则把返回地址和之前存入返回地址寄存器的地址进行比较,若一致,则返回正确,若不同,则返回错误,触发返回地址错误中断。
步骤304,访存阶段(MEM,Memory access)。若专有的判断模块收到地址判断的请求,则判断传输进来的地址是否超过了地址限界寄存器所存储的范围,若是没有超过,则不进行操作,若是超过了范围,则触发库函数读写越界中断。
步骤305,写回阶段(WB,WriteBack),把访存或者计算结果写回目标寄存器。若出现地址越界异常或者返回地址不匹配异常,则PC跳转到异常处理函数,把出现异常指令的PC、访存跳转的地址以及异常产生的原因存入CSR寄存器。
Claims (10)
1.一种进程内数据隔离与保护方法,其特征在于,包括以下步骤:
步骤1,将应用程序的进程可执行代码地址区域划分为主函数区域和库函数区域;
步骤2,操作系统内核设置该应用程序的主函数的PC范围,该PC范围包括属于该主函数区域的可执行代码地址,将该PC范围保存在PC范围寄存器;
步骤3,该主函数设置该应用程序的库函数的可访问地址范围,该可访问地址范围包括该库函数可访问的数据区的起始地址和结束地址,将该可访问地址范围保存在数据界限寄存器;
步骤4,该主函数调用该库函数时,处理器设置该库函数的返回地址寄存器,以保存该主函数调用该库函数的预期返回地址;
步骤5,当执行该库函数的访存指令时,检查该访存指令的访存地址是否属于该数据限界寄存器所指示的内存区域;当属于于该数据限界寄存器所指示的内存区域时,继续执行该访存指令,反之则报告非法状态并进行异常处理;
步骤6,当该处理器判定当前执行的是从该库函数区域到该主函数区域的跳转返回指令时,检查该跳转返回指令的目的地址是否等于该预期返回地址;当相等时则继续执行该跳转返回指令,反之则报告非法状态并进行异常处理。
2.如权利要求1所述的进程内数据隔离与保护方法,其特征在于,仅该操作系统内核在加载该应用程序产生新进程或调度执行进程之前能对该PC范围寄存器进行修改,具体过程包括:在该应用程序的编译过程中将主函数的PC范围保存在可执行文件中;该操作系统内核加载该应用程序时,在该可执行文件中得到该PC范围,对该PC范围寄存器进行配置;在进程切换过程中,为每个进程保存或恢复相应的PC范围寄存器;当该应用程序的PC值处于该PC范围寄存器之外,当前指令为库函数指令,如该库函数指令修改该PC范围寄存器或者该数据限界寄存器,报告非法状态并进行异常处理。
3.如权利要求1所述的进程内数据隔离与保护方法,其特征在于,在该应用程序的执行过程中,仅该主函数能对该数据限界寄存器进行修改,具体包括:当该处理器判定当前指令的PC值处于该PC范围时,允许该当前指令对该数据限界寄存器进行配置,否则报告非法状态并进行异常处理。
4.如权利要求1所述的进程内数据隔离与保护方法,其特征在于,还包括:设置寄存器配置指令,以分别对该PC范围寄存器、该数据限界寄存器和该库函数返回地址寄存器进行配置;该寄存器配置指令包括读/写该PC范围寄存器的第一读写指令、读/写该数据限界寄存器的第二读写指令,读/写该返回地址寄存器的库函数调用指令和库函数调用返回指令。
5.如权利要求4所述的进程内数据隔离与保护方法,其特征在于,当该处理器执行该第一读写指令时,判断当前该处理器是否在内核态,如果是则执行指令,反之则报告非法状态并进行异常处理;当该处理器执行该第二读写指令时,根据该PC是否落入PC范围寄存器判断当前进程是否是主函数,如果是则执行指令,反之则报告非法状态并进行异常处理;当该处理器执行该库函数调用指令时,将该预期返回地址写入该返回地址寄存器,当该处理器执行该库函数调用返回指令时,如果该库函数调用返回指令的PC值没有落入该PC范围,且该库函数调用返回指令的目标PC落入该PC范围,则比较该目标PC是否等于该预期返回地址,如果是则执行指令,反之则报告非法状态并进行异常处理。
6.一种进程内数据隔离与保护系统,其特征在于,包括以下模块:
函数区域划分模块,用于将应用程序的进程可执行代码地址区域划分为主函数区域和库函数区域;
PC范围设置模块,用于操作系统内核设置该应用程序的主函数的PC范围,该PC范围包括属于该主函数区域的可执行代码地址,将该PC范围保存在PC范围寄存器;
可访问地址设置模块,用于该主函数设置该应用程序的库函数的可访问地址范围,该可访问地址范围包括该库函数可访问的数据区的起始地址和结束地址,将该可访问地址范围保存在数据界限寄存器;
返回地址设置模块,用于该主函数调用该库函数时,处理器设置该库函数的返回地址寄存器,以保存该主函数调用该库函数的预期返回地址;
访存指令保护模块,用于当执行该库函数的访存指令时,检查该访存指令的访存地址是否属于该数据限界寄存器所指示的内存区域;当属于于该数据限界寄存器所指示的内存区域时,继续执行该访存指令,反之则报告非法状态并进行异常处理;
跳转返回指令保护模块,用于当该处理器判定当前执行的是从该库函数区域到该主函数区域的跳转返回指令时,检查该跳转返回指令的目的地址是否等于该预期返回地址;当相等时则继续执行该跳转返回指令,反之则报告非法状态并进行异常处理。
7.如权利要求6所述的进程内数据隔离与保护系统,其特征在于,所述PC范围设置模块中,仅该操作系统内核在加载该应用程序产生新进程或调度执行进程之前能对该PC范围寄存器进行修改。
8.如权利要求6所述的进程内数据隔离与保护系统,其特征在于,所述可访问地址寄存器设置模块中,在该应用程序的执行过程中,仅该主函数能对数据限界寄存器进行修改。
9.如权利要求6所述的进程内数据隔离与保护系统,其特征在于,还包括:寄存器配置模块,用于设置寄存器配置指令,以分别对该PC范围寄存器、该数据限界寄存器和该返回地址寄存器进行配置,该寄存器配置指令包括读写该PC范围寄存器的第一读写指令、读写该数据限界寄存器的第二读写指令和读写该返回地址寄存器的库函数调用指令和库函数调用返回指令。
10.如权利要求9所述的进程内数据隔离与保护系统,其特征在于,还包括:读写指令判断模块,用于对当前进程的读写指令进行识别;其中当执行该第一读写指令时,判断当前该处理器是否在内核态,如果是则执行指令,反之则报告非法状态并进行异常处理;当执行该第二读写指令时,根据该PC范围判断当前PC值是否属于主函数,如果是则执行指令,反之则报告非法状态并进行异常处理;当该处理器执行该库函数调用指令时,将该预期返回地址写入该返回地址寄存器,当该处理器执行该库函数调用返回指令时,如果该库函数调用返回指令的PC值没有落入该PC范围,且该库函数调用返回指令的目标PC落入该PC范围,则比较该目标PC是否等于该预期返回地址,如果是则执行指令,反之则报告非法状态并进行异常处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711460396.8A CN109840410B (zh) | 2017-12-28 | 2017-12-28 | 一种进程内数据隔离与保护的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711460396.8A CN109840410B (zh) | 2017-12-28 | 2017-12-28 | 一种进程内数据隔离与保护的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109840410A CN109840410A (zh) | 2019-06-04 |
CN109840410B true CN109840410B (zh) | 2021-09-21 |
Family
ID=66882826
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711460396.8A Active CN109840410B (zh) | 2017-12-28 | 2017-12-28 | 一种进程内数据隔离与保护的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109840410B (zh) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110532767B (zh) * | 2019-08-19 | 2021-06-11 | 上海交通大学 | 面向sgx安全应用的内部隔离方法 |
CN110647764B (zh) * | 2019-09-05 | 2022-10-28 | 上海交通大学 | 针对用户态非易失性内存文件系统的保护方法及系统 |
CN112541166B (zh) * | 2019-09-20 | 2024-09-06 | 杭州中天微系统有限公司 | 一种方法、系统和计算机可读存储介质 |
CN110659458A (zh) * | 2019-10-10 | 2020-01-07 | 陈昶宇 | 支持软件代码数据保密可信执行的中央处理器设计方法 |
CN111797390B (zh) * | 2020-07-14 | 2024-01-26 | 北京元心科技有限公司 | 程序运行方法、装置、电子设备及计算机可读存储介质 |
CN111949596A (zh) * | 2020-08-05 | 2020-11-17 | 上海交通大学 | 基于mpk技术的微内核模块间通讯方法、系统及介质 |
CN111949547A (zh) * | 2020-08-22 | 2020-11-17 | 深圳市捷诚技术服务有限公司 | 基于单片机异常的问题定位方法、单片机、设备以及系统 |
CN112347432B (zh) * | 2020-11-24 | 2021-10-12 | 广芯微电子(广州)股份有限公司 | 一种基于risc-v架构的嵌入式处理器中的程序保护方法及系统 |
CN112559394B (zh) * | 2020-12-01 | 2024-01-12 | 抖音视界有限公司 | 系统库访问方法、装置以及电子设备 |
CN112968979B (zh) * | 2020-12-10 | 2023-05-12 | 江苏奥雷光电有限公司 | 一种多从机系统中有效预防从机地址异常的方法 |
CN112631661B (zh) * | 2020-12-16 | 2024-04-02 | 中国电子信息产业集团有限公司 | 程序安全管控方法、装置、设备及存储介质 |
CN112784261B (zh) * | 2021-01-04 | 2023-10-27 | 北京蓝军网安科技发展有限责任公司 | 用于程序运行的方法及相应的系统、计算机设备和介质 |
CN113312088B (zh) * | 2021-06-29 | 2022-05-17 | 北京熵核科技有限公司 | 一种程序指令的执行方法及装置 |
CN114217882B (zh) * | 2021-07-03 | 2025-03-11 | 湖南国科银河信息技术有限公司 | 在进程中运行应用的方法和装置 |
CN113590487B (zh) * | 2021-08-03 | 2024-04-09 | 北京安天网络安全技术有限公司 | 流量解析程序的校验方法、装置、计算设备及存储介质 |
CN114168936A (zh) * | 2021-11-24 | 2022-03-11 | 浙江大学 | 一种基于Intel MPK与单步模式的Enclave沙盒系统 |
CN116795525A (zh) * | 2022-03-17 | 2023-09-22 | 华为技术有限公司 | 资源控制方法及装置 |
CN116956271A (zh) * | 2022-04-19 | 2023-10-27 | 华为技术有限公司 | 进程内隔离方法、装置、存储介质及计算机程序产品 |
CN115221524B (zh) * | 2022-09-20 | 2023-01-03 | 深圳市科力锐科技有限公司 | 业务数据保护方法、装置、设备及存储介质 |
CN116700786B (zh) * | 2023-08-02 | 2023-11-10 | 成都利普芯微电子有限公司 | 一种微控制器及防止微控制器Flash误擦写的方法 |
CN117762493B (zh) * | 2023-12-27 | 2024-08-30 | 江苏华创微系统有限公司 | 一种支持dsp处理器的内核屏蔽非法地址的方法及装置 |
CN118069143B (zh) * | 2024-01-25 | 2025-03-18 | 龙芯中科技术股份有限公司 | 访存处理方法、装置、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1564098A (zh) * | 2004-04-09 | 2005-01-12 | 南京大学 | 一种防止缓冲区溢出攻击的动态堆栈内存管理方法 |
CN101694686A (zh) * | 2009-09-21 | 2010-04-14 | 北京工业大学 | 基于逻辑隔离的缓冲区溢出动态度量方法 |
CN104252392A (zh) * | 2013-06-28 | 2014-12-31 | 华为技术有限公司 | 一种访问数据缓存的方法和处理器 |
CN105701020A (zh) * | 2014-11-28 | 2016-06-22 | 华为技术有限公司 | 一种内存访问的方法、相关装置和系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EA035448B1 (ru) * | 2014-07-14 | 2020-06-17 | Геннова Биофармасьютикалз Лимитед | СПОСОБ ОЧИСТКИ рчГ-КСФ |
-
2017
- 2017-12-28 CN CN201711460396.8A patent/CN109840410B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1564098A (zh) * | 2004-04-09 | 2005-01-12 | 南京大学 | 一种防止缓冲区溢出攻击的动态堆栈内存管理方法 |
CN101694686A (zh) * | 2009-09-21 | 2010-04-14 | 北京工业大学 | 基于逻辑隔离的缓冲区溢出动态度量方法 |
CN104252392A (zh) * | 2013-06-28 | 2014-12-31 | 华为技术有限公司 | 一种访问数据缓存的方法和处理器 |
CN105701020A (zh) * | 2014-11-28 | 2016-06-22 | 华为技术有限公司 | 一种内存访问的方法、相关装置和系统 |
Non-Patent Citations (2)
Title |
---|
《PTAT: An Efficient and Precise Tool for Collecting Detailed TLB Miss Traces》;Jiutian Zhang等;《2017 IEEE International Symposium on Performance Analysis of Systems and SOftware》;20170713;第137-138页 * |
《末级高速缓存性能优化关键技术研究》;黄涛;《万方数据》;20130722;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN109840410A (zh) | 2019-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109840410B (zh) | 一种进程内数据隔离与保护的方法和系统 | |
KR102770077B1 (ko) | 제한 포인터의 관리 장치 및 방법 | |
KR102383900B1 (ko) | 타겟 메모리 어드레스에 대응한 메모리 속성 유닛의 영역을 식별하는 영역식별 연산 | |
US20180285561A1 (en) | Method and system for detecting kernel corruption exploits | |
KR20080072952A (ko) | 메모리 페이지를 프로그램과 연관시키기 위한 페이지컬러링 | |
US9158710B2 (en) | Page coloring with color inheritance for memory pages | |
JP7645262B2 (ja) | ドメイン遷移無効化構成パラメータ | |
JP2023038361A (ja) | 命令セット内の変更を制御する装置及び方法 | |
US20160232346A1 (en) | Mechanism for tracking tainted data | |
US12174755B2 (en) | Technique for constraining access to memory using capabilities | |
TW202318210A (zh) | 用於處理密封能力之技術 | |
JP2024517627A (ja) | ケイパビリティを使用してメモリへのアクセスを制約するための技法 | |
Davoli et al. | On Kernel's Safety in the Spectre Era (And KASLR is Formally Dead) | |
TWI874556B (zh) | 用於控制對一組記憶體映射的控制暫存器的存取的設備及方法 | |
TWI868250B (zh) | 用於模式間的調用分支指令的裝置、資料處理方法、電腦程式及電腦可讀儲存媒體 | |
US11150887B2 (en) | Secure code patching | |
Lopes et al. | DIHyper: Providing Lifetime Hypervisor Data Integrity | |
JP7369720B2 (ja) | アクションをトリガするための装置及び方法 | |
TW202131191A (zh) | 用於控制對一組記憶體映射的控制暫存器的存取的設備及方法 | |
TW202343257A (zh) | 記憶體管理 | |
TW202418067A (zh) | 堆疊指標切換有效性檢查 | |
CN112380529A (zh) | 一种基于操作的嵌入式裸机系统安全隔离系统 | |
Malla | A Comprehensive Hardware-Software Co-Design to Safeguard Against Memory Attacks |
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 |