CN117916720A - 调节对内存的访问 - Google Patents

调节对内存的访问 Download PDF

Info

Publication number
CN117916720A
CN117916720A CN202180102085.2A CN202180102085A CN117916720A CN 117916720 A CN117916720 A CN 117916720A CN 202180102085 A CN202180102085 A CN 202180102085A CN 117916720 A CN117916720 A CN 117916720A
Authority
CN
China
Prior art keywords
physical memory
memory address
output
status signal
signal
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
Application number
CN202180102085.2A
Other languages
English (en)
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN117916720A publication Critical patent/CN117916720A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Storage Device Security (AREA)

Abstract

在一些示例中,内存管理装置用于访问存储在设备的物理内存中的数据结构,所述数据结构用于将虚拟内存地址映射到所述物理内存的物理内存地址,所述内存管理装置用于:使用所述数据结构,从所述内存管理装置接收的虚拟内存地址中确定物理内存地址;接收表示针对所述虚拟内存地址的操作的状态信号;将所述接收的状态信号与针对所述确定的物理内存地址的允许操作集进行比较,并基于针对所述接收的状态信号的所述比较生成第一输出;将所述确定的物理内存地址与预定的物理内存地址范围进行比较,并基于针对所述确定的物理内存地址的所述比较生成第二输出;以及使用所述第一输出、所述第二输出和表示所述设备的操作状态的状态信号生成输出条件信号。

Description

