CN117688552B - 栈空间防护方法、电子设备、存储介质及计算机程序产品 - Google Patents

栈空间防护方法、电子设备、存储介质及计算机程序产品 Download PDF

Info

Publication number
CN117688552B
CN117688552B CN202410129434.5A CN202410129434A CN117688552B CN 117688552 B CN117688552 B CN 117688552B CN 202410129434 A CN202410129434 A CN 202410129434A CN 117688552 B CN117688552 B CN 117688552B
Authority
CN
China
Prior art keywords
operating system
instruction
security
secure
register
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
CN202410129434.5A
Other languages
English (en)
Other versions
CN117688552A (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.)
Loongson Technology Corp Ltd
Original Assignee
Loongson Technology Corp Ltd
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 Loongson Technology Corp Ltd filed Critical Loongson Technology Corp Ltd
Priority to CN202410129434.5A priority Critical patent/CN117688552B/zh
Publication of CN117688552A publication Critical patent/CN117688552A/zh
Application granted granted Critical
Publication of CN117688552B publication Critical patent/CN117688552B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Storage Device Security (AREA)

Abstract

本申请实施例提供一种栈空间防护方法、电子设备、存储介质及计算机程序产品,涉及计算机技术领域,所述栈空间防护方法包括:在操作系统启动时,通过所述操作系统与第一固件接口进行协商,确定所述操作系统对应的物理地址空间中的安全指令区域;在所述操作系统切换到目标线程时,执行所述安全指令区域中的第一安全指令;其中,所述第一安全指令用于确定所述目标线程对应的栈地址空间中的安全数据区域,并将所述安全数据区域的访问属性设置为只读属性。操作系统需要与第一固件接口协商才能确定安全指令区域,通过安全指令区域中的第一安全指令才能配置栈地址空间中的安全数据区域,可以避免将权限开放给整个操作系统,可以降低攻击表面。

Description

