CN112580023B - 影子栈管理方法及装置、介质、设备 - Google Patents
影子栈管理方法及装置、介质、设备 Download PDFInfo
- Publication number
- CN112580023B CN112580023B CN202011557301.6A CN202011557301A CN112580023B CN 112580023 B CN112580023 B CN 112580023B CN 202011557301 A CN202011557301 A CN 202011557301A CN 112580023 B CN112580023 B CN 112580023B
- Authority
- CN
- China
- Prior art keywords
- shadow stack
- processor
- read
- security
- write permission
- 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
- 238000007726 management method Methods 0.000 title claims abstract description 54
- 238000004891 communication Methods 0.000 claims description 9
- 238000004590 computer program Methods 0.000 claims description 8
- 238000000034 method Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 13
- 230000009286 beneficial effect Effects 0.000 description 4
- 239000012634 fragment Substances 0.000 description 4
- 230000004044 response Effects 0.000 description 3
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本申请实施例中提供影子栈管理方法及装置、介质、设备。其中,影子栈管理方法,应用于处理器,包括:通过安全控制环境配置影子栈的读写权限,所述处理器的操作系统无权修改所述安全控制环境配置的影子栈的读写权限;基于所述安全控制环境配置的读写权限,确定访问影子栈的指令满足所述读写权限的要求后,允许所述指令访问所述影子栈。本申请实施例中的影子栈管理方法的安全性更高。
Description
技术领域
本申请实施例涉及集成电路领域,具体涉及影子栈管理方法及装置、介质、设备。
背景技术
面向返回地址编程(ROP,Return Oriented Programming)攻击是一种通过查找已加载的代码来构造出可以执行任意逻辑的攻击链,并利用程序中的缓冲区溢出漏洞,跳转到攻击链代码的攻击方式。
影子栈是阻止ROP攻击的一种方法,通过设置影子栈,判断返回地址是否非法,以避免返回到恶意地址,进而避免攻击。但是,若影子栈同时被攻击,则依然难以阻止ROP攻击。
申请内容
有鉴于此,本申请实施例中提供影子栈管理方法及装置、设备。其中,影子栈管理方法,应用于处理器,包括:
通过安全控制环境配置影子栈的读写权限,所述处理器的操作系统无权修改所述安全控制环境配置的影子栈的读写权限;
基于所述安全控制环境配置的读写权限,确定访问影子栈的指令满足所述读写权限的要求后,允许所述指令访问所述影子栈。
可选的,所述通过安全控制环境配置影子栈的读写权限包括:通过所述安全控制环境,在安全页面属性表内设置所述影子栈的读写权限,所述处理器的操作系统无权配置所述安全页面属性表。
可选的,所述配置影子栈的读写权限包括:配置所述影子栈仅接受安全控制区域和微指令中至少一种的读写操作。
可选的,所述安全控制环境的对外接口少于所述操作系统。
可选的,所述安全控制环境为以下任意一种:处理器中的可信任执行环境;安全处理器的执行环境。
本申请实施例还提供一种影子栈管理装置,包括:
读写权限配置单元,适于通过安全控制环境配置影子栈的读写权限,处理器的操作系统无权修改所述安全控制环境配置的影子栈的读写权限;
访问控制单元,适于基于所述安全控制环境配置的读写权限,确定访问影子栈的指令满足所述读写权限的要求后,允许所述指令访问所述影子栈。
可选的,所述读写权限配置单元适于通过所述安全控制环境,在位于内存访问子系统的安全页面属性表内设置所述影子栈的读写权限。
可选的,所述读写权限配置单元适于配置所述影子栈仅接受安全控制区域和微指令中至少一种的读写操作。
本申请实施例还提供一种计算设备,包括:
主处理器、安全处理器和内存访问子系统,所述主处理器、所述安全处理器以及所述内存访问子系统之间通信连接;
所述主处理器适于发送所述影子栈的位置信息至所述安全处理器;
所述安全处理器适于配置影子栈的读写权限,所述主处理器无权修改所述安全控制环境配置的内容;
所述内存访问子系统适于基于所述安全处理器配置的读写权限,确定访问影子栈的指令满足所述读写权限的要求后,允许所述指令访问所述影子栈。
可选的,所述内存访问子系统包括安全页面属性表模块和内存控制器,所述安全处理器在所述安全页面属性表模块中的安全页面属性表内配置所述影子栈的读写权限,所述主处理器无权修改所述安全页面属性表;所述安全页面属性表模块适于在所述内存控制器操作内存之前确定所述操作符合所述安全页面属性表中的权限要求。
本申请实施例还提供一种影子栈管理方法,包括:
仅接受安全控制环境对影子栈的读写权限的配置;
基于所述读写权限,确定访问影子栈的指令满足所述读写权限的要求后,允许所述指令访问所述影子栈。
本申请实施例还提供一种影子栈管理方法,应用于安全处理器,包括:
接收影子栈的位置信息;
发送基于所述位置信息对所述影子栈的读写权限的配置至内存访问子系统,所述内存访问子系统适于基于所述安全处理器配置的读写权限,确定访问影子栈的指令满足所述读写权限的要求后,允许所述指令访问所述影子栈。
本申请实施例还提供一种内存管理设备,通信连接至安全处理器,用于运行存储器中的可执行程序代码,以执行所述影子栈管理方法。
本申请实施例还提供一种安全处理器,通信连接至主处理器,用于运行存储器中的可执行程序代码,以执行所述影子栈管理方法。
本申请实施例还提供一种片上系统,包括:
前述的内存管理设备;
以及前述的安全处理器,与所述内存管理设备通信连接。
本申请实施例还提供一种处理器,用于运行存储器中的可执行程序代码,以执行前述的影子栈管理方法。
本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序运行时执行前述的影子栈管理方法。
本申请实施例还提供一种计算机,包括:前述的处理器或片上系统。
本申请实施例中的技术方案中,安全控制环境的权限高于操作系统,由安全控制环境配置影子栈的读写权限,操作系统无权修改。从而,可以避免操作系统被攻击时对提升影子栈的读写权限的篡改,提升影子栈的安全性。在确定访问影子栈的指令满足安全控制环境配置的读写权限后,才允许所述指令访问所述影子栈,可以阻止无读写权限的指令的攻击。故本申请中技术方案可以提升影子栈的安全性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为一种ROP攻击的示意图;
图2为一种阻止ROP攻击的示意图;
图3为一种影子栈页表管理的示意图;
图4为本申请实施例中一种影子栈页表管理方法的流程图;
图5为本申请实施例中一种处理器的结构示意图;
图6为本申请实施例中一种计算设备的部分结构示意图;
图7为本申请实施例中一种安全页面属性表的示意图;
图8为本申请实施例中一种成功访问影子栈的示意图;
图9为本申请实施例中一种访问影子栈失败的示意图;
图10为本申请实施例中一种影子栈管理装置的结构示意图;
图11为本申请实施例中另一种影子栈管理方法的示意图;
图12为本申请实施例中另一种影子栈管理方法的示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1是一种ROP攻击的示意图。函数被调用时,返回地址放入数据栈11,数据栈11中还可以存储有其它数据,例如参数。图中返回1、返回2以及返回3表示正常的返回地址应返回的位置;返回地址1、返回地址2以及返回地址3表示被篡改后的返回地址;代码片段1、代码片段2以及代码片段3表示在各返回地址被篡改后,返回到的代码片段。这些代码片段可以并非攻击者注入的代码,而是从已有的代码片段中搜到的代码片段。这些代码片段被串联起来后,可以实施攻击。
可以理解的是,图1仅为ROP攻击的原理示意,并非对在实际攻击时需结合的代码片段以及返回地址的限制。
结合参考图2,可以通过设置影子栈和比较返回地址阻止ROP攻击。图2示出了数据栈21和影子栈22,其中数据栈21中示出了返回地址Return1和返回地址Return2.1,以及其中存储的数据data,影子栈中示出了返回地址Return1和返回地址Return2。
具体的,可以通过设置影子栈和比较返回地址阻止ROP攻击的方式可以如下文所述。首先,可以为用户进程分配两个栈:一个为普通的数据栈21,在调用函数时向数据栈21中压入参数和返回地址,在函数返回时从数据栈21中取出返回地址;另一个为专用于程序控制流的转移的栈,称之为影子栈。在函数调用时,返回地址同样被放入影子栈。
当程序漏洞被利用时,数据栈的返回地址会被修改。例如图2示出了数据栈中的两个返回地址,其中返回地址Return1未被修改,而返回地址Return2被恶意篡改为Return2.1。在函数按照返回之前,执行步骤S201,比较数据栈和影子栈中对应的返回地址,以及步骤S202,若返回地址不一致,则程序产生异常,不继续返回。
例如,在比较数据栈21中返回地址Return2.1和与其对应的影子栈22中返回地址Return2时,发现二者不一致,则函数不再按照返回地址Return2.1进行返回,如此,通过影子栈阻止了程序返回到一个恶意地址,进而避免了此次的ROP攻击。
从另一个角度,以程序对CALL(调用)指令和RET(返回)指令为例进行说明。
当程序通过CALL指令调用函数时,可以在硬件层面将返回地址同时放入数据栈和影子栈;程序通过RET指令返回时,可以在硬件层面比较数据栈和影子栈中的返回地址是否相同,若不同,表明这是非法返回地址,发送异常。
在汇编语言中,CALL和RET通常是成对使用的。CALL执行跳转,RET返回到CALL的下一条指令。ROP攻击操纵RET的返回地址到其他地址。影子栈通过保存CALL的下一条指令保证RET不返回到其他地方。
在具体实施中,可以由操作系统来分配影子栈内存,并配相应的置影子栈页面的属性。如可以配置影子栈页面的属性为特殊属性:“影子栈属性”。可以定义该“影子栈属性”在硬件层面限制普通的内存读写指令对“影子栈属性”的页面操作。例如,MOV指令被限制不准操作影子栈属性的页面。如果一个页面的属性从“影子栈属性”改成普通页面属性,则该页面被还原成普通页面,MOV指令即可对该页面读写。
在具体实施中,操作系统可以对影子栈的读写权限进行限制,例如可以限制仅由部分对硬件操作的专用指令操作影子栈页面,拒绝非专用指令的访问并产生异常。对这些指令可以有严格的权限限制,例如可以区分普通的内存读写指令(例如MOV指令)和控制函数加载和返回的指令(例如CALL和RET指令),仅允许函数调用和返回指令修改影子栈,防止普通的内存指令修改影子栈内存。
在具体实现中,操作系统是及其复杂的系统,源代码量极其庞大,有较多的对外接口,可能存在较多的漏洞,攻击者可以利用这些漏洞攻击操作系统,获取操作系统的权限。若攻击者获取到了操作系统的权限,则可以修改影子栈的属性,将其属性修改为普通,则不再限制对影子栈的访问,进而可以实现ROP攻击。
结合参考图3,在具体实施中,影子栈页面和普通的内存页面一样,被页表31管理。操作系统通过修改页面的属性,普通内存页面和影子栈页面能够相互转换。
若攻击者获取了操作系统权限,则可以对影子栈页面的属性进行修改,使影子栈所在的内存页面,也即影子栈页面的内存属性由“影子栈页面”这种特殊属性被修改为“普通页面”这种普通属性。通过修改影子栈页面的属性,可以修改对影子栈的读写权限,例如可以使用户态的普通内存读写指令能够访问影子栈,进而实现ROP攻击。
本申请实施例提供一种影子栈管理方法,结合参考图4,具体可以包括如下步骤:
步骤S41,通过安全控制环境配置影子栈的读写权限,所述安全控制环境的读写权限高于操作系统;
步骤S42,基于所述安全控制环境配置的读写权限,确定访问影子栈的指令满足所述读写权限的要求后,允许所述指令访问所述影子栈。
在本申请实施例中,由安全控制环境配置影子栈的读写权限,操作系统无权修改。从而,可以避免操作系统被攻击时对提升影子栈的读写权限的篡改,提升影子栈的安全性。在确定访问影子栈的指令满足安全控制环境配置的读写权限后,才允许所述指令访问所述影子栈,可以阻止无读写权限的指令的攻击。故本申请中技术方案可以提升影子栈的安全性。
可以理解的是,安全控制环境的权限高于操作系统,故存在安全控制环境有权限进行的操作,而操作系统无权限进行。
在具体实施中,所述安全控制环境的对外接口可以少于所述操作系统。安全控制环境处理范围可以小于操作系统,例如可以仅执行特定的安全级别较高的任务,从而相使得比于操作系统,安全控制环境的安全性更高。
在具体实施中,从硬件架构的角度,安全控制环境可以与操作系统位于同一处理器,或者,操作系统可以位于主处理器,安全控制环境可以位于与主处理器通信连接的安全处理器。
例如,在如带可信任执行环境(Trusted Execution Environment,TEE)的处理器中,安全控制环境可以是处理器中的可信任执行环境。
在具体实现中,主处理器可以是运行操作系统的处理器,安全处理器是未运行操作系统的处理器。在本申请中,与主处理器通信连接,并且可以配置无法被主处理器修改的影子栈的读写权限的处理器,均可以作为安全处理器。可以理解的是,此处的主处理器和安全处理器并非对硬件实现的限制。
可选的,主处理器和安全处理器可采用相同架构的处理器,例如均可采用例如32位或64位X86架构的处理器;或者,也可采用不同架构,例如主处理器采用32位或64位X86架构的处理器,而安全处理器可采用ARM架构的处理器、专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、或现场可编程门阵列(Field Programmable GateArray,FPGA)等。
或者,结合参考图5,在本申请一实施例中,处理器50可以包括主处理器51和安全处理器52,主处理器51和安全处理器52之间可以进行通信,安全处理器52的级别高于主处理器51。安全控制环境可以是安全处理器52的执行环境。
在具体实施中,通过配置影子栈的读写权限可以设置允许访问影子栈的指令。例如,可以设置影子栈仅接受安全控制区域或微指令中至少一种的读写操作。也即,可以设置仅安全控制区对影子栈进行读写操作是被允许的;或者仅微指令对影子栈进行读写操作是被允许的;或者仅安全控制区和微指令对影子栈进行读写操作是被允许的。
示例性的,可以许可CALL指令和RET指令操作影子栈。CALL将返回地址放入影子栈,RET将返回地址弹出影子栈,这两条指令用微码实现,有权限访问影子栈。而MOV指令是普通的内存读写指令,不是用微码实现的指令,无权访问影子栈。
在具体实施中,影子栈的读写权限的配置可以包括如下内容:允许访问影子栈的访问源ID、影子栈的起始地址、影子栈的长度、是读操作或者写操作。
其中,允许访问影子栈的影子栈的访问源ID可以指示许可操作影子栈的主体的ID,例如,其中设置的ID可以对应安全控制环境或者微码,以许可安全控制环境或者微码访问影子栈。其中设置的ID并不对应普通的内存指令,从而可以阻止普通的内存指令对影子栈的访问。允许访问影子栈的影子栈的访问源ID也可以称作影子栈的所有者ID。影子栈的所有者为允许访问影子栈的主体,例如可以是安全控制环境或者微码。
在具体实施中,可以通过所述安全控制环境,在安全页面属性表(SPOT,SecurePage Ownership Table)内设置所述影子栈的读写权限,所述处理器的操作系统无权配置所述安全页面属性表。若对内存的访问请求与安全页面属性表配置的权限不一致,SPOT模块拒绝内存访问。安全页面属性表可以实现内存控制器对内存物理地址的直接控制。例如,即使在页表中配置了页面可写,安全页面属性表不可写,页面最终不可写。
示例性的,安全页面属性表可以设置在安全页面属性表模块中,SPOT模块用于在内存控制器访问内存之前检查表中配置的物理地址的权限。
在具体实施中,安全页面属性表可以仅接受安全控制环境的设置。具体的实现方式可以通过硬件层面的设置,例如可以在硬件层面,限制对安全属性页表进行设置的指令实现方式,当非来源于安全控制环境的指令对安全属性表进行设置时报错。其它的可以实现安全属性页表仅接受安全控制环境的设置的具体实现方式,在此不做限制。
在具体实施中,可以响应于线程的建立配置影子栈的读写权限,响应于线程的结束删除所述影子栈的读写权限。具体实现可以参见后文所述。
本申请实施例还提供一种计算设备,结合参考图6,可以包括主处理器61、安全处理器62、内存访问子系统63以及物理内存64。主处理器61、安全处理器62以及所述内存访问子系统63之间通信连接。
其中,所述主处理器61适于发送所述影子栈的位置信息至所述安全处理器。如前所述主处理器61的和安全处理器62的实现方式可以是多样的,这里的“处理器”并非对内部结构的限制。或者,主处理器61,也可以被称作主处理器核,安全处理器62,也可以被称为安全处理器核。
所述安全处理器62适于配置影子栈的读写权限,所述主处理器无权修改所述安全控制环境配置的内容。
所述内存访问子系统63适于基于所述安全处理器配置的读写权限,确定访问影子栈的指令满足所述读写权限的要求后,允许所述指令访问所述影子栈。
在具体实施中,所述内存访问子系统63可以包括安全页面属性表模块631和内存控制器632,所述安全处理器61在所述安全页面属性表模块631中的安全页面属性表内配置所述影子栈的读写权限,所述主处理器61无权修改所述安全页面属性表;所述安全页面属性表模块631适于在所述内存控制器632操作内存之前确定所述操作符合所述安全页面属性表中的权限要求。
可以理解的是,实现上述功能的软件或硬件或二者结合的部件,均可以作为本申请实施例中的内存访问子系统。
在具体实施中,可以由主处理器61分配影子栈页面,并设置页面属性为“影子栈属性”。
示例性的,可以由运行于主处理器61的操作系统在进程或线程启动时分配影子栈的虚拟地址空间。硬件执行指令CALL指令时,将返回地址压入影子栈时,触发缺页。操作系统判断出缺页页面的虚拟地址空间属于影子栈,分配内存页面,并将页面的属性设置为“影子栈属性”。
进一步的,可以由操作系统向安全处理器62发送命令,请求保护影子栈页面。
示例性的,可以由操作系统将影子栈的物理地址、长度、属性和所有者发送给安全处理器62,请求安全处理器62在安全页面属性表中为影子栈内存区间设置所有者为安全处理器或微码,权限为可读可写。即只有安全处理器或微码可读可写影子栈页面,而普通的指令无权读写。其中,所有者即为有权操作影子栈页面的主体。例如可以是安全处理器或微码。
在具体实施中,上述全处理器61、主处理器62、内存访问子系统63可以集成于同一芯片或者分别位于不同的芯片,在此不做限制。
这里的计算设备并不限于计算机系统,也可以是诸如手持式装置和具有嵌入式应用的其他装置;手持式装置的一些示例包括蜂窝电话、因特网协议装置、数码相机、个人数字助理(PDA)或手持式PC(personal computer,个人计算机)。具有嵌入式应用的其他装置可包括网络计算机(Net PC)、机顶盒、服务器、宽域网(WAN)交换机、或可执行至少一个本申请公开实施例的一个或更多个指令的任何其他系统。
图7为一种安全页面属性表的示意图。安全页面属性表71中,示出了用于管理内存块1权限的条目711和用于管理内存块2权限的条目722。其中,owner区域中可以用于存储前述的允许访问影子栈的影子栈的访问源ID,也即所有者ID。读/写区域中存储具体的权限为可读可写、仅可读或者仅可写。起始地址区域中可以存储影子栈起始的物理地址,长度区域中可以存储影子栈的长度。影子栈的内存区域不连续时,起始地址区域中可以存储影子栈每块内存区域起始的物理地址,长度区域中可以存储影子栈该块内存区域的长度。
在具体实施中,Owner区域中可以存储多个所有者ID。读/写区域中可以存储对应每个所有者ID的权限,或者若多个所有者的权限一致,也可以存储这种一致的权限。或者,一个Owner区域也可以仅存储一个所有者ID。当影子栈的所有者为多个时,可以由SPOT中多个条目共同管理影子栈的权限。或者,可以为多个访问源设置同样的所有者ID,例如,可以为允许访问影子栈的安全处理器和微码,设置相同的ID,如此,可以节省资源,通过SPOT中的一个条目设置不同访问源的权限。
示例性的,可以设置操作系统的所有者ID为0,虚拟机的ID为该虚拟机的asid,而安全处理器/微码可以定义为一个特殊的值,比如-1。可以理解的是,ID也可以并非数值,可以是字符串或其它标识。
例如,当设置微指令对影子栈的权限为可读可写时,可以设置Owner区域中数值为-1时读/写区域权限为可读可写。在硬件系统中,可以相应的将产生微指令的硬件编号为-1,或者通过SPOT模块解析微指令的硬件编号为-1,则微指令访问内存单元时,SPOT模块可以识别该访问源为微指令,判断其具有对影子栈的访问权限。
故通过设置硬件单元的识别标识与SPOT中存储的标识一致,或者由SPOT模块解析硬件单元的识别标识为SPOT表中存储的硬件编号,可以确定访问源,进一步确定该访问源对影子栈的权限,仅允许具备权限的访问源修改影子栈,可以提升内存访问的安全性。
图8是本申请实施例中一种允许访问影子栈的示意图。响应于进程81的启动,操作系统82请求安全处理器83对影子栈进行保护。安全处理器83配置SPOT,使得影子栈的权限为安全处理器和微指令可读可写。操作系统通过CALL或RET指令请求访问影子栈时,SPOT模块进行判断后确定CALL或RET指令通过微指令实现,具备对影子栈的访问权限。验证通过后内存控制器在访问无内存84中的影子栈。
结合参考图8和图9,若操作系统通过MOV指令请求访问影子栈,SPOT模块进行判断后确定MOV未通过微指令实现,不具备对影子栈的访问权限,则拒绝对物理内存84中影子栈的访问。
在具体实施中,退出进程或线程时,可以删除SPOT中相应的条目,已节约资源。具体的,进程线程退出时,操作系统可以删除进程线程的内存。在删除之前,操作系统可以向安全处理器发送命令,请求删除SPOT中的影子栈条目,然后释放影子栈页面。
本领域技术人员可以理解的是,本申请中的“在具体实施中”“一实施例中”“例如”“示例性的”等描述意指结合该实施例或示例描述的具体特征、结构或者特点包括于本申请的至少一种实施例或示例中。而且,描述的具体特征、结构或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本申请中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
另外,前述实施例中的流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分。并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能。
本申请实施还提供一种影子栈管理装置,结合参考图10,可以包括:
读写权限配置单元101,适于通过安全控制环境配置影子栈的读写权限,处理器的操作系统无权修改所述安全控制环境配置的影子栈的读写权限;
访问控制单元102,适于基于所述安全控制环境配置的读写权限,确定访问影子栈的指令满足所述读写权限的要求后,允许所述指令访问所述影子栈。
在具体实施中,所述读写权限配置单元101适于通过所述安全控制环境,在位于内存访问子系统的安全页面属性表内设置所述影子栈的读写权限。
在具体实施中,所述读写权限配置单元101适于配置所述影子栈仅接受安全控制区域和微指令中至少一种的读写操作。
本申请实施例中影子栈管理装置的原理、具体实现方式和有益效果可以参见本申请中影子栈管理方法和计算设备。
本申请实施例中的影子栈管理装置所描述的各个单元,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。并且,所述的各个功能模块可以集成在一个处理部件中,也可以是各个模块单独物理存在,也可以两个或两个以上功能模块集成在一个部件中。上述集成的部件既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
示例性的,上述各个功能模块集成在一个处理器中,或者可以集成在多个处理器中,或者可以集成于多个处理器所在的片上系统中。前述的多个处理器可以包括本申请中的主处理器和安全处理器。
本申请实施例还提供一种影子栈管理方法,结合参考图11,可以包括如下步骤:
步骤S111,接收影子栈的位置信息;
步骤S112,发送基于所述位置信息对所述影子栈的读写权限的配置至内存访问子系统,所述内存访问子系统适于基于所述安全处理器配置的读写权限,确定访问影子栈的指令满足所述读写权限的要求后,允许所述指令访问所述影子栈。
图11所示的影子栈管理方法可以由安全处理器执行,具体实现过程可以参见前文所述,在此不再赘述。
本申请实施例还提供一种安全处理器,可以执行步骤S111和步骤S112。其具体实现和有益效果可以参见前文所述,在此不再赘述。
所述安全处理器可以是独立于主处理器之外的芯片,或者也可以与主处理器集成在统一芯片上。或者也可以根据需求集成至例如存储器、接口控制模块等。
本申请实施例还提供一种影子栈管理方法,结合参考图12,可以包括如下步骤:
步骤S121,仅接受安全控制环境对影子栈的读写权限的配置;
步骤S122,基于所述读写权限,确定访问影子栈的指令满足所述读写权限的要求后,允许所述指令访问所述影子栈。
安全控制环境的权限高于操作系统,操作系统无权对安全控制环境配置的读写权限进行修改。本申请实施例中步骤S121和步骤S122可以由内存访问子系统实现。本申请实施例的名词解释、实现原理、具体实现和有益效果可以参见前文所述,在此不再赘述。
本申请实施例还提供一种内存管理设备,通信连接至安全处理器,用于运行存储器中的可执行程序代码,可以执行前述的步骤S121和步骤S122。该内存管理设备可以是计算设备中的独立部件,或者也可以是集成于处理器的部件,或者也可以根据需求集成到例如存储器、接口控制模块等。
本申请还提供一种片上系统,在一芯片上集成了如前所述安全处理器和内存管理设备,所述内存管理设备与安全处理器通信连接。
在具体实施中,该片上系统还可以包括主处理器,所述主处理器用于向安全处理器发送影子栈的位置信息,并且由所述主处理器对影子栈进行访问。
本申请实施例中的内存管理设备和片上系统的具体实现和有益效果均可以参见前文所述,在此不再赘述。
本申请实施例还提供一种处理器,其上存储有计算机程序,所述计算机程序运行时执行前述的影子栈管理方法。所述处理器的架构以及硬件实现在此不做限制。所述处理器可以进一步包括本申请实施例中的安全处理器以及主处理器,或者也可以不进行安全处理器和主处理器的划分。
本申请实施例还提供一种计算机设备,包括前述的处理器或片上系统。
所述计算机设备包括但不限于:服务器、台式机、智能手机、笔记本电脑、平板电脑、智能手环、智能手表、其它智能设备或其中任意一种或多种的多个设备通信连接构成的分布式处理系统。
本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序运行时执行前述的影子栈管理方法。
即,上述本申请实施例中的影子栈管理方法可被实现为可存储在记录介质(诸如CD ROM、RAM、软盘、硬盘或磁光盘)中的软件或计算机代码,或者被实现通过网络下载的原始存储在远程记录介质或非暂时机器可读介质中并将被存储在本地记录介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件(诸如ASIC或FPGA)的记录介质上的这样的软件处理。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件(例如,RAM、ROM、闪存等),当所述软件或计算机代码被计算机、处理器或硬件访问且执行时,实现在此描述的影子栈管理方法。
安全控制环境的权限高于操作系统,由安全控制环境配置影子栈的读写权限,操作系统无权修改。从而,可以避免操作系统被攻击时对提升影子栈的读写权限的篡改,提升影子栈的安全性。在确定访问影子栈的指令满足安全控制环境配置的读写权限后,才允许所述指令访问所述影子栈,可以阻止无读写权限的指令的攻击。故本申请中技术方案可以提升影子栈的安全性。
虽然本申请实施例披露如上,但本申请并非限定于此。任何本领域技术人员,在不脱离本申请实施例的精神和范围内,均可作各种更动与修改,因此本申请的保护范围应当以权利要求所限定的范围为准。
Claims (15)
1.一种影子栈管理方法,应用于处理器,其特征在于,包括:
通过安全控制环境配置影子栈的读写权限,所述安全控制环境为安全处理器的执行环境,所述安全控制环境的权限高于操作系统,所述处理器的操作系统无权修改所述安全控制环境配置的影子栈的读写权限;其中,所述影子栈的读写权限为通过所述安全控制环境,在安全页面属性表内设置,所述处理器的操作系统无权配置所述安全页面属性表;
基于所述安全控制环境配置的读写权限,确定访问影子栈的指令满足所述读写权限的要求后,允许所述指令访问所述影子栈。
2.根据权利要求1所述的影子栈管理方法,其特征在于,所述配置影子栈的读写权限包括:配置所述影子栈仅接受安全控制区域和微指令中至少一种的读写操作。
3.根据权利要求1所述的影子栈管理方法,其特征在于,所述安全控制环境的对外接口少于所述操作系统。
4.一种影子栈管理装置,其特征在于,包括:
读写权限配置单元,适于通过安全控制环境配置影子栈的读写权限,所述安全控制环境为安全处理器的执行环境,所述安全控制环境的权限高于操作系统,处理器的操作系统无权修改所述安全控制环境配置的影子栈的读写权限;其中,所述影子栈的读写权限为所述通过安全控制环境,在位于内存访问子系统的安全页面属性表内设置,所述处理器的操作系统无权配置所述安全页面属性表;
访问控制单元,适于基于所述安全控制环境配置的读写权限,确定访问影子栈的指令满足所述读写权限的要求后,允许所述指令访问所述影子栈。
5.根据权利要求4所述的影子栈管理装置,其特征在于,所述读写权限配置单元适于配置所述影子栈仅接受安全控制区域和微指令中至少一种的读写操作。
6.一种计算设备,其特征在于,包括:
主处理器、安全处理器和内存访问子系统,所述主处理器、所述安全处理器以及所述内存访问子系统之间通信连接;
所述主处理器适于发送所述影子栈的位置信息至所述安全处理器;
所述安全处理器适于配置影子栈的读写权限,所述主处理器无权修改安全控制环境配置的内容,所述安全控制环境为安全处理器的执行环境,所述安全处理器的级别高于所述主处理器;
所述内存访问子系统适于基于所述安全处理器配置的读写权限,确定访问影子栈的指令满足所述读写权限的要求后,允许所述指令访问所述影子栈。
7.根据权利要求6所述的计算设备,其特征在于,所述内存访问子系统包括安全页面属性表模块和内存控制器,所述安全处理器在所述安全页面属性表模块中的安全页面属性表内配置所述影子栈的读写权限,所述主处理器无权修改所述安全页面属性表;所述安全页面属性表模块适于在所述内存控制器操作内存之前确定所述操作符合所述安全页面属性表中的权限要求。
8.一种影子栈管理方法,其特征在于,包括:
仅接受安全控制环境对影子栈的读写权限的配置,所述安全控制环境为安全处理器的执行环境,所述安全控制环境的权限高于操作系统;其中,所述影子栈的读写权限为通过所述安全控制环境,在安全页面属性表内设置,处理器的操作系统无权配置所述安全页面属性表;
基于所述读写权限,确定访问影子栈的指令满足所述读写权限的要求后,允许所述指令访问所述影子栈。
9.一种影子栈管理方法,应用于安全处理器,所述安全处理器的执行环境为安全控制环境,其特征在于,包括:
接收影子栈的位置信息;
发送基于所述位置信息对所述影子栈的读写权限的配置至内存访问子系统,所述内存访问子系统适于基于所述安全处理器配置的读写权限,确定访问影子栈的指令满足所述读写权限的要求后,允许所述指令访问所述影子栈,其中,所述安全处理器的级别高于主处理器,所述影子栈的读写权限为通过所述安全控制环境,在安全页面属性表内设置,所述主处理器的操作系统无权配置所述安全页面属性表。
10.一种内存管理设备,其特征在于,通信连接至安全处理器,用于运行存储器中的可执行程序代码,以执行权利要求8所述的影子栈管理方法。
11.一种安全处理器,其特征在于,通信连接至主处理器,用于运行存储器中的可执行程序代码,以执行权利要求9所述的影子栈管理方法。
12.一种片上系统,其特征在于,包括:
如权利要求10所述的内存管理设备;
如权利要求11所述的安全处理器,与所述内存管理设备通信连接。
13.一种处理器,其特征在于,用于运行存储器中的可执行程序代码,以执行权利要求1至3任一项所述的影子栈管理方法。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序运行时执行权利要求1至3中任一项所述的影子栈管理方法、或者执行权利要求8或权利要求9中所述的影子栈管理方法。
15.一种计算机,其特征在于,包括:如权利要求12所述的片上系统,或权利要求13所述的处理器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011557301.6A CN112580023B (zh) | 2020-12-23 | 2020-12-23 | 影子栈管理方法及装置、介质、设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011557301.6A CN112580023B (zh) | 2020-12-23 | 2020-12-23 | 影子栈管理方法及装置、介质、设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112580023A CN112580023A (zh) | 2021-03-30 |
CN112580023B true CN112580023B (zh) | 2023-11-21 |
Family
ID=75139740
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011557301.6A Active CN112580023B (zh) | 2020-12-23 | 2020-12-23 | 影子栈管理方法及装置、介质、设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112580023B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108200776A (zh) * | 2015-06-09 | 2018-06-22 | 华为国际有限公司 | 用于确定未知应用的安全等级的系统和方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160381050A1 (en) * | 2015-06-26 | 2016-12-29 | Intel Corporation | Processors, methods, systems, and instructions to protect shadow stacks |
US10430580B2 (en) * | 2016-02-04 | 2019-10-01 | Intel Corporation | Processor extensions to protect stacks during ring transitions |
US10157268B2 (en) * | 2016-09-27 | 2018-12-18 | Microsoft Technology Licensing, Llc | Return flow guard using control stack identified by processor register |
US10579457B1 (en) * | 2017-11-03 | 2020-03-03 | Government of the United States, as represented by Director National Security Agency | Processor for achieving flow integrity and a method of providing notice of a fault in control flow |
-
2020
- 2020-12-23 CN CN202011557301.6A patent/CN112580023B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108200776A (zh) * | 2015-06-09 | 2018-06-22 | 华为国际有限公司 | 用于确定未知应用的安全等级的系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112580023A (zh) | 2021-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3123311B1 (en) | Malicious code protection for computer systems based on process modification | |
US9747172B2 (en) | Selective access to executable memory | |
US11443034B2 (en) | Trust zone-based operating system and method | |
US9317450B2 (en) | Security protection for memory content of processor main memory | |
KR102255767B1 (ko) | 가상 머신 감사를 위한 시스템 및 방법들 | |
US10198578B2 (en) | Secure privilege level execution and access protection | |
JP4759059B2 (ja) | メモリページをプログラムに対応付けるページカラーリング | |
US20210089684A1 (en) | Controlled access to data stored in a secure partition | |
JP2003162452A (ja) | 記憶媒体装置に格納されているデータを保護するためのシステム及び方法 | |
CN113254949A (zh) | 对存储器区域的访问权限 | |
CN112417470A (zh) | 实现gpu数据安全访问的方法、装置、电子设备及存储介质 | |
US11941264B2 (en) | Data storage apparatus with variable computer file system | |
CN112580023B (zh) | 影子栈管理方法及装置、介质、设备 | |
CN114510706A (zh) | 基于物理接口的权限控制方法、装置及计算设备 | |
KR101391508B1 (ko) | 저장된 파일을 보호하는 단말기 및 방법 | |
US20220374534A1 (en) | File system protection apparatus and method in auxiliary storage device | |
EP3814910B1 (en) | Hardware protection of files in an integrated-circuit device | |
CN115982699A (zh) | 基于安全内存的恶意攻击防御方法、装置、设备及介质 |
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 |