调节对内存的访问
技术领域
本发明大体上涉及内存管理。本发明的各方面涉及调节对数据结构中的预定内容集的访问,该数据结构定义了虚拟内存地址集与物理内存的物理内存地址集之间的映射。
背景技术
在计算装置中,软件组件可以由称为进程空间或进程的计算资源集合内的一个或多个处理器单独或组合执行。每个进程都可以由处理器单独维护,并包括计算资源集合。
与进程空间相关联的计算资源集合可供在进程内执行的软件程序访问,并且可以包括虚拟内存空间和/或硬件组件之类的资源。通常,处理器将每个进程空间与其他进程空间分离,并且在需要时将其与其他进程空间隔离,从而可以阻止在一个进程空间中执行的程序访问或修改与不同进程空间相关联的计算资源。
为了提供安全性并防止一个进程(例如计算装置的用户空间)无意或恶意地访问或修改属于不同进程的计算资源,该装置的处理器可以实现并实施特权级别系统。例如,在一个特权级别执行的进程可能未获允许查看或访问与在相同特权级别或在较低或更严格的特权级别(与另一个特权级别相比,该特权级别可以访问较小的计算资源集)执行的不同进程相关联的计算资源。
处理器可以提供多个特权级别,也称为异常级别。例如,异常级别0(exceptionlevel zero,EL0)称为无特权执行,是最低的特权级别,特权最小、限制最多,而异常级别3(exception level three,EL3)是最高的特权级别,特权最大、限制最少。例如,在基于ARM架构的计算装置中,异常级别1(exception level 1,EL1)通常用于操作系统(operatingsystem,OS)进程的执行,而异常级别2(exception level 2,EL2)用于提供虚拟机监视器支持。在最低特权级别执行的进程可以访问和修改与其自己的进程相关联的计算资源,但不可以访问或修改与在计算装置上执行的任何其他进程相关联的计算资源。因此,用户空间应用通常在最低特权级别(即ELO)执行,这也是最严格的特权级别。相反,在下一更高特权级别(例如EL1)执行的进程可以访问和修改在最低特权级别(即ELO)执行的进程的计算资源,但是不可以访问、查看或修改在相同或更高特权级别(例如EL2或EL3)执行的任何进程的计算资源。
计算装置通常将其内存划分为物理页,每个物理页具有唯一的ID(地址),然后将这些页映射到虚拟地址,使得物理邻接性并不意味着虚拟邻接性,反之亦然。这些映射可以通过由物理页组成的树状数据结构实现,该树状数据结构称为页表。在页表中,虚拟内存地址用于生成索引集,这些索引用于遍历树。树的叶子代表虚拟地址到物理地址的映射。换句话说,通过遍历树,可以将虚拟地址转换为物理地址。每个叶子描述相关物理页的属性,例如是否包括可执行的代码、写保护的数据等。
各种形式的攻击依赖于改变这些映射的属性的能力,叶子将该能力描述为修改相关物理页的内容的网关,利用这种方式可以获得额外的能力。攻击系统的一种方法是改变页面的映射,例如使其可写,从而改变代码本身。另一种方法是将代码注入到数据页中,然后通过更改其映射属性使其可执行。保护特定映射并没有用,因为物理页可以映射到不同的虚拟地址,从而使其属性可以通过另一种恶意映射(双重映射)进行修改。
为了保护映射,可以利用如上所述的特权级别。例如,在虚拟机监视器模式下运行的组件可用于在EL2中验证和复制由EL1中的内核设置的映射属性。因此,即使EL1映射被破坏,攻击者也不太可能篡改EL2,并且任何对受保护数据或代码的修改都将在EL2中触发异常。这可以很好地防止页面属性被篡改,因为不会给常规页面操作增加任何开销。但是,在注册/取消注册新的受保护内存块时,需要从EL1转换到EL2(再返回)。对受保护但可修改的页面内容的更改也会产生同样的开销,一般来说,这构成了绝大多数情况。
页面保护层(Page Protection Layer,PPL)可用于在EL1内部形成一个安全区,保留内核上下文,同时扩展能力(如访问/更改受保护的寄存器和修改受保护的内存)。PPL没有第二阶段页面映射来自我保护以防止双重映射,因此需要保护所有页表并对映射/未映射的内容进行验证。但是,对整个页表进行验证会增加正在执行的任何映射的开销,从速度的角度来看,这是不可取的。此外,还必须对不太可能被滥用的映射进行验证。
发明内容
本发明的目的是提供一种安全机制,以保护操作系统内核的代码和关键数据免受攻击,这些攻击已经获得了读写内存的能力,并具有常规保护功能。
上述和其他目的通过独立权利要求请求保护的特征实现。
其他实现方式在从属权利要求、说明书和附图中是显而易见的。
本发明的第一方面提供了一种内存管理装置,用于访问存储在设备的物理内存中的数据结构,所述数据结构用于将虚拟内存地址映射到所述物理内存的物理内存地址,所述内存管理装置用于使用所述数据结构,从所述内存管理装置接收的虚拟内存地址中确定物理内存地址,接收表示针对所述虚拟内存地址的操作的状态信号,将所述接收的状态信号与针对所述确定的物理内存地址的允许操作集进行比较,并基于针对所述接收的状态信号的所述比较生成第一输出,将所述确定的物理内存地址与预定的物理内存地址范围进行比较,并基于针对所述确定的物理内存地址的所述比较生成第二输出,使用所述第一输出、所述第二输出和表示所述设备的操作状态的状态信号生成输出条件信号。
因此,在保护代码和关键数据的同时,还能避免保护机制(例如PPL)带来的开销,因为PPL会在审查页表修改时带来延迟,即使受影响的页面与相关代码或关键数据无关。此外,即使在受保护的上下文中操作,也会保留对非受保护的上下文的访问。
在所述第一方面的一种实现方式中,在所述输出条件信号表示异常值的情况下,可以将所述输出条件信号提供给所述设备的处理器。
因此,在操作的验证失败的情况下,异常信号可以发送回系统处理器。然后,系统处理器可以在升级(例如,特权)操作模式中确定导致异常的操作的性质,以便确定攻击是否正在进行。因此,减少或消除了与审查页表修改相关的开销。
根据一个示例,在输出条件信号表示允许值的情况下,可以将确定的物理内存地址提供给设备的内存控制器。所述内存管理装置可以使用所述状态信号确定所述设备的所述处理器是否在受保护状态下操作。所述内存管理装置可以防止对预定的物理内存地址范围内的物理内存地址进行写访问。
本发明的第二方面提供了一种用于设备的内存管理装置的防火墙结构,所述防火墙结构包括第一比较器单元,用于:接收表示针对第一虚拟内存地址的操作的第一状态信号,将所述接收的第一状态信号与物理内存的第一物理内存地址的允许操作集进行比较,其中,所述第一物理内存地址是通过使用数据结构从所述第一虚拟内存地址中确定的,并基于针对所述接收的第一状态信号的所述比较生成第一输出,将所述第一物理内存地址与第一预定物理内存地址范围进行比较,并基于针对所述确定的第一物理内存地址的所述比较生成第二输出,使用所述第一输出、所述第二输出和表示所述设备的操作状态的状态信号生成第一验证信号。
在所述第二方面的实现方式中,第二比较器单元可以:接收表示针对第二虚拟内存地址的操作的第二状态信号,将所述接收的第二状态信号与所述物理内存的第二物理内存地址的允许操作集进行比较,其中,所述第二物理内存地址是通过使用所述数据结构从所述第二虚拟内存地址中确定的,并基于针对所述接收的第二状态信号的所述比较生成第三输出,将所述第二物理内存地址与第二预定物理内存地址范围进行比较,并基于针对所述确定的第二物理内存地址的所述比较生成第四输出,使用所述第三输出、所述第四输出和所述状态信号生成第二验证信号。
所述防火墙结构可以使用所述第一验证信号和所述第二验证信号生成输出条件信号。所述防火墙结构可以使用所述第一验证信号和所述第二验证信号执行逻辑运算来生成所述输出条件信号。
本发明的第三方面提供了一种包括处理器和内存管理装置的装置,所述内存管理装置包括数据结构,所述数据结构用于将虚拟内存地址映射到所述装置的内存的物理内存地址,其中,所述内存管理装置用于使用所述数据结构,根据所述内存管理装置从所述处理器接收的虚拟内存地址来确定物理内存地址,从所述处理器接收表示针对所述虚拟内存地址的操作的状态信号,将所述接收的状态信号与针对所述确定的物理内存地址的允许操作集进行比较,并基于针对所述接收的状态信号的所述比较生成第一输出,将所述确定的物理内存地址与预定的物理内存地址范围进行比较,并基于针对所述确定的物理内存地址的所述比较生成第二输出,使用所述第一输出、所述第二输出和表示所述装置的操作状态的状态信号生成输出条件信号。
在所述第三方面的一种实现方式中,所述处理器可以在所述输出条件信号表示允许值的情况下,将所述确定的物理内存地址提供给所述装置的内存控制器。所述处理器可以使用所述状态信号确定所述装置是否在受保护状态下操作。所述处理器可以防止对所述预定的物理内存地址范围内的物理内存地址进行写访问。
本发明的第四方面提供了一种用于调节对数据结构中的预定内容集的访问的方法,所述数据结构定义了用于装置的虚拟内存地址集与物理内存的物理内存地址集之间的映射,所述方法包括使用所述数据结构,从虚拟内存地址确定物理内存地址,接收表示针对所述虚拟内存地址的操作的状态信号,将所述接收的状态信号与针对所述确定的物理内存地址的允许操作集进行比较,并基于针对所述接收的状态信号的所述比较生成第一输出,将所述确定的物理内存地址与预定的物理内存地址范围进行比较,并基于针对所述确定的物理内存地址的所述比较生成第二输出,并使用所述第一输出、所述第二输出和表示所述装置的操作状态的状态信号生成输出条件信号。
所述方法还可以包括:在所述输出条件信号表示异常值的情况下,将所述输出条件信号提供给所述装置的处理器。所述方法还可以包括:在所述输出条件信号表示允许值的情况下,将所述确定的物理内存地址提供给所述装置的内存控制器。所述方法还可以包括:使用所述状态信号确定所述装置的所述处理器是否在受保护状态下操作。所述方法还可以包括:防止对所述预定的物理内存地址范围内的物理内存地址进行写访问。
本发明的第五方面提供了一种机器可读存储介质,所述机器可读存储介质经过编码,具有用于调节对数据结构中的预定内容集的访问的指令,所述数据结构定义了用于装置的虚拟内存地址集与物理内存的物理内存地址集之间的映射,所述指令可由所述装置的处理器执行,从而使所述装置使用所述数据结构,从由所述内存管理装置接收的虚拟内存地址确定物理内存地址,接收表示针对所述虚拟内存地址的操作的状态信号,将所述接收的状态信号与针对所述确定的物理内存地址的允许操作集进行比较,并基于针对所述接收的状态信号的所述比较生成第一输出,将所述确定的物理内存地址与预定的物理内存地址范围进行比较,并基于针对所述确定的物理内存地址的所述比较生成第二输出,使用所述第一输出、所述第二输出和表示所述装置的操作状态的状态信号生成输出条件信号。
本发明的这些和其他方面在下面描述的一个或多个实施例中是显而易见的。
附图说明
为了更容易理解本发明,现在将参考附图通过示例的方式描述本发明的实施例,其中:
图1是根据示例的装置的示意图;
图2是根据示例的防火墙结构的示意图;
图3是根据示例的比较器单元的示意图;
图4是根据示例的使用比较器单元的示意图;
图5是根据示例的系统的示意图;
图6是根据示例的机器的示意图。
具体实施方式
下面对示例性实施例进行足够详细的描述,以使本领域普通技术人员能够实施和实现本文描述的系统和过程。重要的是,理解实施例可以用许多替代形式提供,并且不应被解释为仅限于本文所述的示例。
因此,虽然实施例可以以各种方式修改并采取各种替代形式,但其具体实施例在附图中示出,并在下文作为示例详细描述。不意欲受限于所公开的特定形式。相反,属于所附权利要求书范围内的所有修改、等效物和替代方案都应当包括在内。在所有附图和适当的具体实施方式中,示例性实施例的元素一致地通过相同的附图标记表示。
本文用于描述实施例的术语并不旨在限制范围。冠词“一个”和“所述”是单数形式,因为它们只有一个所指对象,但本文中使用单数形式不应排除存在多个所指对象。换句话说,除非上下文另外明确指出,否则以单数形式提及的元素在数量上可以是一个或多个。应进一步理解的是,本文中使用的术语“包括”用于说明存在所述特征、项目、步骤、操作、元件和/或部件,但并不排除存在或添加一个或多个其它特征、项目、步骤、操作、元件、部件和/或它们的组合。
除非另有定义,否则本文中使用的所有术语(包括技术和科学术语)都应解释为本领域的习惯用法。还应当理解,除非在本文中明确定义,否则通常用法中的术语也应当被解释为相关领域中的习惯用法,而不应当解释为理想化或过于正式的意义。
根据一个示例,提供了一种用于调节对数据结构中的预定内容集的访问的方法,数据结构定义了用于装置的虚拟内存地址集与物理内存的物理内存地址集之间的映射。该方法在保护代码和关键数据的同时,还能避免保护机制(例如PPL)带来的开销,因为PPL会在审查页表修改时带来延迟,即使受影响的页面与相关代码或关键数据无关。在一种实现方式中,即使在受保护的上下文中操作,也会保留对非受保护的上下文的访问。本文描述的某些示例参考了可以在ARM架构中实现的特权级别之类的方面。然而,本系统和方法同样适用于可以实现相同概念的其他架构。例如,尽管缓存的首要原则(例如,针对最近查询的地址空间等)普遍适用,但转译后备缓冲器的实现方式在不同的架构中可能有所不同。
在一个示例中,通过将要保护的代码和数据限制在少数范围(例如,源自页表中的单个点),例如内核代码和/或内核关键数据,可以减少开销。保护机制(例如PPL),可以用来保护页表中与前一个点及其根相关的子部分。可以使用来自少数连续范围(最好只有一个)的物理页,并实现硬件防火墙以防止从上一点开始对范围内的物理页进行写访问,除非写操作是在保护模式(例如PPL模式)下执行的。
因此,在一个示例中,页表可以由受保护页和未受保护页组成,为了更改受保护页,系统可以转换到受保护的操作模式,例如PPL模式。在一个示例中,未受保护的页面可以在没有任何开销的情况下被修改,从而在创建/删除临时映射时提高系统的整体性能。但是也有副作用,即攻击者(例如,获得了对未受保护的内核数据的读写能力)可以创建受保护页的双重映射,这些映射可以表现出不同的属性。例如,攻击者可以将未受保护的可写页面双重映射为可在受保护的操作模式下独占修改的页面。但是,只要不能使用,双重映射就不是问题。也就是说,一个受保护的页面可以在EL1中以任意数量的位置和方式进行映射,但重要的是,页面内容只能根据合法映射进行访问,而合法映射在EL2中被复制到攻击者无法访问的地方。任何其他违反EL2映射的访问模式都将触发EL2异常。与以前的保护系统相比,这具有显著的性能优势,因为合法访问不会导致任何性能损失。
根据一个示例,可以配置一个或多个比较器单元,以便在系统内存总线上的特定操作被证明与系统启动时配置的选定预定义范围不兼容时,阻止该操作。在一个示例中,可以将范围与当前正在尝试的操作的地址和尝试的操作类型进行比较。范围配置可以在系统的受保护运行模式中独占实现。例如,在系统启动时,可以保留一定范围的连续物理内存页,并且可以将开始/结束值存储在包括一对比较器(范围的每个极端各一个)的状态检查器中。表示系统处理器状态的使能行可用于检查系统是否处于受保护的操作模式。如果是,则跳过测试。但是,如果进程未处于受保护的操作模式,并且尝试写入,则可以将其配置为导致异常。
图1是根据示例的装置的示意图。在图1的示例中,装置100包括处理器101和内存管理装置103。在一个示例中,内存管理装置103用于提供数据结构,数据结构用于将虚拟内存地址105映射到装置100的内存109的物理内存地址107。内存管理装置103可以使用在内存管理装置103的转译后备缓冲器111中提供的数据结构,以根据内存管理装置103从处理器101接收的虚拟内存地址105确定物理内存地址107。表示针对虚拟内存地址105的操作的状态信号113可以由内存管理装置103从处理器101接收。内存管理装置103的防火墙结构117可以将接收的状态信号113与确定的物理内存地址107的允许操作集进行比较,并基于针对接收的状态信号的比较生成第一输出。
确定的物理内存地址107可以与预定的物理内存地址范围进行比较,并且内存管理装置103的防火墙结构117可以基于针对确定的物理内存地址107的比较生成第二输出。内存管理装置103可以使用第一输出、第二输出和表示装置的操作状态的状态信号来生成输出条件信号。也就是说,输出条件信号可以表示根据预定的物理内存地址范围,按照状态信号规定的要求,确定的物理内存地址是否可访问的验证结果。如果验证失败,则异常信号115可以发送回处理器101。异常可以在安全操作模式下由处理器101处理。
因此,可以利用页保护层来保护与受保护的数据和代码相关联的页表的子部分,并独占地使用来自少数连续范围的物理页。除非系统处于特定的操作模式,例如特权操作模式,否则防火墙结构防止对保护范围内的物理页进行更改。针对状态信号113,可以基于虚拟地址105验证转译操作111,并且还可以参考状态信号113,通过防火墙结构117验证对物理地址107的操作。这将开销限制在只修改受保护数据和代码的页表上。
图2是根据示例的防火墙结构的示意图。在图2的示例中,防火墙结构117包括第一比较器单元201,用于接收表示针对第一虚拟内存地址105的操作的第一状态信号113。例如,可以从处理器101接收状态信号113。比较器单元201可以将接收的第一状态信号113与物理内存109的第一物理内存地址107的允许操作集进行比较,其中,第一物理内存地址107可以是通过使用数据结构从第一虚拟内存地址105中确定的,例如用于将虚拟内存地址映射到物理内存109的物理内存地址的数据结构。比较器单元201可以基于针对接收的第一状态信号的比较生成第一输出(在下文中更详细地描述),并且将第一物理内存地址与第一预定物理内存地址范围进行比较,以基于针对确定的第一物理内存地址的比较生成第二输出。可以使用第一输出、第二输出和表示设备的操作状态的状态信号生成第一验证信号203。
从图2可以看出,根据一个示例,防火墙结构117中可以提供多个这样的比较器单元。每个这样的比较器单元可以生成验证信号,并且这些验证信号可以用于确定输出条件信号205。因此,防火墙结构117可以包括多个比较器单元,每个比较器单元用于验证针对特定操作和地址范围执行的操作。如果该对(操作和目标)与比较器单元的目标匹配,则输出条件信号205可以表示一个异常条件,在该异常条件中,操作未根据预定义标准进行验证。
图3是根据示例的比较器单元的示意图。当物理地址107位于编程范围301内,且状态信号113指示禁止操作或其他无效操作时,比较器单元201用于发出错误条件信号。在一个示例中,可以使用表示特权操作模式的信号305来否定(即,有效地绕过)错误条件。处理器101可用于设置比较器单元201的范围301的上限和/或下限,以及用于在物理地址107位于下限和上限内时触发错误条件的信号113。
参考图3,比较器单元201包括逻辑307,该逻辑可通过处理器101等进行设置,用于识别在预定义范围301内的内存范围允许进行的操作309。在一个示例中,比较器单元可以在系统的单个时钟周期内执行验证过程。
在图3的示例中,操作包括“读”、“获取”和“写”,指的是允许对内存地址进行的操作。这些操作中的任何一个或多个操作都可以被标记,表示所讨论的一个或多个操作是不允许的(即,禁止的)。在另一个示例中,可以不标记任何操作。在图3的示例中,操作“获取”被标记,这意味着如果物理内存地址107位于框301中定义的范围内,则不能从其位置取回执行。图3的逻辑307中的其他操作没有被标记意味着这些操作可以针对地址107执行,而不管该地址是否位于301的范围内。也就是说,根据一个示例,为了能够在由上限和下限定义的预选范围301内对物理内存地址执行操作,该操作不能被标记为禁止操作。相反的情况也是可能的,例如,标记的操作是可以允许的操作。在这种情况下,可以对与地址范围和操作模式相关的逻辑信号进行相应的调整,以便达到所需的输出以指示禁止的操作。
因此,在图3的示例中,将状态信号113与确定的物理内存地址107的禁止操作集309进行比较,以便生成第一输出311。将确定的物理内存地址107与预定的物理内存地址范围301进行比较,以便生成第二输出313。使用第一输出311、第二输出313和表示设备的操作状态的状态信号305生成输出条件信号203。在一个示例中,可以基于将第一输出311、第二输出313和状态信号305作为输入的逻辑315生成输出条件信号203。在图3的示例中,当第一输出311是高或二进制1时,从而指示状态信号113包括禁止(即,在图3的示例中标记)操作309;第二输入313有效(例如,高或二进制1),从而指示物理地址107在预选范围301内;状态信号是关或低或二进制零,从而指示系统不处于特权操作模式;逻辑315的输出,即信号203将是高或二进制1,从而指示(1)物理地址107在预选范围301内,(2)对物理地址107的期望操作是禁止操作,(3)系统不处于特权操作模式。在第一输出311、第二输出313和状态信号305中的任何一个包括与上面针对该特定示例描述的值不同的值的情况下,信号203将不同,从而指示(1)物理地址107中的一个或多个不在预选范围301内,(2)对物理地址107的期望操作是允许的操作,(3)系统处于特权操作模式。
因此,参考图3并根据其中呈现的逻辑,当尝试禁止操作时,将生成匹配(即逻辑1)作为与门315的输入。类似地,如果地址范围位于比较器编程的地址范围内,也将生成逻辑1。如果处理器不处于特权模式,这将意味着逻辑0的输入,然后通过与门315的特定输入上的NOT将其转换为逻辑1。因此,总体结果将是除非处理器处于特权(例如,PPL)模式,否则在编程范围上执行的禁止操作将导致错误。在一个示例中,状态信号113可以包括多个数据项,这些数据项表示供逻辑307使用的操作和/或状态信号305。例如,参考图2,可以通过总线207将一个或多个状态信号113传输到多个比较器单元201。类似地,可以通过总线209将表示物理地址107的数据传输到多个比较器单元201。
图4是根据示例的使用比较器单元的示意图。在图4的示例中,以简化形式(例如与图3相比)描述了三个比较器单元201a至201c,这三个单元各自的允许操作309以圆圈示出。具体地,单元201a的禁止操作是“写”(write,W)和“读”(read,R)(仅允许“获取”(fetch,F)(未标记),即可执行内存),单元201b的禁止操作是W和F(仅允许R,即只读数据内存),单元201c的禁止操作是F(R和W均允许,即读写数据内存)。
比较器单元201a至201c中的每一个在逻辑上映射到物理内存地址401的相应连续范围。例如,比较器单元201a映射到范围403,比较器单元201b映射到范围405,比较器单元201c映射到范围407。因此,参考图3,为了相对于范围403中的一个或多个物理内存地址执行操作,状态信号113应当包括允许(即,在图3的示例中标记)操作309,对于单元201a,该操作是F,并且第二输入313应该是有效的,因此所讨论的物理地址107位于预选范围403内(也假设状态信号是关、或低、或二进制零,从而指示系统不处于特权操作模式)。类似地,对于要针对范围405中的一个或多个物理内存地址执行的操作,状态信号113应当包括允许(即,在图3的示例中标记)操作309,对于单元201b,该操作是R,并且第二输入313应该是有效的,因此所讨论的物理地址107位于预选范围405内,以此类推。根据比较器单位的可用性,每种类型可能存在多个范围。
根据一个示例,处理器101或不同的内存管理装置可以预先配置每种类型的物理页的范围。因此,一旦分配了可用的比较器单元,就可以迁移物理页的内容,并相应地调整其映射,以保持类型上的邻接性,同时为进一步的分配腾出空间。
图5是根据示例的系统的示意图。参考图5,通过利用能够访问内存控制器503的外设501攻击内存是可能的。在一个示例中,这样的外设可以是如上所述的防火墙。例如,可以复制为内存管理装置描述的相同方案。不同的是,处理器505CPU可以控制外设501的防火墙配置,并处理可能报告的任何违规507。在一个示例中,只有某些外设可能具有“获取”状态行,因为并非所有外设都需要获取和执行指令。
上述示例针对的是可按照多种运行模式(例如EL2)运行的系统。例如,如果存在运行在更高特权模式下的虚拟机监视器,则该虚拟机监视器将具有相同或更高的访问权限,并且可以实现聚合执行状态的保存/恢复,包括但不限于比较器单元的配置。
本发明中的示例可以作为方法、系统或机器可读指令提供,例如软件、硬件、固件等的任意组合。这种机器可读指令可以包括在计算机可读存储介质(包括但不限于磁盘存储、CD-ROM、光学存储等)中,该介质或其上具有计算机可读程序代码。
本发明参照根据本发明示例的方法、设备和系统的流程图和/或框图进行描述。尽管上面描述的流程图示出了特定的执行顺序,但执行顺序可能与所描述的不同。与一个流程图有关的框可以与另一个流程图的框组合。在一些示例中,流程图的某些框可能是不必要的和/或可以添加额外的框。应当理解,流程图和/或框图中的每个流程和/或框,以及流程图和/或框图中的流程和/或框图的组合可以通过机器可读指令实现。
例如,机器可读指令可以由通用计算机等机器、智能设备等用户设备(例如智能手机、专用计算机、嵌入式处理器或其它可编程数据处理设备的处理器)执行,以实现实施方式和图中描述的功能。具体地,处理器或处理装置可以执行机器可读指令。因此,装置的模块(例如,实现比较器单元的模块,或防火墙结构等)可以由执行存储在存储器中的机器可读指令的处理器实现,或根据嵌入在逻辑电路中的指令操作的处理器实现。术语“处理器”被广义地解释为包括CPU、处理单元、ASIC、逻辑单元或可编程门组等。这些方法和模块都可以由单个处理器执行,也可以由多个处理器来执行。
这样的机器可读指令也可以存储在计算机可读存储中,可以指导计算机或其它可编程数据处理设备在特定模式下操作。例如,指令可以在由处理器可执行的指令编码的非瞬时性计算机可读存储介质上提供。
图6是根据示例的机器的示意图。例如,机器600可以是系统或装置(例如100)、用户设备或其部分。机器600可以包括防火墙结构601,例如上面参考图2和3描述的防火墙结构。机器600包括处理器603和存储可由处理器603执行的指令607的内存605。机器包括存储609,可用于存储到/从虚拟内存地址到物理内存地址的映射、对应于内存范围的允许操作等,例如如上参考图1至图5所述。
可由处理器603执行的指令607可使机器600调节对数据结构中的预定内容集的访问,数据结构定义了装置的虚拟内存地址集与物理内存的物理内存地址集之间的映射。指令607可以使机器600使用数据结构,从由内存管理装置接收的虚拟内存地址确定物理内存地址,接收表示针对虚拟内存地址的操作的状态信号,将接收的状态信号与针对确定的物理内存地址的允许操作集进行比较,并基于针对接收的状态信号的比较生成第一输出,将确定的物理内存地址与预定的物理内存地址范围进行比较,并基于针对确定的物理内存地址的比较生成第二输出,使用第一输出、第二输出和表示装置的操作状态的状态信号生成输出条件信号。
相应地,机器600可以实现用于调节对数据结构中的预定内容集的访问的方法,数据结构定义了装置的虚拟内存地址集与物理内存的物理内存地址集之间的映射。
此类机器可读指令还可以加载到计算机或其他可编程数据处理设备上,使得计算机或其他可编程数据处理设备执行一系列操作以生成计算机实现的处理指令,因此在计算机或其他可编程设备上执行的指令将提供用于实现由流程图中的流程和/或框图中的方框所指定功能的操作。
此外,本文的教导可以以计算机或软件产品的形式实现,例如非瞬时性机器可读存储介质,计算机软件或产品存储在存储介质中并且包括多个指令,例如机器可读指令,用于使计算机设备实现在本发明的示例中所述的方法。
在一些示例中,一些方法可以在基于云计算或网络的环境中执行。云计算环境可以通过互联网提供各种服务和应用。这些基于云的服务(例如,软件即服务、平台即服务、基础设施即服务等)可以通过用户设备的网络浏览器或其它远程接口等来访问。本文描述的各种功能可以通过远程桌面环境或任何其它基于云的计算环境来提供。
尽管在本文中已经在全功能计算系统的上下文中描述和/或示出了各种实施例,但这些示例性实施例中的一个或多个可以以各种形式作为程序产品分发,而不管用于实际执行分发的计算机可读存储介质的特定类型。本文公开的实施例也可以使用执行某些任务的软件模块来实现。这些软件模块可以包括脚本、批处理或其它可执行文件,这些文件可以存储在计算机可读存储介质上或计算系统中。在一些实施例中,这些软件模块可以配置计算系统以执行本文公开的一个或多个示例性实施例。此外,本文描述的一个或多个模块可以将数据、物理设备和/或物理设备的表示从一种形式转换为另一种形式。
提供上述描述是为了使本领域技术人员能够最好地利用本文所公开的示例性实施例的各个方面。本示例性描述并不旨在穷举或限于所公开的任何精确形式。在不脱离本发明的精神和范围的情况下,可以进行许多修改和变化。本文公开的实施例在所有方面都应该被认为是说明性的而不是限制性的。在确定本发明的范围时,应参考所附权利要求书及其等同物。