栈空间防护方法、电子设备、存储介质及计算机程序产品
技术领域
本申请实施例涉及计算机技术领域,特别是涉及一种栈空间防护方法、电子设备、存储介质及计算机程序产品。
背景技术
内存管理单元(Memory Management Unit,MMU)是一种硬件电路单元,负责将虚拟内存地址转换为物理内存地址。对于没有MMU或者不启用MMU的设备,由于没有MMU保护操作系统的栈地址空间,一旦为线程分配的栈地址空间不够使用就会导致栈空间耗尽的问题,溢出的数据可能覆盖其他线程的栈地址空间,甚至覆盖操作系统内核的重要数据。
相关技术中可以采用一些安全机制防护栈空间耗尽,例如高级精简指令集机器(Advanced RISC Machine,ARM)处理器通过内存保护单元(Memory Protection Unit,MPU)管理栈地址空间的读写权限,第五代精简指令集计算机(Reduced Instruction SetComputer V,RISC-V)处理器采用物理内存保护机制管理不可信代码的访问权限等。这些安全机制中处理器的控制寄存器是高特权等级可配置的寄存器,操作系统的内核线程运行在最高特权等级,可以配置栈地址空间的读写权限。
但是,恶意内核线程同样具有高特权等级,使得这些安全机制面临被恶意内核线程篡改配置的威胁。例如攻击者可能利用内核线程修改MPU配置,用栈空间耗尽攻击,执行不受信任的代码,在内核态篡改MPU的保护行为。目前的安全机制可能受攻击的点位包括整个操作系统,因此,存在受攻击点位的总和较大,即攻击表面较大的问题。
发明内容
本申请实施例提供一种栈空间防护方法、电子设备、存储介质及计算机程序产品,可以解决目前防护栈空间耗尽的安全机制存在攻击表面较大的问题。
第一方面,本申请实施例公开了一种栈空间防护方法,所述方法包括:
在操作系统启动时,通过所述操作系统与第一固件接口进行协商,确定所述操作系统对应的物理地址空间中的安全指令区域;其中,所述第一固件接口用于启动所述操作系统;
在所述操作系统切换到目标线程时,执行所述安全指令区域中的第一安全指令;其中,所述第一安全指令用于确定所述目标线程对应的栈地址空间中的安全数据区域,并将所述安全数据区域的访问属性设置为只读属性。
可选的,所述在操作系统启动时,通过所述操作系统与第一固件接口进行协商,确定所述操作系统对应的物理地址空间中的安全指令区域,包括:
在所述操作系统启动时,通过所述操作系统触发第一安全例外;
通过所述第一固件接口对所述第一安全例外进行处理,确定所述安全指令区域。
可选的,所述在所述操作系统启动时,通过所述操作系统触发第一安全例外,包括:
在所述操作系统启动时,通过所述操作系统向第一寄存器写入所述安全指令区域的协商请求信息;其中,所述协商请求信息用于供所述第一固件接口确定所述安全指令区域;
执行所述操作系统中的非法安全指令,触发所述第一安全例外。
可选的,所述通过所述第一固件接口对所述第一安全例外进行处理,确定所述安全指令区域,包括:
通过所述第一固件接口的例外处理函数,确定所述第一安全例外是所述操作系统对所述安全指令区域的协商请求;
通过所述第一固件接口从所述第一寄存器获取所述协商请求对应的协商请求信息,并根据所述协商请求信息确定所述安全指令区域。
可选的,所述协商请求信息包括第一地址范围;所述根据所述协商请求信息确定所述安全指令区域,包括:
执行所述第一固件接口对应的默认安全指令区域的第二安全指令;其中,所述第二安全指令用于将所述第一地址范围写入安全指令区域表,并将所述第一地址范围确定为所述安全指令区域;所述第二安全指令具有配置所述安全指令区域表的权限。
可选的,所述通过所述第一固件接口从第一寄存器获取所述安全指令区域的协商请求信息之后,所述方法还包括:
在所述第一地址范围不可用的情况下,通过所述第一固件接口对所述第一寄存器中的所述协商请求信息进行修改;
通过所述操作系统获取所述第一寄存器的寄存器信息,并在所述寄存器信息表征所述协商请求信息被修改的情况下,通过所述操作系统生成协商失败错误报告。
可选的,所述在所述操作系统切换到目标线程时,执行所述安全指令区域中的第一安全指令,包括:
在所述操作系统切换到目标线程时,通过所述操作系统读取所述目标线程的线程控制块中的第二地址范围;
执行第一子指令和第二子指令;其中,所述第一子指令用于将所述第二地址范围写入安全数据区域表,并将所述第二地址范围确定为所述安全数据区域;所述第二子指令用于将所述第二地址范围的访问属性设置为只读属性;所述第一安全指令包括所述第一子指令和所述第二子指令,所述第一安全指令具有配置所述安全数据区域表的权限。
可选的,所述执行第一子指令和第二子指令之前,所述方法还包括:
通过所述操作系统获取所述目标线程的线程标识符,并根据所述线程标识符和所述安全数据区域表的表格容量,确定所述安全数据区域表中所述目标线程对应的目标表格条目;其中,所述目标表格条目用于存储所述第一子指令写入的所述第二地址范围。
可选的,所述方法还包括:
在所述操作系统创建所述目标线程时,通过所述操作系统将所述目标线程的线程局部存储信息写入所述栈地址空间的栈底;
将所述线程局部存储信息的地址范围确定为所述第二地址范围,并将所述第二地址范围存储到所述目标线程的所述线程控制块中。
可选的,所述方法还包括:
在所述栈地址空间触发第二安全例外的情况下,跳转到预设的错误例外入口;其中,所述第二安全例外表征所述安全数据区域发生访问属性错误;
通过所述操作系统获取所述错误例外入口对应的例外入口信息,并根据所述例外入口信息对所述第二安全例外进行处理。
第二方面,本申请实施例公开了一种电子设备,所述电子设备包括处理器、存储器和通信总线;所述处理器和所述存储器之间通过所述通信总线连接;
所述存储器存储有操作系统和第一固件接口;所述操作系统运行在所述存储器的物理地址空间;所述处理器用于执行如第一方面所述的栈空间防护方法的步骤。
可选的,所述处理器包括第一寄存器、第二寄存器和第三寄存器;所述第二寄存器和所述第三寄存器设置在所述处理器的安全配置空间中;
所述第一寄存器用于存储协商请求信息;所述第二寄存器用于存储安全指令区域表;所述第三寄存器用于存储安全数据区域表。
可选的,所述存储器包括所述第一固件接口对应的默认安全指令区域;所述默认安全指令区域是所述第一固件接口入口的预设地址范围。
第三方面,本申请实施例还公开了一种可读存储介质,所述存储介质上存储程序或指令,所述程序或指令被处理器执行时实现第一方面所述的栈空间防护方法的步骤。
第四方面,本申请实施例还公开了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现第一方面所述的栈空间防护方法的步骤。
本申请实施例至少具有以下优点:
在操作系统启动时,通过操作系统与第一固件接口进行协商,确定操作系统对应的物理地址空间中的安全指令区域,在操作系统切换到目标线程时,执行安全指令区域的第一安全指令。由于第一固件接口用于启动操作系统,因此,通过第一固件接口可以协商确定操作系统对应的物理地址空间中的安全指令区域。由于第一安全指令用于确定目标线程对应的栈地址空间中的安全数据区域,并将安全数据区域的访问属性设置为只读属性,因此,目标线程运行过程中,栈地址空间中的安全数据区域为可读但不可写的状态。在目标线程的栈地址空间发生栈空间耗尽时,会向栈地址空间中的安全数据区域写入数据,这会触发安全数据区域的访问属性错误。相比于目前防护栈空间耗尽的安全机制,本申请提供的栈空间防护方法,操作系统需要和第一固件接口协商才能获得配置栈地址空间中安全数据区域的权限,可以避免将权限开放给整个操作系统,因此可以将受攻击点位从整个操作系统减少到安全指令区域中的第一安全指令,从而降低攻击表面。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种栈空间防护方法的步骤流程图;
图2是本申请实施例提供的安全指令区域协商过程示意图;
图3是本申请实施例提供的安全数据区域配置过程示意图;
图4是本申请实施例提供的安全数据区域的结构示意图;
图5是本申请实施例提供的防护栈空间耗尽的安全保护机制示意图;
图6是本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
参照图1,示出了本申请实施例提供的一种栈空间防护方法的步骤流程图,该栈空间防护方法包括以下步骤:
步骤101,在操作系统启动时,通过所述操作系统与第一固件接口进行协商,确定所述操作系统对应的物理地址空间中的安全指令区域;其中,所述第一固件接口用于启动所述操作系统。
步骤102,在所述操作系统切换到目标线程时,执行所述安全指令区域中的第一安全指令;其中,所述第一安全指令用于确定所述目标线程对应的栈地址空间中的安全数据区域,并将所述安全数据区域的访问属性设置为只读属性。
本申请实施例中,该栈空间防护方法可以应用于电子设备,电子设备可以包括处理器、存储器和通信总线,处理器和存储器之间通过通信总线连接。实际应用中,对于没有MMU或者不启用MMU的设备,操作系统可以直接运行在存储器的物理地址空间。电子设备的处理器可以作为执行主体,执行本申请实施例的栈空间防护方法的步骤。
本申请实施例中,存储器中存储有操作系统和第一固件接口,第一固件接口用于装载和启动操作系统。其中,第一固件接口可以是固化到计算机内主板上一个只读存储器(Read-Only Memory,ROM)上的程序,第一固件接口包括计算机基本输入输出的程序、开机后自检程序和系统自启动程序,主要功能是为计算机提供最底层的、最直接的硬件设置和控制。例如,第一固件接口可以包括基本输入输出系统(Basic Input Output System,BIOS)、统一可扩展固件接口(Unified Extensible Firmware Interface,UEFI)、PMON固件接口等。此处仅是举例说明,本申请实施例对此不做限制。
在一种具体的实施方式中,处理器可以包括用于存储安全指令区域的协商请求信息的第一寄存器,用于存储安全指令区域表的第二寄存器,安全数据区域表的第三寄存器,以及一些使能寄存器等。其中,第二寄存器、第三寄存器以及一些使能寄存器可以设置在处理器的安全配置空间中,第一固件接口对应的默认安全指令空间中的第二安全指令具有访问安全配置空间的权限,以及在操作系统对应的安全指令区域协商成功的情况下,安全指令区域中的第一安全指令具有访问安全配置空间的权限。安全指令区域表用于管理操作系统对应的物理地址空间中的安全指令区域,安全数据区域表用于管理栈地址空间中的安全数据区域,安全数据区域表的表项可以包括地址范围、访问属性等字段。此处仅是举例说明,本申请实施例对此不做限制。
本申请实施例中,操作系统需要与第一固件接口协商确定安全指令区域,在安全指令区域协商成功的情况下,安全指令区域中的第一安全指令获得访问安全配置空间的权限。例如,可以将操作系统中用于操作安全配置空间的相关指令所在函数的地址范围作为安全指令区域,可以将攻击表面降低至函数粒度。这样,操作系统才能通过配置安全配置空间中的安全数据区域表,对栈地址空间的安全数据区域进行管理,包括使能安全数据区域的地址范围、设置安全数据区域的访问属性等。
本申请实施例中,第一固件接口可以预设有对应的默认安全指令区域,该默认安全指令区域中的第二安全指令具有访问安全配置空间的权限,处理器通过执行第二安全指令,可以对安全配置空间的安全指令区域表进行配置,从而对操作系统对应的安全指令区域进行管理。例如,默认安全指令区域可以是第一固件接口入口的4千字节(KB)地址范围,该4KB地址范围内存储有用于配置安全指令区域表的第二安全指令。
可选的,步骤101可以包括以下步骤:
步骤1011,在所述操作系统启动时,通过所述操作系统触发第一安全例外。
步骤1012,通过所述第一固件接口对所述第一安全例外进行处理,确定所述安全指令区域。
本申请实施例中,为了降低攻击表面,第一固件接口不能直接为操作系统开放安全配置空间的访问权限,需要操作系统将安全指令区域的地址范围告知第一固件接口,由第一固件接口决定是否为其开放访问权限。
在一种具体的实施方式中,可以在操作系统的启动时,通过操作系统主动触发第一安全例外,与第一固件接口协商安全指令区域。通过第一固件接口处理第一安全例外,解析到操作系统的协商请求,根据协商请求所请求的地址范围为操作系统开放安全指令区域,可以降低攻击表面至安全指令区域。
可选的,步骤1011可以包括以下步骤:
步骤1011a,在所述操作系统启动时,通过所述操作系统向第一寄存器写入所述安全指令区域的协商请求信息;其中,所述协商请求信息用于供所述第一固件接口确定所述安全指令区域。
步骤1011b,执行所述操作系统中的非法安全指令,触发所述第一安全例外。
本申请实施例中,操作系统启动时,只能由操作系统最初的根内核线程协商安全指令区域,可以通过操作系统向处理器的第一寄存器写入安全指令区域的协商请求信息,协商请求信息可以包括操作系统安全指令区域的地址范围。第一固件接口可以从第一寄存器获取协商请求信息,根据协商请求信息确定安全指令区域,并为安全指令区域开放安全配置空间的访问权限。
具体的,电子设备的处理器可以执行操作系统的根内核线程,向地址空间标识(Address Space Identifier,ASID)寄存器写入地址空间标识值,例如ASID=0,表明当前是根内核线程。然后将第一地址范围写入Scratch寄存器,第一固件接口可以通过判断ASID寄存器信息和Scratch寄存器信息,得知是操作系统的安全指令区域协商请求。第一寄存器包括ASID寄存器和Scratch寄存器,协商请求信息包括ASID寄存器信息和Scratch寄存器信息。
在一种具体的实施方式中,在未确定操作系统的安全指令区域的情况下,操作系统没有访问安全配置空间的权限,此时,操作系统执行任一条访问安全配置空间的指令就会触发安全例外。具体的,处理器可以通过执行操作系统中的非法安全指令,触发第一安全例外,其中,非法安全指令可以是任何在没有权限的情况下访问安全配置空间的指令。
在本申请实施例中,在操作系统启动时,第一固件接口无法预知操作系统中安全指令区域的位置,通过操作系统向第一寄存器写入安全指令区域的协商请求信息,执行操作系统中的非法安全指令,触发第一安全例外,使得第一固件接口可以对第一安全例外进行处理,根据第一寄存器中的协商请求信息去确定操作系统的安全指令区域,可以提高本申请实施例的栈空间防护方法的实用性。
可选的,步骤1012可以包括以下步骤:
步骤1012a,通过所述第一固件接口的例外处理函数,确定所述第一安全例外是所述操作系统对所述安全指令区域的协商请求。
步骤1012b,通过所述第一固件接口从所述第一寄存器获取所述协商请求对应的协商请求信息,并根据所述协商请求信息确定所述安全指令区域。
本申请实施例中,通过操作系统主动触发第一安全例外后,处理器的程序计数器(Program Counter,PC)可以跳转到第一固件接口的例外处理函数,通过例外处理函数识别当前的例外类型是非法执行安全指令例外。然后第一固件接口根据处理器的第一寄存器中存储的协商请求信息得知是操作系统的协商请求。第一固件接口可以响应于协商请求,获取第一寄存器中协商请求对应的协商请求信息,并根据协商请求信息中的第一地址范围确定安全指令区域,为安全指令区域中的第一安全指令开放安全配置空间的访问权限。例如,第一固件接口可以通过判断ASID寄存器信息和Scratch寄存器信息,得知是操作系统对安全指令区域的协商请求。
可选的,所述协商请求信息包括第一地址范围;所述根据所述协商请求信息确定所述安全指令区域,包括:
执行所述第一固件接口对应的默认安全指令区域的第二安全指令;其中,所述第二安全指令用于将所述第一地址范围写入安全指令区域表,并将所述第一地址范围确定为所述安全指令区域;所述第二安全指令具有配置所述安全指令区域表的权限。
本申请实施例中,协商请求信息包括第一地址范围,第一地址范围是安全指令区域对应的地址范围。第一固件接口对应的默认安全指令区域中的第二安全指令具有配置安全指令区域表的权限。具体的,处理器执行默认安全指令区域的第二安全指令,将协商请求信息中的第一地址范围写入第二寄存器中的安全指令区域表,并配置安全指令区域表相关的使能寄存器,使得第一地址范围对应的表项生效,从而将第一地址范围确定为安全指令区域。其中,可以通过向安全指令区域表相关的使能寄存器写入使能标识值,使得第一地址范围对应的表项生效,使能标识值表征将第一地址范围确定为安全指令区域。
在本申请实施例中,协商请求信息包括第一地址范围,通过执行第一固件接口对应的默认安全指令区域的第二安全指令,由于第二安全指令用于将第一地址范围写入安全指令区域表,并将第一地址范围确定为安全指令区域,这样,可以通过安全指令区域表对操作系统的安全指令区域进行管理,由于默认安全指令区域的第二安全指令具有配置安全指令区域表的权限,因此,相比于为整个第一固件接口开放权限,可以进一步减少攻击点位,从而降低攻击表面。
在本申请实施例中,通过第一固件接口的例外处理函数,确定第一安全例外是操作系统对安全指令区域的协商请求,通过第一固件接口从第一寄存器获取安全指令区域的协商请求信息,并根据协商请求信息确定安全指令区域,这样,可以由第一固件接口对操作系统的协商请求进行响应,根据操作系统的协商请求信息为操作系统开放相应的安全指令区域,避免直接将权限开放给整个操作系统导致增大攻击表面的问题。
可选的,所述通过所述第一固件接口从第一寄存器获取所述安全指令区域的协商请求信息之后,所述方法还包括:
步骤103,在所述第一地址范围不可用的情况下,通过所述第一固件接口对所述第一寄存器中的所述协商请求信息进行修改。
步骤104,通过所述操作系统获取所述第一寄存器的寄存器信息,并在所述寄存器信息表征所述协商请求信息被修改的情况下,通过所述操作系统生成协商失败错误报告。
本申请实施例中,在操作系统与第一固件接口协商安全指令区域时,第一地址范围应为操作系统中用于配置安全数据区域表的相关指令对应的地址范围,若将其他地址范围确定为安全指令区域可能会引发错误。例如,操作系统将某输入和输出(IO)地址设置为安全区域可能引发错误。
在一种具体的实施方式中,在第一地址范围不可用的情况下,可以通过第一固件接口对第一寄存器中原本的协商请求信息进行修改。在第一固件接口处理完第一安全例外后,处理器可以返回操作系统继续执行。例外返回后,可以通过操作系统获取第一寄存器的寄存器信息,并将当前的寄存器信息与原本的协商请求信息进行对比,若协商请求信息已被修改,则表示安全指令区域协商失败,可以重新确定第一地址范围再与第一固件接口进行协商,或者直接生成协商失败错误报告。例如,在第一地址范围不可用的情况下,可以通过第一固件接口修改Scratch寄存器信息,例外返回后,通过操作系统对比Scratch寄存器的信息,如果Scratch寄存器信息已被修改,表示安全指令区域协商失败。
本申请实施例中,在第一地址范围可用的情况下,处理器可以执行默认安全指令区域中的第二安全指令,从而将第一地址范围写入安全指令区域表,并配置安全指令区域表相关的使能寄存器使得表项生效,确定安全指令区域。操作系统对比Scratch寄存器信息,若Scratch寄存器信息未被修改,则表示安全指令区域协商成功,使得安全指令区域中的第一安全指令具有配置安全数据区域表的权限。
在本申请实施例中,在第一地址范围不可用的情况下,通过第一固件接口对第一寄存器中的协商请求信息进行修改,通过操作系统获取第一寄存器的寄存器信息,并与原本的协商请求信息进行对比,若协商请求信息被修改则表示安全指令区域协商失败,通过操作系统生成协商失败错误报告,这样,可以及时报告协商失败错误,提高本申请实施例的栈空间防护方法的安全性。
图2是本申请实施例提供的安全指令区域协商过程示意图,如图2所示,操作系统主动触发第一安全例外与第一固件接口协商安全指令区域,通过第一固件接口对第一安全例外进行处理,确定操作系统对应的安全指令区域。具体的,处理器可以执行第一固件接口对应的默认安全指令区域的第二安全指令,将协商请求信息中的第一地址范围写入第二寄存器的安全指令区域表中,并对相关的使能寄存器进行配置,使得安全指令区域表的表项生效,将第一地址范围确定为操作系统对应的安全指令区域,例如安全指令区域可以包括ins0_safestart~ins0_safeend。
在本申请实施例中,在操作系统启动时,通过操作系统触发第一安全例外,通过第一固件接口对第一安全例外进行处理,确定安全指令区域。这样,可以由操作系统主动与第一固件接口协商安全指令区域,避免第一固件接口直接给操作系统开放操作权限,可能导致受攻击点位过多,增大攻击表面的问题。
可选的,步骤102可以包括以下步骤:
步骤1021,在所述操作系统切换到目标线程时,通过所述操作系统读取所述目标线程的线程控制块中的第二地址范围。
步骤1022,执行第一子指令和第二子指令;其中,所述第一子指令用于将所述第二地址范围写入安全数据区域表,并将所述第二地址范围确定为所述安全数据区域;所述第二子指令用于将所述第二地址范围的访问属性设置为只读属性;所述第一安全指令包括所述第一子指令和所述第二子指令,所述第一安全指令具有配置所述安全数据区域表的权限。
本申请实施例中,在操作系统对应的安全指令区域协商成功的情况下,安全指令区域中的第一安全指令具有配置安全数据区域表的权限,通过执行第一安全指令,对安全数据区域表中表项的地址范围、访问属性等字段进行设置,可以对栈地址空间的安全数据区域进行管理。
本申请实施例中,目标线程的线程控制块(Thread Control Block,TCB)存储有在目标线程被操作系统创建时存入的安全数据区域的地址范围,即第二地址范围。在操作系统切换到目标线程时,通过操作系统读取目标线程的线程控制块中的第二地址范围。第一安全指令包括第一子指令和第二子指令,由于第一安全指令具有配置安全数据区域表的权限,因此,第一子指令和第二子指令也具有配置安全数据区域表的权限。处理器可以执行第一子指令,从而将第二地址范围写入处理器的第三寄存器中的安全数据区域表,并配置安全数据区域表相关的使能寄存器,使得第二地址范围对应的表项生效,将第二地址范围确定为安全数据区域。处理器可以执行第二子指令,对安全数据区域表中的访问属性字段进行配置,从而将第二地址范围的访问属性设置为只读属性。
可选的,所述执行第一子指令和第二子指令之前,所述方法还包括:
步骤1023,通过所述操作系统获取所述目标线程的线程标识符,并根据所述线程标识符和所述安全数据区域表的表格容量,确定所述安全数据区域表中所述目标线程对应的目标表格条目;其中,所述目标表格条目用于存储所述第一子指令写入的所述第二地址范围。
本申请实施例中,由于安全数据区域表的条目有限,因此多个线程可以共用一个安全数据区域表条目。将第二地址范围写入安全数据区域表之前,可以先确定目标线程对应的目标表格条目,再由处理器执行第一子指令,将第二地址范围覆盖条目中原本的数据,从而将第二地址范围写入安全数据区域表。具体的,可以根据目标线程的线程标识符(Thread Identifier,TID)和安全数据区域表的表格容量,计算目标线程对应的表格条目序号,将该表格条目序号对应的表格条目确定为目标表格条目。例如,可以将线程标识符与表格容量进行取模运算,参见如下公式(1)所示:
目标表格条目的序号=TID % 表格容量 (1)
其中,%表示取模运算,取模运算是求两个数相除的余数。在线程数量大于安全数据区域表的条目数量的情况下,通过将目标线程的TID和安全数据区域表的表格容量进行取模运算,确定目标线程对应的目标表格条目,使得多个线程可以共用一个表格条目,可以节约安全数据区域表所需的存储资源。
在本申请实施例中,通过操作系统获取目标线程的线程标识符,并根据线程标识符和安全数据区域表的表格容量,确定安全数据区域表中目标线程对应的目标表格条目,由于目标表格条目用于存储第一子指令写入的第二地址范围,这样,可以通过安全数据区域表中的表格条目设置不同线程的安全数据区域的地址范围和访问属性,从而对多个线程的栈地址空间中的安全数据区域进行管理,可以提高本申请实施例的栈空间防护方法的实用性。
在本申请实施例中,在操作系统切换到目标线程时,通过操作系统读取目标线程的线程控制块中的第二地址范围,执行第一子指令和第二子指令,由于第一安全指令包括第一子指令和第二子指令,并且第一安全指令具有配置安全数据区域表的权限,因此第一子指令和第二子指令具有配置安全数据区域的权限,由于第一子指令用于将第二地址范围写入安全数据区域表,并将第二地址范围确定为安全数据区域,由于第二子指令用于将第二地址范围的访问属性确定为只读属性,这样,可以通过安全数据区域表对栈地址空间的安全数据区域进行管理,将攻击表面降低至操作系统中的安全指令区域,可以提高本申请实施例的栈空间防护方法的安全性。
图3是本申请实施例提供的安全数据区域配置过程示意图,如图3所示,在操作系统切换到目标线程时,通过操作系统读取目标线程的线程控制块中的第二地址范围,处理器可以执行安全指令区域中的第一安全指令,将第二地址范围写入安全数据区域表并配置相关的使能寄存器使表项生效,以及将第二地址范围设置为只读属性。例如线程0的栈地址空间中的安全数据区域可以包括tcb0_safestart~tcb0_safetop,线程1的栈地址空间中的安全数据区域可以包括tcb1_safestart~tcb1_safetop,可以用“R”表示只读属性。实际应用中,多线程切换时,计算新线程的表格条目序号并覆盖表格条目中原本的数据即可,可以实现多个线程共用一个安全数据区域表条目。
可选的,所述方法还包括:
步骤105,在所述操作系统创建所述目标线程时,通过所述操作系统将所述目标线程的线程局部存储信息写入所述栈地址空间的栈底。
步骤106,将所述线程局部存储信息的地址范围确定为所述第二地址范围,并将所述第二地址范围存储到所述目标线程的所述线程控制块中。
本申请实施例中,线程局部存储(Thread Local Storage,TLS)信息是线程的独立信息,TLS信息可以包括:线程名、线程入口函数和参数列表、线程所属进程指针等线程独立拥有的数据。线程运行过程中不需要修改TLS信息,只需要读取TLS信息中的关键数据。根据TLS信息在线程运行期间只读不写的特点,实际应用中可以将TLS信息区域确定为安全数据区域,并设置安全数据区域的访问属性为只读属性,从而对TLS信息进行保护。
在一种具体的实施方式中,在操作系统创建目标线程时,可以将目标线程的线程局部存储(TLS)信息写入栈地址空间的栈底,将TLS信息区域作为安全数据区域。计算TLS信息的地址范围,将TLS信息的地址范围确定为安全数据区域的地址范围即第二地址范围,然后将第二地址范围存储到目标线程的线程控制块(TCB)中,使得操作系统切换到目标线程时可以从TCB中取出第二地址范围。操作系统在线程销毁时才执行安全指令,抹去安全数据区域中的TLS信息。
图4是本申请实施例提供的安全数据区域的结构示意图,如图4所示,安全数据区域为目标线程的栈地址空间中的线程局部存储(TLS)信息区域,包括线程局部存储信息。在操作系统创建目标线程时,可以将线程所属进程指针指向目标线程所属的进程,字符串指针数组中每个元素都是字符串指针,字符串指针指向TCB名、参数列表等信息,最后以空(NULL)字符串结尾。
相关技术中的一种防护栈空间耗尽的安全机制,为每个线程分配栈区域,当前活跃线程仅能读写栈区域的内容,读写权限由MPU进行管理。一旦发生栈空间耗尽,MPU会检测到外部区域没有读写访问权限,报告错误。但是,MPU安全机制的攻击表面大,并且未考虑TLS信息的安全性,或将TLS信息的权限放大为可读写,可能造成TLS信息的篡改。
相关技术中的另一种安全机制是在栈底设置一部分MPU区域,并设置MPU区域为只读属性。当发生栈空间耗尽时,MPU安全机制检测到栈底区域没有写访问权限,报告错误。这种MPU安全机制同样存在攻击表面大以及未考虑TLS信息安全性的问题,此外,在栈底设置额外区域,浪费存储空间,实际应用中在内存紧俏的嵌入式设备中,为每个线程在栈底分配存储空间的内存开销较大。
本申请实施例中,在操作系统创建线程时,计算存储在栈底的TLS信息的地址范围并保存到TCB中,发生线程切换时,将TLS信息的地址范围写入安全数据区域表,并设置访问属性为只读属性,相比于用MPU在栈底额外划分受保护区域的安全机制,本申请实施例不浪费额外存储空间,而是在栈底存放受保护的TLS信息,可以节约存储资源。
在本申请实施例中,在操作系统创建目标线程时,通过操作系统将目标线程的线程局部存储信息写入栈地址空间的栈底,以及将线程局部存储信息的地址范围确定为第二地址范围,并将第二地址范围存储到目标线程的线程控制块中,使得在操作系统切换到目标线程时,可以从线程控制块中取出第二地址范围,并写入安全数据区域表以及设置为只读属性,这样,可以将线程局部存储信息的区域作为安全数据区域,一旦发生栈空间耗尽时,栈帧要覆盖安全数据区域的数据,这会触发安全数据区域的访问属性错误,从而对安全数据区域中的线程局部存储信息进行保护。
可选的,所述方法还包括:
步骤107,在所述栈地址空间触发第二安全例外的情况下,跳转到预设的错误例外入口;其中,所述第二安全例外表征所述安全数据区域发生访问属性错误。
步骤108,通过所述操作系统获取所述错误例外入口对应的例外入口信息,并根据所述例外入口信息对所述第二安全例外进行处理。
本申请实施例中,在所述目标线程的栈地址空间发生栈空间耗尽时,栈帧会向安全数据区域写入敏感数据,例如要覆盖安全数据区域中的TLS信息,由于在操作系统切换到目标线程时,将栈地址空间的安全数据区域的访问属性设置为了只读属性,因此,当发生栈空间耗尽时会触发安全数据区域的访问属性错误的例外,也即第二安全例外。
本申请实施例中,在操作系统启动时,操作系统通过主动触发第一安全例外与第一固件接口进行安全指令区域协商,例外返回后,操作系统可以获取第一寄存器的寄存器信息并与原本的协商请求信息对比,若第一寄存器的寄存器信息表征协商请求信息被修改,则表示安全指令区域协商失败,若协商请求信息未被修改则表示安全指令区域协商成功。操作系统可以将安全例外入口写入机器错误例外入口寄存器,作为预设的错误例外入口。例如Scratch寄存器信息未被修改,表示安全指令区域申请成功。
在一种具体的实施方式中,在栈地址空间触发第二安全例外的情况下,处理器的PC寄存器可以跳转到预设的错误例外入口,并通过操作系统获取例外入口信息,该例外入口信息可以包括例外编号,通过操作系统对第二安全例外进行处理,可以对安全数据区域的数据进行保护。实际应用中,由于操作系统未使用虚拟地址空间,操作系统直接运行在物理地址空间,缺乏页表保护,在受到栈空间耗尽攻击时,溢出的数据可能覆盖安全数据区域的重要数据或其他线程的栈地址空间,甚至覆盖掉操作系统内核的重要数据。本申请实施例中通过将安全数据区域的访问属性设置为只读属性,在收到栈空间耗尽攻击时,可以触发第二安全例外,跳转到预设的错误例外入口,由操作系统对第二安全例外进行处理,可以防范栈空间耗尽攻击,并对安全数据区域的数据进行保护。
在本申请实施例中,通过在栈地址空间触发第二安全例外的情况下,跳转到预设的错误例外入口,通过操作系统获取错误例外入口对应的例外入口信息,并根据例外入口信息对第二安全例外进行处理,由于第二安全例外表征安全数据区域发生访问属性错误,这样,在栈地址空间发生栈空间耗尽时会触发安全数据区域访问属性错误的例外即第二安全例外,可以通过操作系统对第二安全例外进行处理,从而对安全数据区域进行保护,避免栈空间耗尽时溢出的数据覆盖安全数据区域,可以提高安全数据区域中数据的安全性。
图5是本申请实施例提供的防护栈空间耗尽的安全保护机制示意图,如图5所示,在操作系统启动时,通过操作系统与第一固件接口协商确定安全指令区域,处理器可以执行第一固件接口对应的默认安全指令区域中的第二安全指令,将安全指令区域的第一地址范围写入处理器的安全配置空间中的安全指令表区域表,并配置相关的使能寄存器使得表项生效,例如第一地址范围可以包括ins0_safestart~ins0_safeend,为安全指令区域中的第一安全指令开放配置安全数据区域表的权限。在操作系统切换到目标线程时,处理器可以执行安全指令区域的第一安全指令,将安全数据区域的第二地址范围写入安全配置空间的安全数据区域表,并配置相关的使能寄存器使得表项生效,并将安全数据区域的访问属性设置为只读属性。
本申请实施例提供的栈空间防护方法,在操作系统启动时,通过操作系统与第一固件接口进行协商,确定操作系统对应的物理地址空间中的安全指令区域,在操作系统切换到目标线程时,执行安全指令区域的第一安全指令。由于第一固件接口用于启动操作系统,因此,通过第一固件接口可以协商确定操作系统对应的物理地址空间中的安全指令区域。由于第一安全指令用于确定目标线程对应的栈地址空间中的安全数据区域,并将安全数据区域的访问属性设置为只读属性,因此,目标线程运行过程中,栈地址空间中的安全数据区域为可读但不可写的状态。在目标线程的栈地址空间发生栈空间耗尽时,会向栈地址空间中的安全数据区域写入数据,这会触发安全数据区域的访问属性错误。相比于目前防护栈空间耗尽的安全机制,本申请提供的栈空间防护方法,操作系统需要和第一固件接口协商才能获得配置栈地址空间中安全数据区域的权限,可以避免将权限开放给整个操作系统,因此可以将受攻击点位从整个操作系统减少到安全指令区域中的第一安全指令,从而降低攻击表面。
图6是本申请实施例提供的一种电子设备的结构示意图,如图6所示,该电子设备包括处理器、存储器和通信总线;所述处理器和所述存储器之间通过所述通信总线连接;
所述存储器存储有操作系统和第一固件接口;所述操作系统运行在所述存储器的物理地址空间;所述处理器用于执行如前述实施例所述的栈空间防护方法的步骤。
可选的,所述处理器包括第一寄存器、第二寄存器和第三寄存器;所述第二寄存器和所述第三寄存器设置在所述处理器的安全配置空间中;
所述第一寄存器用于存储协商请求信息;所述第二寄存器用于存储安全指令区域表;所述第三寄存器用于存储安全数据区域表。
可选的,所述存储器包括所述第一固件接口对应的默认安全指令区域;所述默认安全指令区域是所述第一固件接口入口的预设地址范围。
本申请实施例中,电子设备可以是没有MMU或者不启用MMU的设备,这些设备运行的系统可能未使用虚拟地址空间,直接使用物理地址空间,缺乏页表保护,面临着栈空间耗尽攻击的安全威胁。例如许多低功耗、低成本、专用途的嵌入式设备通常没有MMU,以及为了高性能需求以Unikernel方式构建的专用系统也可能不启用MMU,操作系统可以直接运行在存储器的物理地址空间,减少虚实地址转换的开销。但是,直接使用物理地址空间的系统面临的栈空间耗尽攻击是一种典型的、低成本的攻击手段,其根本原因是没有MMU保护线程的栈地址空间。
相关技术中,也可以利用软件方式监测栈空间耗尽行为,软件方式通常是定期扫描栈地址空间,检测是否出现数据溢出,但是软件方式检测的时间可能滞后。而硬件方式速度更快,是因为电路信号传递的速度快,一旦发生栈空间耗尽,硬件检测到违反安全机制比如满足某种电路状态,硬件会触发相应的行为。
本申请实施例提供一种硬件上的安全区域机制,该安全区域机制包括安全配置空间、安全指令区域和安全数据区域。在一种具体的实施方式中,处理器可以包括第一寄存器、第二寄存器和第三寄存器,第二寄存器和第三寄存器设置在处理器的安全配置空间中;第一寄存器用于存储协商请求信息,第二寄存器用于存储安全指令区域表,第三寄存器用于存储安全数据区域表。
本申请实施例中,通过硬件层面的安全区域机制以及软件层面的操作系统和第一固件接口的软件配合,可以防范栈空间耗尽攻击,保护栈地址空间中安全数据区域的数据例如TLS信息,可以减少攻击点位从而降低攻击表面,提供一种软硬件协同防护栈空间耗尽的安全保护机制。
实际应用中,可以将操作系统中用于操作安全配置空间的相关指令所在函数对应的地址范围确定为安全指令区域,实现函数粒度的攻击表面。在多线程切换时,通过操作系统读线程的TCB中请求的安全数据区域的地址范围,根据TID和安全数据区域表容量,计算线程的表格条目对应位置并覆盖该位置的原始数据,从而激活对运行线程的安全保护机制。
所述电子设备相比于相关技术与前述实施例的栈空间防护方法所具有的优势相同,此处不再赘述。
本申请实施例提供了一种存储介质,所述存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如前述实施例所述的栈空间防护方法的步骤。
所述存储介质相比于相关技术与前述实施例的栈空间防护方法所具有的优势相同,此处不再赘述。
本申请实施例提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现前述实施例所述的栈空间防护方法的步骤。
所述计算机程序产品相比于相关技术与前述实施例的栈空间防护方法所具有的优势相同,此处不再赘述。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供方法、电子设备、存储介质或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程栈空间防护终端设备的处理器以产生一个机器,使得通过计算机或其他可编程栈空间防护终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程栈空间防护终端设备以预测方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程栈空间防护终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种栈空间防护方法、电子设备、存储介质及计算机程序产品进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (14)

