CN1877547A - 提供扩展的存储器保护 - Google Patents

提供扩展的存储器保护 Download PDF

Info

Publication number
CN1877547A
CN1877547A CNA2006100841661A CN200610084166A CN1877547A CN 1877547 A CN1877547 A CN 1877547A CN A2006100841661 A CNA2006100841661 A CN A2006100841661A CN 200610084166 A CN200610084166 A CN 200610084166A CN 1877547 A CN1877547 A CN 1877547A
Authority
CN
China
Prior art keywords
memory
protection
impact damper
address
record
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.)
Granted
Application number
CNA2006100841661A
Other languages
English (en)
Other versions
CN1877547B (zh
Inventor
A·程
F·麦克金
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN1877547A publication Critical patent/CN1877547A/zh
Application granted granted Critical
Publication of CN1877547B publication Critical patent/CN1877547B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/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/145Protection 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 virtual, e.g. for virtual blocks or segments before a translation mechanism
    • 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/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1063Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Storage Device Security (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

在一个实施例中,本发明提供用于系统的存储器的扩展存储器保护。所述实施例包括将保存在应用的数据空间外面的保护记录的保护指示器与存储器位置相关联,并且基于所述保护指示器的状态阻止访问所述存储器位置的方法。如此,提供更安全操作,将阻止像恶意代码或者其他不良制品不能访问受保护的存储器位置。其他的实施例被描述和要求。

Description

提供扩展的存储器保护
背景技术
计算机工业在过去的若干年中遭受了无数的安全弱点,并且弱点的数量继续增长着。这些弱点中的多数已经变为危及到受攻击的机器的完整性的攻击了。许多这些攻击的根本原因在于生成或者修改代码时产生的编程错误。
若干解决方法已经被尝试。编写安全代码的过程已经被一些组所运行。可控制运行时间环境(MRTE)在其被使用之处是有效的,但是不包含全部的编程空间。没有一个所述努力已经设法反转不断上升的弱点,攻击和补丁。减少编程错误的数量将导致减少安全弱点的数量并且提高系统完整性。
一个通常的弱点是缓冲器溢出攻击。如此攻击的一个示例发生在恶意代码重写存储在栈中函数的返回地址。取决于来自所述函数的返回,被修改的返回地址被压栈到指令指针(扩展指令计数器(EIP)寄存器)。这个被修改的返回地址可能引起恶意代码和/或栈执行错误的执行。如此的攻击典型地被不良的编程实践,例如,未检查的缓冲器传输,所激活。相反地,一个好结构的程序将存储器映射为结构化的部分,包括包含程序代码的文本位置,存储已初始化和未初始化的全局数据的数据段,以及被栈和堆分享的部分。所述栈可以用来存储函数调用的参数、本地变量和所选择寄存器的值,例如EIP寄存器函数。所述堆保存动态变量。不良的编程实践可能导致这些段被重写。
存在未检的缓冲器可以驻留于那里的其他位置。如此位置的一个示例是缓冲器溢出到堆存储器。堆存储器是从共有的存储池分配的并且被程序用来存储变量和其他运行时间数据的存储器。
因而存在提供更多免于安全弱点的保护的需要。
附图的简要说明
图1是根据本发明的实施例的检查存储器访问的方法的流程图;
图2是根据本发明的实施例的可以被使用的缓冲器的方块图;
图3是根据本发明的实施例的不同的管线结构;
图4是根据本发明的一个实施例的方法的流程图;
图5是根据本发明的另一个实施例的方法的流程图;
图6是根据本发明的一个实施例的系统的方块图。
发明的详细描述
本发明的实施例提供一种标记存储器位置为不可访问的机制。如果程序尝试去访问受保护的存储器位置,所述机制可以发出一个存储器访问干扰的信号。也就是说,根据本发明实施例的存储器保护可以提供与所述存储器位置相关联的合适大小的断点。可以通过标记所述位置对某种类型的操作是不可操作的来保护所述位置。于是,更多的安全操作发生。
在不同的实施例中,属性位被定义为提供存储器位置的保护。这些位指示访问是否可以被准许以进行读或者写操作。这些属性可以通过提供在变量上的访问控制,提供扩展存储器保护(EMP),在一些实施例中所述变量可以被定义为存储器的32个位。由EMP激活编译器所生成的程序将设置所述变量去提供支持的正确等级。通过不设置任何这些属性位,传统程序可以无缝地操作。
可以理解的是存储器保护的特性可以是结构特定的。所述选择可以包括,例如,被提供的访问保护类型:读保护,写保护,执行保护,或者所有这三种的一些混合选择;每一属性位所覆盖的地址范围;别名或者与其他属性相一致的能力;可操作地址空间:虚拟的或者物理的;以及将地址转化为相应的保护值的保护移动处理。
在一个实施例中,基于读/写的限制定义四个状态,每个用一位表示。这些状态可以相应于具有被称作未分配(unallocated),未激活(uninitialized),激活(initialized),和锁定(locked)的四个状态的缓冲器使用模型。这个模型可以被分别映射到下述状态,no_read-no_write;no_read-write_ok;read_okay-write_ok;和read_ok-no_write。例如,no_read-no_write状态可以通过设置读和写保护位而被定义。如果读或者写发生在具有那些保护位设置的位置,如此的异常可以被生成。
EMP信息可以被保持在主存储器中并且可以直接对应于所述机器中的每个可寻址的存储器部件。即,每个可寻址的存储器部件可以具有与其相关联的一组EMP属性。EMP信息可以被处理为存储器中的属性页。这些页在所述程序的虚拟地址空间中是不可访问的,但是改为可以由特殊的指令进行访问。所述属性位可以在每次存储器访问上被检查。如果所述位指示限制访问位置,存储器访问干扰被生成。
在虚拟存储器分页系统中,程序在逻辑地址空间中制造存储器基准。所述逻辑地址接着通过分段被变换为线性或者虚拟地址。最终,处理器的分页机制将虚拟地址转化为相应于所述数据被存储在物理存储器中的位置的物理地址。如果基于EMP的虚拟地址被执行或者激活,所述处理器把来自所述虚拟地址的附加转化制成存储在单独的EMP物理地址空间中的EMP限制记录。
现在参考图1,其表示根据本发明的实施例的检查存储器访问的方法的流程图。如图1所示,数据访问要求10被接收到处理器中,数据访问要求10包括虚拟地址,访问大小和访问类型(例如,read(R)或者write(W)操作)。所述虚拟地址信息被提供到页转化机制20和EMP转化机制30。这些转化机制将来自数据访问要求10的虚拟地址信息转化为物理地址空间。
如图1所示,通过页转化机制20获得的物理地址被提供到逻辑操作器25,其将物理地址与操作类型结合以访问物理存储器50中的数据。更特别地,使用获得的物理地址,在数据页60之中的所需数据65可以被访问。
然而,在能够访问所需数据65之前,在于其中EMP被激活的实施例中,可以首先决定是否数据65的存储器位置是允许被访问的。例如,如果EMP被激活并且对所要求的数据65的访问被限制,读或者写操作可以被阻止。
也就是说,来自数据访问要求10的虚拟地址信息被提供到EMP转化机制30,在那里所述虚拟地址被转化为相应于EMP或者存储于EMP页70(与数据页60相关联)的限制记录75(与数据65相关联)的物理地址。被访问的EMP记录75被提供到EMP检查机制40,在那里可以决定到被要求的数据65的访问是否被允许。例如,EMP记录75的一个或者多个位可以指示到相应的被要求数据65的访问不被允许。如果这样的访问不被允许EMP检查机制40可以在信号线45上生成EMP保护干扰(EPV)。据此,到数据65的访问被阻止。
如此如果EMP写保护为了特定虚拟地址而设置并且存在到那个地址的数据写尝试,所述处理器可以提升EMP保护干扰(EPV)异常。EMP读保护在数据读访问上具有相同的效果。在一些实施例中,归因于代码取回的存储器读可能不被认为是数据读访问。在不同的实施例中,EMP异常处理器可以被用于以安全方式从保护干扰恢复。
在不同的实施例中,EMP限制的检查是混合诊断特权级。即,如果EMP写保护被设置到特定存储器位置,所有到那个位置的写尝试将导致EPV异常而不管当前程序的特权级。在这些实施例中,所有页限制必需还要满足成功的基准。EMP异常不发生,如果所述页等级保护不允许在当前特权级的访问。
EMP标志可以被包含在处理器控制结构,例如控制寄存器(例如,控制寄存器4(CR4))之中。在一些实施例中,EMP标志的默认设置是零(cleared),意味着不存在用于任何数据访问的EMP限制检查,当所述EMP限制检查是全局未激活的,没有让所述处理器在每一数据访问的虚拟地址上执行EMP地址转化的需要。为了激活EMP限制检查,所述EMP标志可以被设置为1。
所述EMP物理地址空间对虚拟地址空间中的软件程序是不可视的。据此,操作系统(OS)可以阻止通过规则的分页机制暴露EMP物理地址。为了修改EMP限制属性,软件程序可以使用指令去改变所述存储器属性,例如移动存储器限制(例如,MOVMR指令),其可以将所述存储器属性(EMP限制记录)移动到物理空间中的EMP存储器中。
所述EMP保护干扰(EPV)可以具有它自己的异常向量标识符(ID)。所述处理器提升EPV异常,如果数据访问失败于所述EMP限制检查。另外,EPV异常也可以在MOVMR指令期间被提升。EPV可以被认为是指令执行错误。所述结果的中断是准确的并且阻止所述指令执行。
当所述EPV异常出现,它将错误代码放置在当前栈上。所述错误代码可以包括多个错误状态位。在所述错误代码中的每个位可以被用于指示所述EPV异常的不同的原因。当EPV出现,被所述EMP转化或者限制检查所激活的资源虚拟地址被存储在特定的位置中,例如,在控制寄存器(例如,CR2)之中。
在不同的实施例中,如此的EMP机制可以以不同的方式被使用以增加系统完整性。当一些实施例可以保护栈变量和参数,和堆变量的时候,可以理解的是本发明的范围并不被如此地限制。
在接下来的示例中,使用在虚拟地址模型上的字节大小的离散写保护。在如此的实施例中,为了可寻址数据(在虚拟地址空间中)的每一字节,存在与之相关联的写保护属性位。如果这个位被设置,任何写入这个位置的尝试可能引起结构的异常。对于每一虚拟地址页,所述操作系统(OS)可以分配保护记录,例如在分离的虚拟存储器位置中的相应大小(例如,1位每字节)的向量。在一个实施例中,每一EMP限制记录描述对于虚拟地址的32位(4字节)的数据访问限制。如果数据访问覆盖多重4字节数据块,多重EMP限制记录可以被使用。这个向量在物理存储器中的位置可以通过保护移动机制而被提供。在一个实施例中,这个机制可以与页移动机制相似,以到向量基础地址的最后进入指针,替代所述物理页。在另一个实施例中,包括以软件帮助的哈希表的不同的转化方案也是可能的。
虽然在此被描述为字节大小写保护,在其他实施例中写保护和其他保护粒度可以被执行。在此限制记录也可以被认为与向量有关。向量可以被保护以免于通过规则的存储操作的修改。例如,特殊的指令可以被用户应用所使用以修改向量之中的特定位。这个指令可以被认为与“set/clear protection”(“设置/清除保护”)指令有关。假设虚拟地址,所述特殊设置或者清除指令可以被用于在没有引起异常的情况下修改适当的属性位。
所述栈可以通过标记关键存储器位置,例如所述返回地址为不可访问的,被保护免于缓冲器溢出和其他危险的重写。例如,编译器可以在程序的入口之上发出代码以标记所述返回地址为不可访问的。所述程序将尝试经过给定的变量并且进入所述返回地址的写,接着利用EMP机制检测错误。所述错误可以被报告为存储器访问干扰。结果,所述写不发生,并且错误处理器可以决定解决所述错误的合适方式,不象缓冲器溢出检测方案,其仅仅在所述缓冲器已经被恶化之后检测溢出。
可以以两种方式保护所述堆存储器。未分配或者再分配的存储器可以被标记为未分配。任何那些位置的参考都将生成错误。进一步地,所述堆管理器可以标记关键指针和内部变量为不可访问的。
例如,现在参考图2,其表示根据本发明的实施例的可以被使用的缓冲器方块图。所述缓冲器可以处在数据堆或者栈结构之中,并且如图2所示,可以包括多重数据块,其包括x字节长的第一数据块115和y字节长的第二数据块125。两个数据块115和125的每个都具有与之相关联的块首部。特别地,块115包括首部110并且块125包括首部120。另外,首部105被表示为零字节块。
在缓冲器溢出攻击中,恶意代码重写所述缓冲器从一个被分配的块到下一块并且修改其中的数据。为了避免如此的缓冲器溢出,本发明的实施例可以利用保护记录来保护每个缓冲器块的块首部。例如,图2的首部105,110,和120每个都可以具有与之相关联的保护指示器,其被设置去指示这些存储器位置对于写和/或读操作是不可访问的。这些保护指示器可以被存储在一个或者多个保护向量或者记录中,例如,图1的EMP记录75。
为了最小化由于对保护信息的额外存储器访问的执行损失,保护高速缓存和保护转化后备缓冲器(PTLB)可以被包含在存储器管线中。现在参考图3,其表示根据本发明的实施例的不同管线结构的方块图。如图3所示,微处理器200可以包括不同的处理器资源去激活保护数据的存储和检查。
在图3的实施例中,处理器200可以包括被用来存储放置于物理存储器中的EMP记录的子集的保护缓冲器210。以这样一种方式,这些最近或者最频繁的被访问保护记录可以被快速地获得,而不需要从存储器分级系统获得所述信息的潜在击中时间。
进一步如图3所示,数据转化后备缓冲器(DTLB)220被表示为存储数据地址转化的副本。相似地,PTLB 230被表示为存储从虚拟地址到最近被访问的保护记录的物理地址的转化。这些结构210,220和230的每一个都被耦合去接收例如,相应于存储操作的虚拟地址。物理存储器270被耦合到这些管线结构。在不同的实施例中,可以以类似于用于分页函数的微体系结构设计所述EMP结构。在一些实施例中,用于EMP和分页的电路可以被共享。
保护高速缓存210包括具有保护向量的高速缓存线的数据部分。当每条高速缓存线的长度是明确执行的时,所述长度可以是数据高速缓存线的大小的倍数以简化分离地址的操作。代替使用所述保护向量地址作为查找标识符,自所述管线中接收的存储操作的原始虚拟地址可以被用于访问保护高速缓存210的标识符队列。所述保护向量高速缓存线的地址被存储在高速缓存中作为地址检验数据。伴随着这种结构,高速缓存查找可以同时发生在DTLB和PTLB查找中,或者所述存储要求的虚拟地址一变为有效所述高速缓存查找就发生。
DTLB 220连同保护激活信号,被耦合以提供地址页到保护高速缓存210。相似地,DTLB 220提供保护激活信号到PTLB 230。
来自DTLB 220和PTLB 230的结果可以通过比较所述结果和所述地址检查数据,被用于限制所述高速缓存查找结果。除发送地址到高速缓存210之外,DTLB 220或者PTLB 230可能禁止所述高速缓存查找结果。在如此的高速缓存中,所述高速缓存结果由于没有从那里驱动的输出而被舍弃。所述查找结果例如,在DTLB或者PTLB丢失,页等级保护查找禁止(DTLB/PTLB),和处理器状态保护查找禁止的时候被禁止。
如果所述虚拟地址相应于要求存在于PTLB 230中,所述EMP记录的物理地址连同PTLB命中信号,被提供到保护高速缓存210。类似用于页移动的TLB,PTLB 230可以被用于加速保护移动的过程。并且,类似于用于页移动的TLB,PTLB230可以被明确的执行。例如,其可以是单个或者多重等级TLB,其可以支持一个或者多个移动树型定义,并且也可以利用有软件帮助的哈希表。
PTLB查找可以开始于引入存储操作的虚拟页地址,其可以与DTLB查找同时进行。PTLB 230的数据输出是用于相应页的保护记录的物理开始。所述PTLB将发送这个地址并且命中(或者激活)信号到保护高速缓存210。当DTLB220已经激活用于那个页的保护的时候,所述PTLB输出仅仅在DTLB命中上是相关的。使用连同来自DTLB 220和PTLB 230的信息一起被接收的虚拟地址,保护高速缓存210可以决定所述被要求的EMP记录是否存在。如此的信号虚拟地址可以被用于获得对所述存储要求(例如,存储器中的信息)的物理地址的转化以及相应于所述存储要求的EMP记录的物理地址。
如果所述高速缓存查找输出未被舍弃,并且所有相应于所述存储要求的保护位被高速缓存在它的结构之中,高速缓存命中发生。除报告所述高速缓存命中之外,保护高速缓存210可以在所有被所述存储要求覆盖的保护位上执行逻辑“OR”操作。也就是说,除了高速缓存物理地址转化,保护高速缓存210利用存储大小信息的字节屏蔽指示,执行位索引。如果所述结合保护被设置,写访问干扰可以被生成(图3的“Write Protected”(写保护)信号),导致软件可视例外,例如,EPV。如此结合的物理地址可以被用于检查与存储器位置相关联的存储器保护。
如果替换命中发生并且所述被要求数据不是保护的主体,保护高速缓存210输出允许信号(图3的“Write Permitted”(写允许)信号),指示所述访问可能发生。
如果所述高速缓存查找输出未被舍弃,但是所述存储地址未在所述高速缓存标识符队列中,或者所述检查地址与DTLB/PTLB输出不匹配,那么高速缓存丢失发生。结果,保护高速缓存210可以通过发送丢失信号到PTLB 230来要求连同关于所述存储数据的必需的地址信息一起的填充操作。PTLB 230可以接着启动在存储器270的相应保护记录275中被要求的高速缓存线的存储器读。所述存储操作接着将在完成所述高速缓存填充后(发生在线280上)重访问所述存储器管线。
如果PTLB查找失败并且保护为所述被要求页所激活,PTLB丢失发生。如果丢失发生在PTLB 230中(例如,没有到被要求的EMP记录275的物理地址的转化存在),PTLB丢失信号被生成并且被发送到保护丢失处理器(PMH)240。PMH 240可以与页丢失处理器类似地操作以引起保护页移动去获得相应于所需EMP记录的物理地址。PMH 240执行具有所述原始要求地址的保护移动。
如此所示,PMH 240启动页移动,在其中不同的页表可以被访问以获得所需物理地址并且提供其到PTLB 230以存储。在图3所示的实施例中,三级分页结构被表示为包括第一份页结构252,第二分页结构254,和第三分页结构256。如此的页表可以相应于64位虚拟地址,包括页映射等级4(PML4)表,页目录指针表,和页目录。据此,PMH 240可以提供在页表之中的入口到PTLB 230。轮流地这个入口可以连同由保护高速缓存210提供的字节偏移量,被用于访问物理存储器270之中的所需EMP记录275。
当然,实际的保护移动状态机取决于所述保护移动算法的结构选择。依据所述保护移动的完成,PTLB 230可以自动地启动用于当前存储操作的所需标准高速缓存线的高速缓存填充操作。如上所述,所述存储操作可以在所述高速缓存填充操作完成之后被重试。据此,PMH 240可以提供页表之中的入口给PTLB230。轮流地这个入口可以连同由保护高速缓存210提供的字节偏移量一起,被用于访问物理存储器270之中的所需EMP记录275。
在一些实施例中,PTLB入口可以通过明确的命令或者容量置换而被替代。当所述相应的高速缓存线不需要被刷新的时候,因为PTLB命中是高速缓存命中的首要条件,如此的刷新可以提升高速缓存的效率。虽然表示的是图3实施例中的特定结构,在其他的实施例中,高速缓存210,DTLB 220,和PTLB 230可以被结合在单个的存储器结构之内。
现在参考图4,其表示根据本发明的一个实施例的方法的流程图。如图4所示,方法300可以被用于提供存储器保护到特定的存储器位置。方法300可以通过接收设置的保护指令而开始(方块310)。如此的指令可以通过编译器发出以激活指定的存储器位置的保护,就像缓冲器首部以阻止缓冲器溢出攻击。
接下来,可以决定所需保护(例如,读或者写保护)的类型以及被保护的存储器的位置(方块320)。例如,所述栈中缓冲器首部的位置可以被决定。使用这个位置信息,相应于所述存储器位置的保护记录可以被访问(方块330)。例如,这个保护记录可以被存储于系统存储器的分离的保护页中。最终,在所述保护记录之中的位可以被设置为相应于所述存储器位置(方块340)。作为示例,保护记录可以是具有八位的向量,每个都相应于存储器四字节段。据此,相应于包括缓冲器首部的四字节块的给定位可以据此被设置。
现在参考图5,其表示使用如图3所示的附加管线结构的扩展存储器保护实现的流程图。如图5所示,方法400可以经由接收存储操作(方块410)而开始。所述存储操作的虚拟地址可以被应用于保护高速缓存和TLB(例如,DTLB和PTLB)(方块420)。
接下来,决定是否存在保护TLB丢失(菱形430)。如果如此,保护页丢失发生并且保护页移动机制可以被执行(方块440)。如果保护TLB命中或者依据所述页移动的完成,接下来可以决定是否存在保护高速缓存命中(菱形445)。如果没有,高速缓存填充操作可以被执行(方块450),并且控制返回到方块420。正如上面所讨论的,所述高速缓存填充可以从系统存储器获得所需保护记录并且将它提供到所述保护高速缓存。
如果改为在菱形445处具有保护高速缓存命中,所述存储操作的保护状态可以被决定(方块460)。例如,所述保护缓存或者其他结构可以执行逻辑操作去决定一个或者多个相应于所述存储操作的命中是否被设置,以指示被保护的状态。如此,可以决定相应于所述存储操作的地址是否被保护(菱形470)。如果没有,所述操作可以被允许(方块480)。如果改为所述地址被保护,存储器访问干扰可以被以信号通知(方块490)。
在一些实施例中,依照本发明的实施例的EMP可以提供硬件中的运行时间检查,其作为减小来自编程错误的灾难性后果并且确保具有暴露错误的程序的可控终止的方法。如此,更好的调试探测和验证可以提高代码释放之前错误的探测和覆盖。
EMP机制可以为了意外行为而检查程序。作为示例,如此的检查可以包括为了越过变量端到未分配的存储器位置,以及到未启动的存储器位置的访问的检查。所述检查不被限定在特定的语言和子程序中。另外,EMP机制可以被用来通过保护关键数据而保持,例如所述堆的关键组合块的完整性。
以这种方式,通过提供微结构支持,存储器保护能以对流水线通用处理器中的存储器管线的标准路径发生最小的影响来实现。据此,如此保护的执行总开销远远少于基于重写探测机制的软件。
如此,软件的完整性可以被提高。作为一个应用方案,在所述堆和栈结构中的增强的缓冲器溢出探测可以被实现。在所述数据堆的上下环境中,堆管理器可以使用保护机制去保护每个被分配的缓冲器的块首部。如果从一个被分配的块到下一块尝试缓冲器溢出攻击,所述保护机制将探测到它并且阻止所述有害的修改。据此,缓冲器溢出和其他的重写攻击可能被阻止而免于发生,胜过仅仅在事实发生之后探测所述攻击。
用编译器支持,可以利用根据本发明的实施例的存储器保护减轻软件弱点。例如,保护记录的纹理细密的性质可以被用于保护其他静态结构,例如虚拟函数表指针,免于它们作为执行路径重定向攻击的部分而被修改。在一些实施例中,硬件canary值也可以被放置于静态分配缓冲器的周围,所述静态分配缓冲器可能是溢出的来源。
另外,保护记录可以被视为调试断点的无限制实现。代替被极少有效的调试寄存器所限制,软件开发者将具有满足要求的同步调试断点。据此,纹理细密的断点探测可以被实现于整个地址空间。这个探测如此地提供硬件方法去解决某种软件完整性问题。即,对应用中的意外行为的探测可以经由断点覆盖来获得,激活新编程方法。
现在参考图6,其表示根据本发明实施例的系统的方块图。如图6所示,所述系统是具有点对点总线结构的多处理器系统,例如公用系统接口(CSI)系统,并且包括通过点对点互连550耦合的第一处理器570和第二处理器580。第一处理器570包括多处理器核心574a和574b,存储器控制器集线器(MCH)572和点对点(P-P)接口576和578。相似地,第二处理器580包括相同的部件,即处理器核心584a和584b,MCH582,以及P-P接口586和588。
如图6所示,MCH的572和582将所述处理器耦合到各自的存储器,即存储器532和存储器534,它们可以是局部连接到各自的处理器的主存储器的部分。第一处理器570和第二处理器580可以经由P-P接口552和554被分别耦合到芯片组590。如图6中所示,芯片组590包括P-P接口594和598。进一步地,芯片组590包括接口592去耦合具有高效执行图形引擎538的芯片组590。在一个实施例中,加速图形接口(AGP)总线539可以被用于将图形引擎538耦合到芯片组590。AGP总线539可以遵照加速图像接口规范,修订版2.0,Inter(英特尔)公司,Santa Clara,California,出版于1998年5月5日。作为选择,点对点互连539可以耦合这些部件。
反过来,芯片组590可以经由接口596被耦合到第一总线516。在一个实施例中,第一总线516可以是由PCI本地总线规范,制造版本,修订版2.1,日期1995年6月,所定义的外设部件互连(PCI)总线或者例如PCI表示总线或者其他第三生成I/O互连总线的总线,尽管本发明的范围并不被如此限制。
如图6所示,不同的输入/输出(I/O)装置514可以连同将第一总线516耦合到第二总线520的总线桥接器518一起,被耦合到第一总线516。在一个实施例中,第二总线520可以是低管脚计数(LPC)总线,不同的装置可以被耦合到第二总线520包括,例如,键盘/鼠标522,通信装置526和可以包括代码530的数据存储单元528,在一个实施例中。进一步地,音频I/O524可以被耦合到第二总线520。当然,在其他实施例中,可以不同地实现系统,例如,单个处理器系统或诸如此类。进一步地,虽然以图6的特定实现进行表示,本发明的范围并不被如此限制并且可以以不同的结构实现EMP。
实施例可以在计算机程序中实现,所述计算机程序可以存储在具有编程计算机系统去执行所述实施例的指令的存储介质上。所述存储介质可以包括,但是不限制于此,任何类型的磁盘,包括软盘,光盘,只读光盘存储器(CD-ROM),可重写光盘(CD-RW),和磁光盘,半导体装置例如只读存储器(ROM),随机访问存储器(RAM)例如动态和静态RAM,可擦可编程只读存储器(EPROM),电可擦可编程只读存储器(EEPROM),闪存,磁或者光卡,或者任何类型的适合于存储电子指令的介质。其他实施例可以被实现为由可编程控制装置执行的软件模块。
虽然已经结合有限数量的实施例描述了本发明,那些本领域的技术人员将理解许多来自其中的修改和变化。其意味着所附权利要求覆盖所有那些落入本发明的实质精神和范围的修改和变化。

Claims (30)

1、一种方法,包括:
将保护记录的保护指示器与存储器位置相关联,所述保护记录不可经由虚拟地址空间访问;并且
基于所述保护指示器的状态阻止访问所述存储器位置。
2、如权利要求1的方法,进一步包括在远离所述存储器位置的第二存储器位置中存储所述保护记录。
3、如权利要求1的方法,进一步包括如果所述访问被阻止,发出存储器访问干扰(violation)的信号。
4、如权利要求1的方法,进一步包括分配所述保护记录到虚拟地址页。
5、如权利要求1的方法,进一步包括在第一缓冲器中存储所述保护记录的副本。
6、如权利要求5的方法,进一步包括决定是否相应于所述保护记录地址的转化存在于第二缓冲器。
7、如权利要求1的方法,进一步包括设置相应于缓冲器首部的保护指示器。
8、如权利要求7的方法,进一步包括利用所述保护记录阻止缓冲器溢出攻击。
9、如权利要求1的方法,进一步包括将所述存储器位置的虚拟地址转化为用于所述存储器位置的第一物理地址和用于所述保护记录的第二物理地址。
10、如权利要求9的方法,进一步包括结合所述第一物理地址和所述第二物理地址以决定所述存储器位置的保护状态。
11、一种设备,包括:
第一存储器,存储保护向量的副本,其中所述保护向量指明了第二存储器部分的保护状态;以及
第一缓冲器,其耦合于所述第一存储器,所述第一缓冲器存储虚拟地址和相应的物理地址之间转化,所述第一缓冲器生成命中信号和丢失信号。
12、如权利要求11的设备,进一步包括保护丢失处理器,其接收所述丢失信号并且从所述第二存储器获得用于所述第一存储器中的存储的所请求保护向量。
13、如权利要求11的设备,进一步包括耦合于所述第一存储和所述第一缓冲器的第二缓冲器,所述第二缓冲器存储虚拟地址和所述第二存储器的相应部分的物理地址之间的转化,其中所述第一缓冲器的转化包括至少一个所述保护记录的物理地址。
14、如权利要求13的设备,其中所述第一缓冲器和所述第二缓冲器由单个存储器结构组成。
15、如权利要求11的设备,其中所述第一存储器包括高速缓存,如果所述第二存储器的位置被保护,其生成保护信号。
16、如权利要求11的设备,其中所述第一存储器将在保护向量的一个或者多个副本上执行逻辑操作,以决定存储要求的地址的保护状态。
17、如权利要求11的设备,其中所述第二存储器的部分包括在所述第二存储器中的缓冲器的至少一个缓冲器首部。
18、如权利要求11的设备,所述第二存储器包括保护页,所述保护页包括保护向量,所述保护页分割自所述第二存储器的数据页。
19、一种包括存储表示集成电路的数据的机器可读存储介质的产品,包括:
第一高速缓存,以高速缓存保护记录,其中所述保护记录的每一个将识别系统存储器的部分的保护状态;以及
转化后备缓冲器,其耦合于所述第一高速缓存,所述转化后备缓冲器为保护记录存储虚拟地址和相应的物理地址之间的转化。
20、如权利要求19的产品,其中所述集成电路进一步包括保护丢失处理器,如果所请求的转化不存在于所述转化后备缓冲器,其接收来自所述转化后备缓冲器的丢失信号。
21、如权利要求19的产品,其中所述第一高速缓存包括逻辑操作器到基于被请求的保护记录的位索引以及存储操作大小的指示的字节屏蔽。
22、如权利要求19的产品,其中所述集成电路进一步包括耦合到所述第一高速缓存的数据转化后备缓冲器。
23、一种系统,包括:
第一存储器,存储保护向量的副本,其中所述保护向量标识可访问存储器的部分的保护状态,
第一缓存器,其耦合于所述第一存储器,所述第一缓存器存储虚拟地址和相应的物理地址之间的转化;以及
动态随机访问存储器,其耦合于所述第一存储器和所述第一缓冲器。
24、如权利要求23的系统,其中所述动态随机访问存储器包括具有每个都相应于所述存储器缓冲器块的多个首部的存储器缓冲器,所述多个首部包括所述可访问存储器的一部分。
25、如权利要求23的系统,其中所述动态随机访问存储器包括栈,其中至少所述栈的一部分包括所述可访问存储器的一部分。
26、如权利要求23的系统,其中所述动态随机访问存储器包括存储数据页的第一部分和存储保护页的第二部分。
27、如权利要求26的系统,其中所述第二部分是不可经由虚拟地址空间访问的。
28、如权利要求23的系统,其中所述第一存储器包括高速缓存,所述高速缓存生成基于所述保护状态的保护信号。
29、如权利要求28的系统,其中所述保护信号将引起存储器访问干扰。
30、如权利要求23的系统,其中所述第一缓冲器将第一转化存储到所述可访问存储器的一部分的物理地址并且将第二转化存储到与所述可访问的存储器的一部分相关联的保护向量的物理地址。
CN2006100841661A 2005-03-31 2006-03-31 提供扩展的存储器保护 Expired - Fee Related CN1877547B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/095,719 2005-03-31
US11/095,719 US7673345B2 (en) 2005-03-31 2005-03-31 Providing extended memory protection

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN2011100794873A Division CN102129410B (zh) 2005-03-31 2006-03-31 提供扩展的存储器保护

Publications (2)

Publication Number Publication Date
CN1877547A true CN1877547A (zh) 2006-12-13
CN1877547B CN1877547B (zh) 2011-05-11

Family

ID=37072190

Family Applications (2)

Application Number Title Priority Date Filing Date
CN2006100841661A Expired - Fee Related CN1877547B (zh) 2005-03-31 2006-03-31 提供扩展的存储器保护
CN2011100794873A Expired - Fee Related CN102129410B (zh) 2005-03-31 2006-03-31 提供扩展的存储器保护

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN2011100794873A Expired - Fee Related CN102129410B (zh) 2005-03-31 2006-03-31 提供扩展的存储器保护

Country Status (4)

Country Link
US (2) US7673345B2 (zh)
CN (2) CN1877547B (zh)
DE (1) DE102006015106B4 (zh)
TW (2) TWI352289B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105354155A (zh) * 2015-12-03 2016-02-24 上海高性能集成电路设计中心 一种基于页表检查机制的存储器访问权限控制方法
CN107003845A (zh) * 2014-12-23 2017-08-01 英特尔公司 用于在掩码寄存器和向量寄存器之间可变地扩展的方法和装置
CN110214338A (zh) * 2017-02-24 2019-09-06 超威半导体公司 增量颜色压缩到视频的应用

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7631249B2 (en) * 2005-10-14 2009-12-08 Microsoft Corporation Dynamically determining a buffer-stack overrun
US8019854B2 (en) * 2005-11-25 2011-09-13 Samsung Electronics Co., Ltd. System and method of providing information on computer memory use
US20070234330A1 (en) * 2006-03-01 2007-10-04 Microsoft Corporation Prevention of executable code modification
US7958320B2 (en) * 2006-12-05 2011-06-07 Intel Corporation Protected cache architecture and secure programming paradigm to protect applications
US8136091B2 (en) * 2007-01-31 2012-03-13 Microsoft Corporation Architectural support for software-based protection
US8645704B2 (en) * 2007-05-07 2014-02-04 Intel Corporation Protecting caller function from undesired access by callee function
US8261065B2 (en) * 2007-05-07 2012-09-04 Intel Corporation Protecting caller function from undesired access by callee function
US8880483B2 (en) * 2007-12-21 2014-11-04 Sandisk Technologies Inc. System and method for implementing extensions to intelligently manage resources of a mass storage system
US8006055B2 (en) * 2008-03-04 2011-08-23 Microsoft Corporation Fine granularity hierarchiacal memory protection
US7831640B2 (en) * 2008-04-15 2010-11-09 Microsoft Corporation Using an overflow list to process mark overflow
US7860906B2 (en) 2008-05-28 2010-12-28 Microsoft Corporation Overflow per segment
US10621092B2 (en) 2008-11-24 2020-04-14 Intel Corporation Merging level cache and data cache units having indicator bits related to speculative execution
US9672019B2 (en) 2008-11-24 2017-06-06 Intel Corporation Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads
WO2011026092A1 (en) * 2009-08-31 2011-03-03 Telcordia Technologies, Inc. System and method for detecting and evicting malicious vehicles in a vehicle communications network
US10348753B2 (en) * 2009-08-31 2019-07-09 Vencore Labs, Inc. Detecting and evicting malicious vehicles in a vehicle communications network
US8775153B2 (en) * 2009-12-23 2014-07-08 Intel Corporation Transitioning from source instruction set architecture (ISA) code to translated code in a partial emulation environment
WO2011156021A2 (en) * 2010-03-01 2011-12-15 The Trustees Of Columbia University In The City Of New York Systems and methods for detecting design-level attacks against a digital circuit
US8838935B2 (en) 2010-09-24 2014-09-16 Intel Corporation Apparatus, method, and system for implementing micro page tables
US8789042B2 (en) * 2010-09-27 2014-07-22 Mips Technologies, Inc. Microprocessor system for virtual machine execution
WO2013048468A1 (en) 2011-09-30 2013-04-04 Intel Corporation Instruction and logic to perform dynamic binary translation
US8990546B2 (en) 2011-10-31 2015-03-24 Freescale Semiconductor, Inc. Data processing system with safe call and return
CN104025041B (zh) * 2011-12-29 2018-05-25 英特尔公司 管理员模式执行保护
US20150143071A1 (en) * 2011-12-30 2015-05-21 Ravi L. Sahita Memory event notification
US10037212B2 (en) 2012-04-20 2018-07-31 Nxp Usa, Inc. Information processing device and method for protecting data in a call stack
GB2513727B (en) 2012-06-27 2015-06-24 Nordic Semiconductor Asa Memory protection
CN103632088A (zh) * 2012-08-28 2014-03-12 阿里巴巴集团控股有限公司 一种木马检测方法及装置
US9495305B1 (en) 2012-11-02 2016-11-15 David Fuchs Detecting pointer errors for memory protection
US9183161B2 (en) * 2012-12-28 2015-11-10 Intel Corporation Apparatus and method for page walk extension for enhanced security checks
US9858207B2 (en) 2013-02-06 2018-01-02 International Business Machines Corporation Page level key-based memory protection
EP2962240B1 (en) * 2013-02-28 2017-12-27 Intel Corporation Performing security operations using binary translation
DE112013006686T5 (de) * 2013-03-06 2015-11-05 Mitsubishi Electric Corp. Programmierbare Steuerung, programmierbares Steuersystem und Verfahren zum Erzeugen einer Ausführungsfehlerinformation
US20140283060A1 (en) * 2013-03-15 2014-09-18 Oracle International Corporation Mitigating vulnerabilities associated with return-oriented programming
US10061940B2 (en) 2013-07-09 2018-08-28 Andes Technology Corporation Secure protection processor and method including comparing an instruction security attribute of an instruction and a security attribute of an operational event
JP6273733B2 (ja) * 2013-09-20 2018-02-07 富士通株式会社 演算処理装置、情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム
US9891936B2 (en) 2013-09-27 2018-02-13 Intel Corporation Method and apparatus for page-level monitoring
US20150113240A1 (en) * 2013-10-17 2015-04-23 International Business Machines Corporation Restricting access to sensitive data in system memory dumps
US9684608B2 (en) * 2014-10-28 2017-06-20 Intel Corporation Maintaining a secure processing environment across power cycles
CN106155577B (zh) * 2015-04-23 2019-03-26 华为技术有限公司 扩展内存的访问方法、设备以及系统
US9823938B2 (en) 2015-06-18 2017-11-21 Intel Corporation Providing deterministic, reproducible, and random sampling in a processor
US20170109526A1 (en) * 2015-10-20 2017-04-20 Intel Corporation Systems and methods for providing anti-malware protection and malware forensics on storage devices
US10296464B2 (en) 2016-12-09 2019-05-21 Intel Corporation System, apparatus and method for dynamic profiling in a processor
US10565354B2 (en) * 2017-04-07 2020-02-18 Intel Corporation Apparatus and method for protecting content in virtualized and graphics environments
US10613864B2 (en) * 2018-03-16 2020-04-07 Texas Instruments Incorporated Processor with hardware supported memory buffer overflow detection
GB2572158B (en) * 2018-03-20 2020-11-25 Advanced Risc Mach Ltd Random tag setting instruction
WO2019196721A1 (en) * 2018-04-11 2019-10-17 Beijing Didi Infinity Technology And Development Co., Ltd. Methods and apparatuses for processing data requests and data protection
US10809924B2 (en) * 2018-04-12 2020-10-20 Webroot Inc. Executable memory protection
US10983923B2 (en) * 2018-10-29 2021-04-20 Sternum Ltd. Dynamic memory protection
US11741196B2 (en) 2018-11-15 2023-08-29 The Research Foundation For The State University Of New York Detecting and preventing exploits of software vulnerability using instruction tags
US10824560B2 (en) * 2019-02-18 2020-11-03 Nxp B.V. Using a memory safety violation indicator to detect accesses to an out-of-bounds or unallocated memory area
GB2591490B (en) * 2020-01-30 2022-03-02 Advanced Risc Mach Ltd An apparatus and method for controlling access to a set of memory mapped control registers
CN112000609B (zh) * 2020-07-03 2024-01-16 上海美仁半导体有限公司 芯片以及具有该芯片的家用电器

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US44292A (en) * 1864-09-20 Improvement in riding-stirrups
US138263A (en) * 1873-04-29 Improvement in wagon-axle lubricators
US20010011318A1 (en) * 1997-02-27 2001-08-02 Vishram P. Dalvi Status indicators for flash memory
DE19828056A1 (de) 1998-06-24 1999-12-30 Bosch Gmbh Robert Speicherüberwachungssystem
US6795905B1 (en) * 2000-03-31 2004-09-21 Intel Corporation Controlling accesses to isolated memory using a memory controller for isolated execution
US8051301B2 (en) 2001-11-13 2011-11-01 Advanced Micro Devices, Inc. Memory management system and method providing linear address based memory access security
JP2003233534A (ja) 2002-02-07 2003-08-22 Hitachi Ltd メモリシステム
CA2425006C (en) * 2002-04-17 2012-06-05 Microsoft Corporation Saving and retrieving data based on symmetric key encryption
JP2004013556A (ja) * 2002-06-07 2004-01-15 Matsushita Electric Ind Co Ltd プロセッサ装置、コンパイル装置及びその方法
JP4302641B2 (ja) 2002-11-18 2009-07-29 エイアールエム リミテッド デバイスによるメモリへのアクセスの制御
RU2005115088A (ru) 2002-11-18 2006-01-20 Арм Лимитед (Gb) Управление доступом устройства к памяти
CN1447244A (zh) * 2003-04-03 2003-10-08 杭州中天微系统有限公司 一种设计在cpu里的侦测缓冲区溢出的方法
US20050044292A1 (en) 2003-08-19 2005-02-24 Mckeen Francis X. Method and apparatus to retain system control when a buffer overflow attack occurs
US20050138263A1 (en) 2003-12-23 2005-06-23 Mckeen Francis X. Method and apparatus to retain system control when a buffer overflow attack occurs

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107003845A (zh) * 2014-12-23 2017-08-01 英特尔公司 用于在掩码寄存器和向量寄存器之间可变地扩展的方法和装置
CN105354155A (zh) * 2015-12-03 2016-02-24 上海高性能集成电路设计中心 一种基于页表检查机制的存储器访问权限控制方法
CN110214338A (zh) * 2017-02-24 2019-09-06 超威半导体公司 增量颜色压缩到视频的应用
CN110214338B (zh) * 2017-02-24 2023-09-19 超威半导体公司 增量颜色压缩到视频的应用

Also Published As

Publication number Publication date
TW200708952A (en) 2007-03-01
US20060225135A1 (en) 2006-10-05
DE102006015106B4 (de) 2011-04-07
TWI352289B (en) 2011-11-11
TW201042455A (en) 2010-12-01
CN1877547B (zh) 2011-05-11
US7673345B2 (en) 2010-03-02
DE102006015106A1 (de) 2006-11-09
CN102129410B (zh) 2013-04-03
TWI342492B (en) 2011-05-21
US8028341B2 (en) 2011-09-27
CN102129410A (zh) 2011-07-20
US20100050266A1 (en) 2010-02-25

Similar Documents

Publication Publication Date Title
CN1877547A (zh) 提供扩展的存储器保护
KR102435949B1 (ko) 컴퓨팅 장치의 메모리 내 페이지 접근 제어
US7058768B2 (en) Memory isolation through address translation data edit control
US5390310A (en) Memory management unit having cross-domain control
KR100927750B1 (ko) 무단 변경 방지 방법, 무단 변경 방지 프로세서, 무단 변경방지 제품, 무단 변경 방지 시스템
CN109359487B (zh) 一种基于硬件隔离的可扩展安全影子存储及标签管理方法
US7650478B2 (en) Using limits on address translation to control access to an addressable entity
US7761676B2 (en) Protecting memory by containing pointer accesses
US8209510B1 (en) Secure pool memory management
MXPA04011270A (es) Limpieza de memoria ociosa de almacenes temporales de memoria de busqueda aparte de traduccion.
JP2004110812A (ja) マルチプロセッサ・ホスト上でのマルチプロセッサ・アドレス変換の効率のよいエミュレーションのための方法およびシステム
US20230236925A1 (en) Tag checking apparatus and method
TWI812798B (zh) 用於控制記憶體存取的裝置及方法
EP3746899B1 (en) Controlling guard tag checking in memory accesses
KR20230101826A (ko) 캐퍼빌리티들을 사용하여 메모리에 대한 액세스를 제약하기 위한 기술
JP2021512405A (ja) メモリ・アクセスにおける保護タグ・チェックの制御
CN101256480A (zh) 一种能够标记存储器中某些位置的处理器
US20230342289A1 (en) Apparatus and method for managing capabilities
GB2616643A (en) Read-as-X property for page of memory address space
TW202340955A (zh) 使用能力約束記憶體存取之技術
Cashin Automated control of hardware and software-based fault isolation

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20110511

Termination date: 20180331