Claims (19)

1.一种用于访问存储在设备的物理内存中的数据结构的内存管理装置,其特征在于,所述数据结构用于将虚拟内存地址映射到所述物理内存的物理内存地址,所述内存管理装置用于:
使用所述数据结构,从所述内存管理装置接收的虚拟内存地址中确定物理内存地址;
接收表示针对所述虚拟内存地址的操作的状态信号;
将所述接收的状态信号与针对所述确定的物理内存地址的允许操作集进行比较,并基于针对所述接收的状态信号的所述比较生成第一输出;
将所述确定的物理内存地址与预定的物理内存地址范围进行比较,并基于针对所述确定的物理内存地址的所述比较生成第二输出;
使用所述第一输出、所述第二输出和表示所述设备的操作状态的状态信号生成输出条件信号。
2.根据权利要求1所述的内存管理装置,其特征在于,所述内存管理装置还用于:
在所述输出条件信号表示异常值的情况下,将所述输出条件信号提供给所述设备的处理器。
3.根据权利要求1或2所述的内存管理装置,其特征在于,所述内存管理装置还用于:
在所述输出条件信号表示允许值的情况下,将所述确定的物理内存地址提供给所述设备的内存控制器。
4.根据上述权利要求中任一项所述的内存管理装置,其特征在于,所述内存管理装置还用于使用所述状态信号确定所述设备的所述处理器是否在受保护状态下操作。
5.根据上述权利要求中任一项所述的内存管理装置,其特征在于,所述内存管理装置还用于防止对所述预定的物理内存地址范围内的物理内存地址进行写访问。
6.一种用于设备的内存管理装置的防火墙结构,其特征在于,所述防火墙结构包括第一比较器单元,用于:
接收表示针对第一虚拟内存地址的操作的第一状态信号;
将所述接收的第一状态信号与物理内存的第一物理内存地址的允许操作集进行比较,其中,所述第一物理内存地址是通过使用数据结构从所述第一虚拟内存地址中确定的,并基于针对所述接收的第一状态信号的所述比较生成第一输出;
将所述第一物理内存地址与第一预定物理内存地址范围进行比较,并基于针对所述确定的第一物理内存地址的所述比较生成第二输出;
使用所述第一输出、所述第二输出和表示所述设备的操作状态的状态信号生成第一验证信号。
7.根据权利要求6所述的防火墙结构,其特征在于,所述防火墙结构还包括第二比较器单元,用于:
接收表示针对第二虚拟内存地址的操作的第二状态信号;
将所述接收的第二状态信号与所述物理内存的第二物理内存地址的允许操作集进行比较,其中,所述第二物理内存地址是通过使用所述数据结构从所述第二虚拟内存地址中确定的,并基于针对所述接收的第二状态信号的所述比较生成第三输出;
将所述第二物理内存地址与第二预定物理内存地址范围进行比较,并基于针对所述确定的第二物理内存地址的所述比较生成第四输出;
使用所述第三输出、所述第四输出和所述状态信号生成第二验证信号。
8.根据权利要求7所述的防火墙结构,其特征在于,所述防火墙结构还用于:
使用所述第一验证信号和所述第二验证信号生成输出条件信号。
9.根据权利要求8所述的防火墙结构,其特征在于,所述防火墙结构还用于通过使用所述第一验证信号和所述第二验证信号执行逻辑运算来生成所述输出条件信号。
10.一种包括处理器和内存管理装置的装置,其特征在于,所述内存管理装置包括数据结构,所述数据结构用于将虚拟内存地址映射到所述装置的内存的物理内存地址,其中,所述内存管理装置用于:
使用所述数据结构,根据所述内存管理装置从所述处理器接收的虚拟内存地址中确定物理内存地址;
从所述处理器接收表示针对所述虚拟内存地址的操作的状态信号;
将所述接收的状态信号与针对所述确定的物理内存地址的允许操作集进行比较,并基于针对所述接收的状态信号的所述比较生成第一输出;
将所述确定的物理内存地址与预定的物理内存地址范围进行比较,并基于针对所述确定的物理内存地址的所述比较生成第二输出;
使用所述第一输出、所述第二输出和表示所述装置的操作状态的状态信号生成输出条件信号。
11.根据权利要求10所述的装置,其特征在于,所述处理器还用于:
在所述输出条件信号表示允许值的情况下,将所述确定的物理内存地址提供给所述装置的内存控制器。
12.根据权利要求10或11所述的装置,其特征在于,所述处理器还用于:
使用所述状态信号确定所述装置是否在受保护状态下操作。
13.根据权利要求10所述的装置,其特征在于,所述处理器还用于:
防止对所述预定的物理内存地址范围内的物理内存地址进行写访问。
14.一种用于调节对数据结构中的预定内容集的访问的方法,其特征在于,所述数据结构定义了用于装置的虚拟内存地址集与物理内存的物理内存地址集之间的映射,所述方法包括:
使用所述数据结构,从虚拟内存地址中确定物理内存地址;
接收表示针对所述虚拟内存地址的操作的状态信号;
将所述接收的状态信号与针对所述确定的物理内存地址的允许操作集进行比较,并基于针对所述接收的状态信号的所述比较生成第一输出;
将所述确定的物理内存地址与预定的物理内存地址范围进行比较,并基于针对所述确定的物理内存地址的所述比较生成第二输出;
使用所述第一输出、所述第二输出和表示所述装置的操作状态的状态信号生成输出条件信号。
15.根据权利要求14所述的方法,其特征在于,所述方法还包括:
在所述输出条件信号表示异常值的情况下,将所述输出条件信号提供给所述装置的处理器。
16.根据权利要求14或15所述的方法,其特征在于,所述方法还包括:
在所述输出条件信号表示允许值的情况下,将所述确定的物理内存地址提供给所述装置的内存控制器。
17.根据权利要求14至16任一项所述的方法,其特征在于,所述方法还包括:
使用所述状态信号确定所述装置的所述处理器是否在受保护状态下操作。
18.根据权利要求14至17任一项所述的方法,其特征在于,所述方法还包括:
防止对所述预定的物理内存地址范围内的物理内存地址进行写访问。
19.一种使用指令编码的机器可读存储介质,其特征在于,所述指令用于调节对数据结构中的预定内容集的访问,所述数据结构定义了用于装置的虚拟内存地址集与物理内存的物理内存地址集之间的映射,所述指令可由所述装置的处理器执行,从而使所述装置:
使用所述数据结构,从内存管理装置接收的虚拟内存地址中确定物理内存地址;
接收表示针对所述虚拟内存地址的操作的状态信号;
将所述接收的状态信号与针对所述确定的物理内存地址的允许操作集进行比较,并基于针对所述接收的状态信号的所述比较生成第一输出;
将所述确定的物理内存地址与预定的物理内存地址范围进行比较,并基于针对所述确定的物理内存地址的所述比较生成第二输出;
使用所述第一输出、所述第二输出和表示所述装置的操作状态的状态信号生成输出条件信号。
CN202180102085.2A 2021-10-15 2021-10-15 调节对内存的访问 Pending CN117916720A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/EP2021/078588 WO2023061607A1 (en) 2021-10-15 2021-10-15 Regulating access to memory