1.一种栈空间防护方法,其特征在于,所述方法包括:
在操作系统启动时,通过所述操作系统与第一固件接口进行协商,确定所述操作系统对应的物理地址空间中的安全指令区域,并为所述安全指令区域开放安全配置空间的访问权限,避免将权限开放给整个所述操作系统;其中,所述第一固件接口用于启动所述操作系统;
在所述操作系统切换到目标线程时,执行所述安全指令区域中的第一安全指令;其中,所述第一安全指令用于确定所述目标线程对应的栈地址空间中的安全数据区域,并将所述安全数据区域的访问属性设置为只读属性;
在所述目标线程的所述栈地址空间发生栈空间耗尽时,会向所述栈地址空间中的所述安全数据区域写入数据,所述栈地址空间会触发第二安全例外,跳转到预设的错误例外入口;其中,所述第二安全例外表征所述安全数据区域发生访问属性错误;
通过所述操作系统获取所述错误例外入口对应的例外入口信息,并根据所述例外入口信息对所述第二安全例外进行处理。
2.根据权利要求1所述的方法,其特征在于,所述在操作系统启动时,通过所述操作系统与第一固件接口进行协商,确定所述操作系统对应的物理地址空间中的安全指令区域,包括:
在所述操作系统启动时,通过所述操作系统触发第一安全例外;
通过所述第一固件接口对所述第一安全例外进行处理,确定所述安全指令区域。
3.根据权利要求2所述的方法,其特征在于,所述在所述操作系统启动时,通过所述操作系统触发第一安全例外,包括:
在所述操作系统启动时,通过所述操作系统向第一寄存器写入所述安全指令区域的协商请求信息;其中,所述协商请求信息用于供所述第一固件接口确定所述安全指令区域;
执行所述操作系统中的非法安全指令,触发所述第一安全例外。
4.根据权利要求3所述的方法,其特征在于,所述通过所述第一固件接口对所述第一安全例外进行处理,确定所述安全指令区域,包括:
通过所述第一固件接口的例外处理函数,确定所述第一安全例外是所述操作系统对所述安全指令区域的协商请求;
通过所述第一固件接口从所述第一寄存器获取所述协商请求对应的协商请求信息,并根据所述协商请求信息确定所述安全指令区域。
5.根据权利要求4所述的方法,其特征在于,所述协商请求信息包括第一地址范围;所述根据所述协商请求信息确定所述安全指令区域,包括:
执行所述第一固件接口对应的默认安全指令区域的第二安全指令;其中,所述第二安全指令用于将所述第一地址范围写入安全指令区域表,并将所述第一地址范围确定为所述安全指令区域;所述第二安全指令具有配置所述安全指令区域表的权限。
6.根据权利要求5所述的方法,其特征在于,所述通过所述第一固件接口从第一寄存器获取所述安全指令区域的协商请求信息之后,所述方法还包括:
在所述第一地址范围不可用的情况下,通过所述第一固件接口对所述第一寄存器中的所述协商请求信息进行修改;
通过所述操作系统获取所述第一寄存器的寄存器信息,并在所述寄存器信息表征所述协商请求信息被修改的情况下,通过所述操作系统生成协商失败错误报告。
7.根据权利要求1-6任一所述的方法,其特征在于,所述在所述操作系统切换到目标线程时,执行所述安全指令区域中的第一安全指令,包括:
在所述操作系统切换到目标线程时,通过所述操作系统读取所述目标线程的线程控制块中的第二地址范围;
执行第一子指令和第二子指令;其中,所述第一子指令用于将所述第二地址范围写入安全数据区域表,并将所述第二地址范围确定为所述安全数据区域;所述第二子指令用于将所述第二地址范围的访问属性设置为只读属性;所述第一安全指令包括所述第一子指令和所述第二子指令,所述第一安全指令具有配置所述安全数据区域表的权限。
8.根据权利要求7所述的方法,其特征在于,所述执行第一子指令和第二子指令之前,所述方法还包括:
通过所述操作系统获取所述目标线程的线程标识符,并根据所述线程标识符和所述安全数据区域表的表格容量,确定所述安全数据区域表中所述目标线程对应的目标表格条目;其中,所述目标表格条目用于存储所述第一子指令写入的所述第二地址范围。
9.根据权利要求7所述的方法,其特征在于,所述方法还包括:
在所述操作系统创建所述目标线程时,通过所述操作系统将所述目标线程的线程局部存储信息写入所述栈地址空间的栈底;
将所述线程局部存储信息的地址范围确定为所述第二地址范围,并将所述第二地址范围存储到所述目标线程的所述线程控制块中。
10.一种电子设备,其特征在于,所述电子设备包括处理器、存储器和通信总线;所述处理器和所述存储器之间通过所述通信总线连接;
所述存储器存储有操作系统和第一固件接口;所述操作系统运行在所述存储器的物理地址空间;所述处理器用于执行如权利要求1-9任一项所述的栈空间防护方法的步骤。
11.根据权利要求10所述的电子设备,其特征在于,所述处理器包括第一寄存器、第二寄存器和第三寄存器;所述第二寄存器和所述第三寄存器设置在所述处理器的安全配置空间中;
所述第一寄存器用于存储协商请求信息;所述第二寄存器用于存储安全指令区域表;所述第三寄存器用于存储安全数据区域表。
12.根据权利要求10所述的电子设备,其特征在于,所述存储器包括所述第一固件接口对应的默认安全指令区域;所述默认安全指令区域是所述第一固件接口入口的预设地址范围。
13.一种存储介质,其特征在于,所述存储介质上存储程序或指令,所述程序或指令被处理器执行时实现权利要求1-9任一项所述的栈空间防护方法的步骤。
14.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-9中任一项所述的栈空间防护方法的步骤。
CN202410129434.5A 2024-01-30 2024-01-30 栈空间防护方法、电子设备、存储介质及计算机程序产品 Active CN117688552B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410129434.5A CN117688552B (zh) 2024-01-30 2024-01-30 栈空间防护方法、电子设备、存储介质及计算机程序产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410129434.5A CN117688552B (zh) 2024-01-30 2024-01-30 栈空间防护方法、电子设备、存储介质及计算机程序产品