Publications (1)

Publication Number Publication Date
CN117916720A true CN117916720A (zh) 2024-04-19

Family

ID=78212123

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180102085.2A Pending CN117916720A (zh) 2021-10-15 2021-10-15 调节对内存的访问

Country Status (2)

Country Link
CN (1) CN117916720A (zh)
WO (1) WO2023061607A1 (zh)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2396930B (en) * 2002-11-18 2005-09-07 Advanced Risc Mach Ltd Apparatus and method for managing access to a memory
US9747052B2 (en) * 2013-02-05 2017-08-29 Arm Limited Virtualisation supporting guest operating systems using memory protection units to determine permission of a memory access operation for a physical address

Also Published As

Publication number Publication date
WO2023061607A1 (en) 2023-04-20

Similar Documents

Publication Publication Date Title
US9390031B2 (en) Page coloring to associate memory pages with programs
CN109840410B (zh) 一种进程内数据隔离与保护的方法和系统
JP6652491B2 (ja) 目標メモリ・アドレスに対応するメモリ属性ユニットの領域を特定するための領域特定演算
US8423747B2 (en) Copy equivalent protection using secure page flipping for software components within an execution environment
US10073986B2 (en) Regulating access to and protecting portions of applications of virtual machines
US7631160B2 (en) Method and apparatus for securing portions of memory
US7401358B1 (en) Method of controlling access to control registers of a microprocessor
US10198578B2 (en) Secure privilege level execution and access protection
US7043616B1 (en) Method of controlling access to model specific registers of a microprocessor
US7130977B1 (en) Controlling access to a control register of a microprocessor
US7082507B1 (en) Method of controlling access to an address translation data structure of a computer system
US9158710B2 (en) Page coloring with color inheritance for memory pages
US7512768B2 (en) Dynamically sharing a stack between different code segments
KR20230017832A (ko) Tag 체킹 장치 및 방법
US20230409494A1 (en) Technique for constraining access to memory using capabilities
CN117916720A (zh) 调节对内存的访问
CN116635855A (zh) 基于执行上下文管理可执行代码对数据内存的访问的装置和方法
WO2022054041A1 (en) Preventing execution of unauthorized code by validating attempted changes to page tables in a cpu privilege mode
WO2013074071A1 (en) Regulating access to and protecting portions of applications of virtual machines

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