Publications (2)

Publication Number Publication Date
CN117688552A CN117688552A (zh) 2024-03-12
CN117688552B true CN117688552B (zh) 2024-04-12

Family

ID=90126808

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410129434.5A Active CN117688552B (zh) 2024-01-30 2024-01-30 栈空间防护方法、电子设备、存储介质及计算机程序产品

Country Status (1)

Country Link
CN (1) CN117688552B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104809401A (zh) * 2015-05-08 2015-07-29 南京大学 一种操作系统内核完整性保护方法
CN110598406A (zh) * 2018-06-12 2019-12-20 杨力祥 一种数据保护方法及计算装置
CN110598405A (zh) * 2018-06-12 2019-12-20 杨力祥 一种运行时访问控制方法及计算装置
CN116150739A (zh) * 2023-03-01 2023-05-23 软安科技有限公司 一种基于关键地址动态保护的栈溢出自动防御方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11675587B2 (en) * 2015-12-03 2023-06-13 Forrest L. Pierson Enhanced protection of processors from a buffer overflow attack
US20210182390A1 (en) * 2019-03-27 2021-06-17 Mark Winterrowd Memory management to reduce risk of malicious third-party attacks
US20230315463A1 (en) * 2022-03-29 2023-10-05 Forrest L. Pierson Methods and devices for defeating buffer overflow problems in multi-core processors

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104809401A (zh) * 2015-05-08 2015-07-29 南京大学 一种操作系统内核完整性保护方法
CN110598406A (zh) * 2018-06-12 2019-12-20 杨力祥 一种数据保护方法及计算装置
CN110598405A (zh) * 2018-06-12 2019-12-20 杨力祥 一种运行时访问控制方法及计算装置
CN116150739A (zh) * 2023-03-01 2023-05-23 软安科技有限公司 一种基于关键地址动态保护的栈溢出自动防御方法

Also Published As

Publication number Publication date
CN117688552A (zh) 2024-03-12

Similar Documents

Publication Publication Date Title
CN109840410B (zh) 一种进程内数据隔离与保护的方法和系统
US8423747B2 (en) Copy equivalent protection using secure page flipping for software components within an execution environment
CN107066311B (zh) 一种内核数据访问控制方法与系统
US8276201B2 (en) Integrity protection in data processing systems
KR102189296B1 (ko) 가상 머신 보안 어플리케이션을 위한 이벤트 필터링
JP4759059B2 (ja) メモリページをプログラムに対応付けるページカラーリング
CN110383256B (zh) 一种内核完整性保护方法及装置
CN111400702A (zh) 一种虚拟化的操作系统内核保护方法
CN109074321B (zh) 用于保护虚拟计算实例的存储器的方法和系统
KR20130036189A (ko) 하드웨어 모드와 보안 플래그에 의존하여 판독된 명령어에 대한 메모리 영역의 제한
US10114948B2 (en) Hypervisor-based buffer overflow detection and prevention
EP3864554B1 (en) Transition disable indicator
KR20160019454A (ko) 데이터 처리장치에서의 소프트웨어 라이브러리들의 보안 보호
CN110928737B (zh) 监控样本进程的内存访问行为的方法和装置
WO2017133442A1 (zh) 一种实时度量方法及装置
CN114902178A (zh) 域转换禁用配置参数
KR102547479B1 (ko) 명령 세트의 변경을 제어하는 장치 및 방법
KR20190060109A (ko) 명령어 레벨 데이터 격리 방법 및 장치
CN117688552B (zh) 栈空间防护方法、电子设备、存储介质及计算机程序产品
EP4231181A1 (en) Data protection method, apparatus, storage medium, and computer device
EP4390708A1 (en) Selective memory duplication control
US20240211412A1 (en) Selective Memory Duplication Control
TW202418067A (zh) 堆疊指標切換有效性檢查
GB2623800A (en) Stack pointer switch validity checking
KR20240004738A (ko) 캐퍼빌리티를 사용하여 메모리에 대한 액세스를 제약하기 위한 기술

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