CN107209826A - 经认证的控制堆栈 - Google Patents

经认证的控制堆栈 Download PDF

Info

Publication number
CN107209826A
CN107209826A CN201680007656.3A CN201680007656A CN107209826A CN 107209826 A CN107209826 A CN 107209826A CN 201680007656 A CN201680007656 A CN 201680007656A CN 107209826 A CN107209826 A CN 107209826A
Authority
CN
China
Prior art keywords
control information
control
information entry
written
external memory
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
CN201680007656.3A
Other languages
English (en)
Other versions
CN107209826B (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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN107209826A publication Critical patent/CN107209826A/zh
Application granted granted Critical
Publication of CN107209826B publication Critical patent/CN107209826B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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/12Replacement control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • G06F15/7842Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers)
    • G06F15/7846On-chip cache and off-chip main memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • 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/45Caching of specific data in cache memory
    • G06F2212/451Stack data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

一种产生控制堆栈的方法包含:响应于一或多个函数调用而将多个控制信息条目写入到在处理器内部的控制堆栈缓冲器中;及响应于所述控制堆栈缓冲器已满且接收到另外函数调用而进行以下操作:将所述多个控制信息条目写入到在所述处理器外部的外部存储器;及将对应于所述另外函数调用的另外控制信息条目写入到所述控制堆栈缓冲器。

Description

经认证的控制堆栈
技术领域
本发明涉及经认证的控制堆栈,且更特定地涉及用于产生控制堆栈的技术。
背景技术
计算机软件可易受变更所述软件的操作的攻击。举例来说,诸如软件蠕虫或病毒的恶意探索(如此命名是因为其恶意探索软件中的漏洞)可变更现有软件代码、插入新代码,及/或使现有代码的执行次序从原始预期次序变更以诱发并非如所预期的原始代码的部分的操作。在没有关于软件中的可接受入口点的任何管制的情况下,恶意探索可将执行导向到软件中的任何点,从而促进非预期软件执行序列,这是因为整个软件代码可供恶意探索使用。
处理器架构通常包含用于数据及控制流程两者的堆栈。堆栈含有跟踪针对通过程序的调用路径中的每一调用的激活记录的堆栈框架。激活记录通常含有由每一函数(本地变量、参数等等)使用的数据以及控制信息(返回地址、堆栈指针等等),所述数据以及控制信息用以在调用及返回期间参考数据及/或维护程序控制流程。具体地说,返回地址在函数调用期间被推送到堆栈上,且被调用函数将含有其本地变量的堆栈框架分配在包含任何本地数据缓冲器的堆栈上。实施故障及未经验证输入可造成程序溢流堆栈上的缓冲器且改写控制数据(例如,返回地址、框架指针)。这又允许通过操纵外部输入而劫持程序的控制流程。
为了保护免受此类堆栈溢出攻击,已提议若干缓解操作。一种技术为软件堆栈保护(SSP),其中由编译程序将防护值(或堆栈密探)插入在紧接于返回地址的堆栈上,且在函数返回之前验证防护值。此方法使用跨越针对以此方式所保护的每一程序的生成周期的改变。现有软件被生成有支持堆栈密探的编译程序。为了使密探值对于每一运行而言为随机的,提供对随机数产生器的存取。提供错误恢复处理程序以允许从堆栈溢出攻击的恢复。除了针对每一程序所涉及的复杂度以外,此技术还具有大小及性能开销,这是因为受到保护的每一函数是用产生密探且执行检查的代码予以检测。另一技术为堆栈重影,其检测OS内核陷阱处理程序,所述处理程序在寄存器窗口溢流情形时被调用以随着其写入到存储器而保护应用程序返回地址,从而检查任何恶意改写。此技术不需要应用程序层级启用或代码大小成本,但依赖于架构中的支持寄存器窗口。另一技术包含将影子堆栈架构存储在存储器的单独受保护区域中。或者通过重复控制信息来维护影子堆栈。针对所有执行线程而分配及管理单独存储器,从而引入复杂度。
发明内容
一种产生控制堆栈的实例方法包含:响应于一或多个函数调用而将多个控制信息条目写入到在处理器内部的控制堆栈缓冲器中;及响应于所述控制堆栈缓冲器已满且接收到另外函数调用而进行以下操作:将所述多个控制信息条目写入到在所述处理器外部的外部存储器;及将对应于所述另外函数调用的另外控制信息条目写入到所述控制堆栈缓冲器。
此类方法的实施方案可包含以下特征中的一或多者。所述方法进一步包含使用所述多个控制信息条目中的至少第一控制信息条目及第二控制信息条目来确定认证标签。所述方法进一步包含将所述认证标签的相应部分与所述第一控制信息条目及所述第二控制信息条目中的每一者相关联地存储到所述外部存储器。所述多个控制信息条目包含两个以上控制信息条目,且其中确定所述认证标签包括将函数应用于所述多个控制信息条目中的全部。所述方法进一步包含:使用存储在所述外部存储器中的至少所述第一控制信息条目及所述第二控制信息条目来确定认证验证程序;确定所述认证验证程序匹配于所述认证标签;及基于所述认证验证程序匹配于所述认证标签而将所述第一控制信息条目从所述外部存储器写入到所述控制堆栈缓冲器。
此外或替代地,此类方法的实施方案可包含以下特征中的一或多者。将所述多个控制信息条目写入到所述外部存储器包含伴随将所述多个控制信息条目安置在所述外部存储器的第一区域中而将所述多个控制信息条目写入到所述外部存储器,所述外部存储器的所述第一区域物理上从存储对应于所述控制信息条目的程序数据的所述外部存储器的第二区域位移。将所述多个控制信息条目写入到所述外部存储器包含伴随所述多个控制信息条目的至少主要部分为写入在堆栈框架中的堆栈框架控制信息条目的主要部分的重复而将所述多个控制信息条目写入到所述外部存储器,且其中所述堆栈框架存储在所述外部存储器中且至少在被原始写入时含有对应于所述堆栈框架控制信息条目的程序数据。所述方法进一步包含:确定所述多个控制信息条目的至少所述主要部分匹配于所述堆栈框架控制信息条目的至少所述主要部分;及基于所述多个控制信息条目的至少所述主要部分匹配于所述堆栈框架控制信息条目的至少所述主要部分而将所述多个控制信息条目从所述外部存储器写入到所述控制堆栈缓冲器。
一种实例计算系统包含:处理器,其含有控制堆栈缓冲器;及外部存储器,其在所述处理器外部且以通信方式耦合到所述处理器;其中所述处理器经配置以进行以下操作:通过将控制信息条目写入到所述控制堆栈缓冲器中而对函数调用作出响应;对控制框架填充所述控制堆栈缓冲器作出响应,所述控制框架包括多个控制信息条目,且通过将所述控制框架写入到所述外部存储器且通过将对应于另外函数调用的另外控制信息条目写入到所述控制堆栈缓冲器而接收所述另外函数调用。
此类计算系统的实施方案可包含以下特征中的一或多者。所述处理器经进一步配置以使用所述多个控制信息条目中的至少第一控制信息条目及第二控制信息条目来确定认证标签。所述处理器经进一步配置以将所述认证标签的相应部分与所述第一控制信息条目及所述第二控制信息条目中的每一者相关联地存储到所述外部存储器。所述多个控制信息条目包含两个以上控制信息条目,且其中所述处理器经配置以通过将函数应用于所述多个控制信息条目中的全部而确定所述认证标签。所述处理器经进一步配置以进行以下操作:使用存储在所述外部存储器中的至少所述第一控制信息条目及所述第二控制信息条目来确定认证验证程序;确定所述认证验证程序匹配于所述认证标签;及基于所述认证验证程序匹配于所述认证标签而将所述第一控制信息条目从所述外部存储器写入到所述控制堆栈缓冲器。
此外或替代地,此类计算系统的实施方案可包含以下特征中的一或多者。所述处理器经配置以通过形成分裂式堆栈而将所述控制框架写入到所述外部存储器,其中所述多个控制信息条目安置在所述外部存储器的第一区域中,所述外部存储器的所述第一区域物理上与存储对应于所述控制信息条目的程序数据的所述外部存储器的第二区域分离。所述处理器经配置以通过形成影子堆栈而将所述控制框架写入到所述外部存储器,其中所述多个控制信息条目的至少主要部分为写入在堆栈框架中的堆栈框架控制信息条目的主要部分的重复,且其中所述堆栈框架存储在所述外部存储器中且至少在被原始写入时含有对应于所述堆栈框架控制信息条目的程序数据。
另一实例计算系统包含:用于存储控制堆栈缓冲器的装置;用于存储程序数据及控制数据的装置;用于通过将控制信息条目写入到所述控制堆栈缓冲器中而对函数调用作出响应的装置;及用于对控制框架填充所述控制堆栈缓冲器作出响应的装置,所述控制框架包括多个控制信息条目,且通过将所述控制框架写入到所述用于存储程序数据及控制数据的装置且通过将对应于另外函数调用的另外控制信息条目写入到所述控制堆栈缓冲器而接收所述另外函数调用。
此类计算系统的实施方案可包含以下特征中的一或多者。所述系统进一步包含经配置以使用所述多个控制信息条目中的至少第一控制信息条目及第二控制信息条目来确定认证标签的认证装置。所述用于存储程序数据及控制数据的装置进一步用于与所述第一控制信息条目及所述第二控制信息条目中的每一者相关联地存储所述认证标签的相应部分。所述多个控制信息条目包括两个以上控制信息条目,且其中所述认证装置经配置以通过将函数应用于所述多个控制信息条目中的全部而确定所述认证标签。所述认证装置经进一步配置以进行以下操作:使用存储在所述用于存储程序数据及控制数据的装置中的至少所述第一控制信息条目及所述第二控制信息条目来确定认证验证程序;及确定所述认证验证程序匹配于所述认证标签;其中所述系统进一步包括用于基于所述认证验证程序匹配于所述认证标签而将所述第一控制信息条目从所述存储装置写入到所述控制堆栈缓冲器的装置。
此外或替代地,此类计算系统的实施方案可包含以下特征中的一或多者。所述用于存储程序数据及控制数据的装置进一步用于通过形成分裂式堆栈而写入所述控制框架,其中所述多个控制信息条目安置在所述用于存储程序数据及控制数据的装置的第一区域中,所述用于存储程序数据及控制数据的装置的所述第一区域物理上与存储对应于所述控制信息条目的程序数据的所述用于存储程序数据及控制数据的装置的第二区域分离。所述用于存储程序数据及控制数据的装置进一步用于通过形成影子堆栈而写入所述控制框架,其中所述多个控制信息条目的至少主要部分为写入在堆栈框架中的堆栈框架控制信息条目的主要部分的重复,且其中所述堆栈框架存储在所述用于存储程序数据及控制数据的装置中且至少在被原始写入时含有对应于所述堆栈框架控制信息条目的程序数据。
一种实例非暂时性处理器可读存储装置包含处理器可读指令,所述处理器可读指令经配置以致使处理器进行以下操作:通过将控制信息条目写入到所述处理器中的控制堆栈缓冲器中而对函数调用作出响应;对控制框架填充所述控制堆栈缓冲器作出响应,所述控制框架包括多个控制信息条目,且通过将所述控制框架写入到以通信方式耦合到所述处理器且物理上与所述处理器分离的外部存储器且通过将对应于另外函数调用的另外控制信息条目写入到所述控制堆栈缓冲器而接收所述另外函数调用。
此类存储装置的实施方案可包含以下特征中的一或多者。所述指令经进一步配置以致使所述处理器使用所述多个控制信息条目中的至少第一控制信息条目及第二控制信息条目来确定认证标签。所述指令经进一步配置以致使所述处理器将所述认证标签的相应部分与所述第一控制信息条目及所述第二控制信息条目中的每一者相关联地存储到所述外部存储器。所述多个控制信息条目包含两个以上控制信息条目,且其中所述经配置以致使所述处理器确定所述认证标签的指令经配置以致使所述处理器通过将函数应用于所述多个控制信息条目中的全部而确定所述认证标签。所述指令经进一步配置以致使所述处理器进行以下操作:使用存储在所述外部存储器中的至少所述第一控制信息条目及所述第二控制信息条目来确定认证验证程序;确定所述认证验证程序匹配于所述认证标签;及基于所述认证验证程序匹配于所述认证标签而将所述第一控制信息条目从所述外部存储器写入到所述控制堆栈缓冲器。
此外或替代地,此类存储装置的实施方案可包含以下特征中的一或多者。所述经配置以致使所述处理器将所述控制框架写入到所述外部存储器的指令经配置以致使所述处理器通过形成分裂式堆栈而将所述控制框架写入到所述外部存储器,其中所述多个控制信息条目安置在所述外部存储器的第一区域中,所述外部存储器的所述第一区域物理上与存储对应于所述控制信息条目的程序数据的所述外部存储器的第二区域分离。所述经配置以致使所述处理器将所述控制框架写入到所述外部存储器的指令经配置以致使所述处理器通过形成影子堆栈而将所述控制框架写入到所述外部存储器,其中所述多个控制信息条目的至少主要部分为写入在堆栈框架中的堆栈框架控制信息条目的主要部分的重复,且其中所述堆栈框架存储在所述外部存储器中且至少在被原始写入时含有对应于所述堆栈框架控制信息条目的程序数据。
本文中所描述的项目及/或技术可提供以下能力中的一或多者,及/或未提及的其它能力。用于控制传送的返回路径可在执行之前予以有效地验证。可(例如)通过分离控制数据及程序数据而抑制堆栈溢出恶意探索攻击。可使用针对堆栈溢出(溢流)及堆栈填充(用数据来填入堆栈)的认证而以硬件层级来提供影子或分裂式控制/数据堆栈架构。可以低复杂度向影子或分裂式控制/数据堆栈架构提供简单管理。可(例如)通过增加用于控制数据认证的块大小、缩减认证频率及/或在要径外执行返回路径控制数据认证而以可缩放且透通的方式维护控制流程完整性。可缩减用于确定针对控制数据的消息认证代码的计算开销。可提供其它能力,且根据本发明的每一实施方案并非皆必须提供所论述的能力中的任一者,更不用说全部。另外,可有可能通过除了所提到的手段以外的手段来实现上文所提到的效应,且所提到的项目/技术可未必得到所提到的效应。
附图说明
图1为通信系统的示意图。
图2为图1所展示的计算系统的框图。
图3为图2所展示的计算系统的功能框图。
图4到5为控制堆栈缓冲器及分裂程序堆栈的简化图。
图6为包含认证标签的控制数据条目的简化图。
图7为产生控制堆栈的过程的框流程图。
具体实施方式
本发明论述用于产生控制堆栈的技术。举例来说,处理器可具有存储对应于软件程序的最新函数调用的最新返回地址的内部控制堆栈缓冲器。控制堆栈缓冲器可用于所有函数返回。如果控制堆栈缓冲器已满且另一函数被调用(溢流),或如果存在上下文切换,那么控制堆栈缓冲器内容可被写入到外部(相对于处理器)存储器,且用于另一函数的返回地址或其它上下文可被写入到控制堆栈缓冲器。控制堆栈缓冲器内容可被页写入到外部存储器,其中控制堆栈缓冲器的所有内容皆被写入到外部存储器,从而清空控制堆栈缓冲器。控制堆栈缓冲器内容可被写入到程序堆栈,所述程序堆栈呈不将相同数据存储在所述程序堆栈中的堆栈框架中的分裂式堆栈布置,或呈将相同数据存储在所述程序堆栈中的堆栈框架中的影子堆栈布置。可基于控制堆栈缓冲器而确定认证标签,且可与外部存储器中的控制堆栈缓冲器内容相关联地存储认证标签。如果通过使控制堆栈缓冲器中的所有返回地址被使用(下溢)而清空控制堆栈缓冲器,或如果存在上下文切换,那么可将控制数据从外部存储器写入到控制堆栈缓冲器。如果使用认证标签,那么可在将存储在外部存储器中的返回地址写入到控制堆栈缓冲器之前重新确定认证标签且比较所述认证标签与存储在外部存储器中的认证标签。如果经存储的认证标签与经重新确定的认证标签匹配,那么可将返回地址从外部存储器写入到控制堆栈缓冲器,且否则不将返回地址从外部存储器写入到控制堆栈缓冲器。如果使用影子堆栈,那么可比较影子堆栈中的返回地址与程序堆栈中的返回地址,且如果所述两组返回地址匹配,那么仅将(例如)影子堆栈中的返回地址写入到控制堆栈缓冲器。可使用其它技术,包含但不限于下文所论述的技术。
参看图1,通信系统10包含计算装置12、基站收发信机(BTS)14、网络16、服务器18、接入点(AP)20,及恶意探索源22。系统10为通信系统之处在于系统10的组件可(例如)经由网络16、BTS 14(及/或未展示的一或多个BTS)及/或一或多个接入点20而彼此直接地或间接地通信。虽然恶意探索通常是经由通信网络(诸如图1所展示的网络16)及计算装置12中的网络接口而引入到计算装置中,但本文中所论述的技术同等地适用于帮助防止攻击的成功,在攻击的成功中,恶意探索是经由其它手段(例如,到含有恶意探索的外部存储器的连接)而引入到计算装置。所展示的实例计算装置12包含移动电话、桌上型计算机、膝上型计算机及平板计算机。可使用又其它计算装置,而无论为当前现有的还是在未来开发的。
参看图2,计算装置12中的一者的实例包括计算系统50,其包含:包含控制堆栈缓冲器54的处理器52、包含(任选地)软件58的外部存储器56,及认证器60。处理器52优选地为智能硬件装置,例如,诸如由 Corporation或制造或设计的中央处理单元(CPU)的CPU、微控制器、专用集成电路(ASIC)等等。处理器52可包括可分布在计算装置12中的多个单独物理实体。控制堆栈缓冲器54在处理器52内部,且受信任为不易受溢流攻击/恶意探索。控制堆栈缓冲器54存储最新函数调用的返回地址。外部存储器56在处理器52外部,且可包含随机存取存储器(RAM)及/或只读存储器(ROM)。存储器54为可存储软件58的处理器可读存储媒体,软件58为处理器可读的处理器可执行软件代码,其含有经配置以在执行时致使处理器52执行本文中所描述的各种功能的指令(但所述描述可仅指处理器52执行所述功能)。替代地,软件58可不由处理器52直接地执行,而是可经配置以致使处理器52(例如,在编译及执行时)执行功能。处理器52以通信方式耦合到外部存储器56及认证器60。认证器60可以硬件、以固件、由处理器52或由处理器52及软件58或由这些中的任一者的组合实施。另外,除了如图1所展示的计算装置12以外,本文中所论述的技术还可应用于含有具有处理器可读指令的存储器的任何装置,所述处理器可读指令具有相对于一或多个恶意探索的一或多个漏洞。因此,举例来说,图1所展示的网络16的服务器18、BTS 14、接入点20及组件(例如,路由器、网关等等)可包含图2所展示的组件(及图3所展示的模块/装置),以及含有具有处理器可读指令的存储器的任何其它装置,所述处理器可读指令具有相对于一或多个恶意探索的一或多个漏洞。
参看图3,同时参考图2,计算系统50包含:包含控制堆栈缓冲器模块72(用于存储控制堆栈缓冲器的装置)的处理器模块70(处理装置)、认证模块74(认证装置),及控制框架模块76(用于存储程序数据及控制数据的装置)。处理器模块70包含用于将控制数据写入到控制堆栈缓冲器的装置,及用于将控制框架写入到用于存储程序数据及控制数据的装置的装置。模块70、72为可分别由处理器52及控制堆栈缓冲器54实施的功能模块。认证模块74为可由认证器60实施的功能模块。控制框架模块76为可由外部存储器56及关联硬件及/或固件及/或处理器52及存储在存储器56中的软件58实施的功能模块。因此,对执行或经配置以执行功能的模块70、72、74、76中的任一者的参考为执行或经配置以执行所述功能的对应设备的速记。
还参看图4到5,形成控制堆栈102、104及程序堆栈80。控制堆栈102、104含有用于由处理器52运行的程序的控制数据,且被分割成两个部分:在控制堆栈缓冲器54中的内部控制堆栈102,及在外部存储器56中处于堆栈存储器78中的外部控制堆栈104。控制数据包含返回地址及/或框架指针及/或其它控制信息。程序堆栈80包含程序数据,所述程序数据包含本地变量、自变量等等;且程序堆栈80还可包含一些控制数据,例如,框架指针。计算系统50的操作系统将控制指针(CP)(单独架构寄存器)指向程序数据中的目前程序位置,此处在图4所展示的实例中指向程序堆栈80中的程序数据的顶部。
控制堆栈缓冲器模块72经配置以从处理器52接收控制数据、将控制数据存储在控制堆栈缓冲器(CSB)54中、将控制数据块从CSB 54发送到外部存储器56,及从外部存储器56接收控制数据块。CSB 54及外部控制堆栈104在启动时为空的,且程序堆栈80也为空的。随着由处理器52以软件程序执行函数调用,处理器52将控制数据提供到控制堆栈缓冲器模块72。控制堆栈缓冲器模块72经配置以接收控制数据且将这些控制数据写入到控制堆栈缓冲器54。举例来说,如图4所展示,控制堆栈缓冲器模块72可将返回地址作为控制数据条目82写入到CSB 54中。在此实例中,控制数据为返回地址,但这仅为实例,且代替返回地址或除了返回地址以外,诸如框架指针等等的其它控制数据也可存储在CSB 54中。模块72经配置以通过从CSB 54移除控制数据且将新控制数据条目写入到CSB 54中而对处理器52在CSB54已满时使新控制数据条目存储在CSB54中作出响应,或对上下文切换(即,正由处理器52运行的程序或程序的部分的改变)作出响应。CSB 54在CSB 54的内容待发送到控制框架模块76的情况下已“满”,即使CSB 54中的额外存储空间可用也如此。然而,通常,将在将内容发送到控制框架模块76之前使用CSB 54的整个存储空间。模块72将多个控制数据条目82且优选地将所有控制数据条目82页写入到控制框架模块76。因此,模块72可通过将CSB 54的内容发送到控制框架模块76而清空CSB 54。如图5所展示,模块72已通过将返回地址1到返回地址8发送到控制框架模块76且将返回地址9写入到CSB 54而清空CSB 54。相反地,当模块72通过使用CSB 54中的控制数据而清空CSB 54时,模块72可从控制框架模块76检索控制数据块。因此,如果图5中的返回地址9由处理器模块70使用,那么模块72可请求下一返回地址块且从控制框架模块76接收返回地址1到返回地址8,从图5转到图4。在图4到5所展示的实例中,CSB具有八个控制数据条目82的容量,但可使用CSB 54的其它容量。
控制堆栈缓冲器模块72优选地但未必经由认证模块74而将控制数据条目82的块发送到控制框架模块76。认证模块74经配置成以使得安全性信息极不可能被偶然重新创建的方式或即使供导出安全性信息的控制数据条目82为我们所知也从控制数据条目82中的一或多者导出安全性信息。安全性信息极不可能被重新创建之处在于重新创建或再现安全性信息将计算上昂贵,从而使重新创建所述信息所需要的资源(时间、计算能量等等)太大而无法适当化,即使有可能适当化也如此。为了产生安全性信息,认证模块74可(例如)将函数应用于控制数据条目82中的一或多者且优选地应用于控制数据条目82中的全部,以确定安全性信息。此类函数的实例为散列函数。认证模块74经配置成使得尝试在计算系统50中产生恶意探索的实体难以(如果并非不可能)存取认证模块74且尤其是存取由认证模块74应用的包含与控制数据条目82进行散列的任何散列值的函数。
作为实例,认证模块74经配置以基于来自CSB 54的多个控制数据条目82而产生认证标签。优选地,认证模块74使用从CSB 54清空的所有控制数据条目82以便确定认证标签。认证标签为加密安全消息认证代码(MAC)。认证模块74可使用多种技术中的任一者来确定认证标签。举例来说,认证模块74可将散列函数应用于控制数据条目82,从而使用散列值以确定认证标签。认证标签可具有多种长度中的任一者(其可基于诸如CSB大小的其它因素),且可存储在外部存储器56中的多个位置中。举例来说,CSB54的大小可为高速缓存行的倍数,且认证标签大小可被设置为两个位乘以CSB 54中的控制数据条目82的数量。因此,对于八(8)个条目82的CSB大小(每四个字节长),且在32字节高速缓存行的情况下,对于认证标签将存在16个位,每条目两个位。可增加CSB54的大小以容纳较大认证标签。
认证模块74经配置以将具有控制数据条目82的认证标签提供到控制框架模块76。举例来说,认证模块74可在将控制数据条目82提供到控制框架模块76之前将认证标签组合到控制数据条目82中。因此,认证模块74可产生如图6所展示的经修改的控制数据条目84,其中经修改的控制数据条目84中的每一者包含控制数据主体86及认证标签部分88。替代地,认证模块74可将控制数据主体86(此处为返回地址主体)及对应认证标签部分88分离地提供到控制框架模块76。
控制框架模块76经配置以接收控制数据主体86及认证标签部分88,且将经修改的控制数据条目84存储在外部控制堆栈104中。模块76可分离地接收控制数据主体86及认证标签部分88,且将其组合以形成经修改的控制数据条目84。替代地,模块76可接收经修改的控制数据条目84,其中控制数据主体86与认证标签部分88已经组合。在任一状况下,模块76经配置以将经修改的控制数据条目84存储在外部控制堆栈104中,即,与认证标签部分88相关联地存储控制数据主体86,使得可在设法将控制数据主体86返回到内部控制堆栈102的情况下检索认证标签部分88。经修改的控制数据条目84被写入到外部控制堆栈104,如图5所展示。如图6所展示,在此实例中,认证标签部分88附加到控制数据主体86,例如,占据经修改的控制数据条目84的两个最低有效位。另外在此实例中,出于说明性目的,在图6中用两数字标识符来标记认证标签部分88。标识符的第一数字对应于认证标签编号,且标识符的第二数字对应于返回地址。因此,标签11对应于用于返回地址1的认证标签1的部分。所有认证标签部分88的组合构成认证标签90。
如图5所展示,控制框架模块76经配置以将从控制堆栈缓冲器模块72接收的控制数据92存储在外部控制堆栈104中,控制数据92物理上从存储在程序堆栈80中的程序数据94位移。控制框架模块76经配置以将程序数据94的堆栈框架存储在一或多个物理位置中,且至少最初将控制数据92存储在物理上从存储程序数据94的位置位移的一或多个其它物理位置中。控制数据92及程序数据94的末端可最终在外部控制堆栈104及程序堆栈80到达彼此的情况下安置在邻近物理位置中,但堆栈104、80开始于经位移位置(即,由存储器位置分离)中。因此,将不可能(如果并非不可能)使程序数据中的溢流影响控制数据92。因此,程序数据94中的溢流不可能变更(如果不受到变更禁止)控制数据94,因此缩减(如果不消除)堆栈溢出恶意探索的可能性。图5所展示的实例仅仅为实例,这是因为可使用众多其它存储器存储配置。举例来说,控制框架模块76可在堆栈存储器78中的邻近物理位置处开始程序数据94及控制数据92,且使控制数据92及程序数据94在相对方向(即,彼此物理上远离)上增长。又其它配置是可能的且可被使用。
如图4到5所展示,控制框架模块76经配置以将程序数据94存储在堆栈框架中。在此实例中,每一堆栈框架包含本地变量、框架指针及自变量,但不包含返回地址。存储在CSB54中(或被存储为控制数据92)的控制数据不存储在堆栈框架中的此配置被称作分裂式堆栈配置。即,控制数据92经存储为物理上与程序数据94分离,且仅驻留于堆栈存储器78的控制数据92中,而不驻留于堆栈存储器78的程序数据94中。替代地,控制数据92可包含在程序数据94中。存储在CSB 54中(或被存储为控制数据92)的控制数据也存储在堆栈框架中的此配置被称作影子堆栈配置。举例来说,返回地址可存储在控制数据92中,且也存储在程序数据94的相应堆栈框架中,例如,在框架指针与第一自变量之间。
控制框架模块76经进一步配置以将经修改的控制数据条目84提供到认证模块74。控制框架模块76经配置以通过提供对应于认证标签90的经修改的控制数据条目84的块而对从认证模块74接收请求(例如,响应于CSB 54中的下溢或上下文切换)作出响应。控制框架模块76相应地调整控制指针,从而响应于提供响应于CSB 54的下溢的控制数据而将控制指针移动到下一控制数据块,或响应于上下文切换而存储控制指针以供未来参考。
认证模块74经进一步配置以确定外部控制堆栈104中的控制数据是否已在将控制数据从外部控制堆栈104提供到控制堆栈缓冲器模块72之前被修改。认证模块74经配置以响应于将控制数据从外部控制堆栈104写入到CSB 54中的内部控制堆栈102的期望(例如,请求)而验证控制数据完整性,例如,响应于CSB 54中的下溢或上下文切换。为了验证控制数据完整性,认证模块74可向控制框架模块76请求用于认证标签90的经修改的控制数据条目84、确定经重新计算的认证标签(也被称作认证验证程序),且确定经重新计算的认证标签是否匹配于存储在外部控制堆栈104中的认证标签90。对于待从外部控制堆栈104写入到CSB 54中的内部控制堆栈102中的控制数据,认证模块74重新计算应用于控制数据以产生认证标签90的函数,此时使用控制数据主体86来计算所述函数以确定经重新计算的认证标签。为了重新计算函数,认证模块74经配置以从控制框架模块76接收控制数据且将函数应用于经接收的控制数据。认证模块74经配置以将用以确定认证标签90的函数应用于从控制框架模块76接收的控制数据主体86以确定经重新计算的认证标签。认证模块74经进一步配置以比较经重新计算的认证标签与从控制框架模块76接收的认证标签90,以确定经重新计算的认证标签是否匹配于认证标签90。认证模块74经配置以通过将控制数据条目86提供到控制堆栈缓冲器模块72而对指示经重新计算的认证标签匹配于认证标签90的此比较作出响应。认证模块74经配置以通过抑制将控制数据条目86发送到控制堆栈缓冲器模块72且通过向处理器模块70提供控制数据完整性已因为已修改控制数据主体86中的至少一者而损失的警告而对指示经重新计算的认证标签不匹配于认证标签90的此比较作出响应。
参看图7,同时进一步参考图1到6,产生控制堆栈的过程150包含所展示的阶段。然而,过程150仅为实例而非限制性的。可(例如)通过添加、移除、重新布置、组合、同时地执行多个阶段及/或将单一阶段分裂成多个阶段来更改过程150。
在阶段152处,过程150包含响应于一或多个函数调用而将多个控制信息条目写入到在处理器内部的控制缓冲器中。控制堆栈缓冲器模块72通过将控制数据条目82写入到在处理器52内部的CSB 54中而对一或多个函数调用作出响应。写入控制数据条目82直到CSB54已满。在CSB 54填充之前,可响应于函数完成或以其它方式使用相应控制数据条目82中的控制数据而从CSB 54移除控制数据条目82中的一或多者。
在阶段154处,过程150包含响应于控制缓冲器已满且接收到另外函数调用而进行以下操作:将多个控制信息条目写入到在处理器外部的外部存储器;及将对应于另外函数调用的另外控制信息条目写入到控制缓冲器。控制堆栈缓冲器模块72通过将控制数据条目82页写入到外部存储器56而对CSB 54已满且接收到另外控制数据条目82以供存储在CSB54中作出响应。举例来说,控制堆栈缓冲器模块72优选地经由认证模块74而将内部控制堆栈102中的控制数据条目82的块页写入到外部存储器56,即,通过将控制数据条目82的块发送到控制框架模块76。
过程150可进一步包含使用多个控制信息条目中的至少第一控制信息条目及第二控制信息条目来确定认证标签。举例来说,认证模块74从控制堆栈缓冲器模块72接收控制数据条目82的块,且使用控制数据条目82中的至少两者来确定认证标签。认证模块74可使用从控制堆栈缓冲器模块72接收的所有控制数据条目82以确定认证标签90。过程150可包含将认证标签的相应部分与控制信息条目中的每一者相关联地存储到外部存储器。认证模块74结合控制框架模块76可将认证标签部分88与对应控制数据主体86相关联地存储到外部存储器56。过程150可进一步包含使用存储在外部存储器中的第一控制信息条目及第二控制信息条目来确定认证验证程序、确定认证验证程序匹配于认证标签,及基于认证验证程序匹配于认证标签而将第一控制信息条目从外部存储器写入到控制堆栈缓冲器。举例来说,认证模块74通过从控制框架模块76检索经修改的控制数据条目84而对CSB 54中的新下溢条件或上下文切换作出响应。认证模块74通过重新计算认证标签来确定认证验证程序,且比较认证验证程序与认证标签(例如,认证标签90)。另外,响应于如由认证模块74所确定的认证验证程序匹配于认证标签,认证模块74将至少控制数据主体86发送到控制堆栈缓冲器模块72,控制堆栈缓冲器模块72将控制数据主体86写入到CSB 54中的内部控制堆栈102。
将多个控制信息条目写入到外部存储器可包括伴随将多个控制信息条目安置在外部存储器的第一区域中而将多个控制信息条目写入到外部存储器,外部存储器的第一区域物理上从存储对应于控制信息条目的程序数据的外部存储器的第二区域位移。控制框架模块76可将外部控制堆栈104存储在堆栈存储器78中的物理上从程序堆栈80位移的位置中。另外,多个控制信息条目可被写入到外部存储器,其中多个控制信息条目的至少主要部分为写入在堆栈框架中的堆栈框架控制信息条目的主要部分的重复,其中堆栈框架存储在外部存储器中且至少在被原始写入时含有对应于堆栈框架控制信息条目的程序数据。举例来说,控制框架模块76可将堆栈框架存储在程序堆栈80中,堆栈框架包含作为控制数据主体86而存储在外部控制堆栈104中的控制数据作为影子堆栈。另外,过程150可进一步包含确定多个控制信息条目的至少主要部分匹配于堆栈框架控制信息条目的至少主要部分,及基于多个控制信息条目的至少主要部分匹配于堆栈框架控制信息条目的至少主要部分而将多个控制信息条目从外部存储器写入到控制堆栈缓冲器。举例来说,认证模块74可经配置以且可确定存储在外部控制堆栈104中的控制数据主体86匹配于程序堆栈80的对应堆栈框架中的对应控制数据。认证模块74可经配置以且可在外部控制堆栈104中的控制数据主体86不匹配于堆栈框架中的对应控制数据的情况下抑制将控制数据主体86递送到控制堆栈缓冲器模块72。相反地,认证模块74可经配置以且可在外部控制堆栈104中的控制数据主体86匹配于堆栈框架中的对应控制数据的情况下将控制数据主体86发送到控制堆栈缓冲器模块72,且控制堆栈缓冲器模块72可将经接收的控制数据主体86写入到CSB 54作为内部控制堆栈102。
其它考虑
其它实例及实施方案是在本发明及随附权利要求书的范围及精神内。举例来说,归因于软件的性质,可使用由处理器、硬件、固件、硬连线或这些中的任一者的组合执行的软件来实施上文所描述的功能。实施功能的特征还可物理上位于各种位置处,包含经分布成使得功能的部分实施于不同物理位置处。此外,如本文中所使用,包含权利要求书中所使用,“中的至少一者”前的项目列表中所使用的“或”指示分离性列表,使得(例如)“A、B或C中的至少一者”的列表意指单独A,或单独B,或单独C,或AB,或AC,或BC,或ABC(即,A及B及C),或与一个以上同一特征的组合(例如,AA、AAB、ABBC等等)。
作为另一实例实施方案,代替将外部控制堆栈104存储为单独实体,控制框架模块76可以分散方式存储外部控制堆栈104。在此状况下,经修改的控制数据条目84将存储在具有相应堆栈框架的程序堆栈80中。控制框架模块76将经配置以找到外部控制堆栈104且将外部控制堆栈104递送到认证模块74,且认证模块74将经配置以确定控制数据完整性,如上文所论述。
如本文中所使用,包含权利要求书中所使用,除非另有陈述,否则功能或操作是“基于”项目或条件的陈述意指所述功能或操作是基于所陈述的项目或条件,且可基于除了所陈述的项目或条件以外的一或多个项目及/或条件。
另外,信息被发送或发射“到”实体的指示或将信息发送或发射“到”实体的陈述并不要求完成通信。此类指示或陈述包含信息是从发送实体传送,但不到达信息的预期接收者。即使不实际上接收信息,预期接收者仍可被称作接收实体,例如,接收执行环境。
可根据特定要求而作出大致变化。举例来说,也可使用定制硬件,及/或可以硬件、软件(包含便携式软件,诸如小程序等等)或此两者实施特定元件。另外,可使用到诸如网络输入/输出装置的其它计算装置的连接。
如本文中所使用,术语“机器可读媒体”及“计算机可读媒体”是指参与提供致使机器以特定方式操作的数据的任何媒体。在使用计算机系统的情况下,各种计算机可读媒体可涉及到将指令/代码提供到处理器以供执行,及/或可用以存储及/或携带此类指令/代码(例如,作为信号)。在许多实施方案中,计算机可读媒体为物理及/或有形存储媒体。此类媒体可采取许多形式,包含但不限于非易失性媒体及易失性媒体。非易失性媒体包含(例如)光盘及/或磁盘。易失性媒体包含但不限于动态存储器。
常见形式的物理及/或有形计算机可读媒体包含(例如)软盘、柔性磁盘、硬盘、磁带,或任何其它磁性媒体、CD-ROM、任何其它光学媒体、打孔卡、纸带、具有孔图案的任何其它物理媒体、RAM、PROM、EPROM、FLASH-EPROM、任何其它存储器芯片或盒、如下文中所描述的载波,或可供计算机读取指令及/或代码的任何其它媒体。
各种形式的计算机可读媒体可涉及到将一或多个指令的一或多个序列携带到一或多个处理器以供执行。仅仅作为实例,可最初将指令携带在远程计算机的磁盘及/或光盘上。远程计算机可将指令加载到其动态存储器中,且经由发射媒体而将指令作为信号发送以由计算机系统接收及/或执行。
上文所论述的方法、系统及装置为实例。各种配置可在适当时省略、取代或添加各种过程或组件。举例来说,在替代配置中,可以不同于所描述的次序的次序来执行方法,且可添加、省略或组合各种步骤。此外,可在各种其它配置中组合关于某些配置所描述的特征。可以相似方式组合配置的不同方面及元件。此外,技术演进,且因此,元件中的许多者为实例且并不限制本发明或权利要求书的范围。
在描述中给出特定细节以提供对实例配置(包含实施方案)的透彻理解。然而,可在没有这些特定细节的情况下实践配置。举例来说,已在没有不必要的细节的情况下展示众所周知的电路、过程、算法、结构及技术以便避免混淆配置。此描述仅提供实例配置,且并不限制权利要求书的范围、适用性或配置。实情为,所述配置的先前描述提供用于实施所描述的技术的描述。可在不脱离本发明的精神或范围的情况下对元件的功能及布置进行各种改变。
此外,可将配置描述为被描绘为流程图或框图的过程。虽然每一者可将操作描述为依序过程,但可并行地或同时地执行操作中的许多者。另外,可重新布置操作的次序。过程可具有图中未包含的额外阶段或功能。此外,可由硬件、软件、固件、中间件、微码、硬件描述语言或其任何组合实施方法的实例。当以软件、固件、中间件或微码予以实施时,用以执行任务的程序代码或代码段可存储在诸如存储媒体的非暂时性计算机可读媒体中。处理器可执行所描述的任务。
诸图所展示及/或本文中论述为彼此连接或通信的组件(功能的或其它)以通信方式耦合。即,其可直接地或间接地连接以实现其间的通信。
在已描述若干实例配置的情况下,可在不脱离本发明的精神的情况下使用各种修改、替代构造及等效者。举例来说,以上元件可为较大系统的组件,其中其它规则可优先于或以其它方式修改本发明的应用。此外,可在考虑以上元件之前、期间或之后进行数种操作。因此,以上描述并不约束权利要求书的范围。
另外,可揭示一种以上发明。

Claims (29)

1.一种产生控制堆栈的方法,所述方法包括:
响应于一或多个函数调用而将多个控制信息条目写入到在处理器内部的控制堆栈缓冲器中;及
响应于所述控制堆栈缓冲器已满且接收到另外函数调用而进行以下操作:
将所述多个控制信息条目写入到在所述处理器外部的外部存储器;及
将对应于所述另外函数调用的另外控制信息条目写入到所述控制堆栈缓冲器。
2.根据权利要求1所述的方法,其进一步包括使用所述多个控制信息条目中的至少第一控制信息条目及第二控制信息条目来确定认证标签。
3.根据权利要求2所述的方法,其进一步包括将所述认证标签的相应部分与所述第一控制信息条目及所述第二控制信息条目中的每一者相关联地存储到所述外部存储器。
4.根据权利要求2所述的方法,其中所述多个控制信息条目包括两个以上控制信息条目,且其中确定所述认证标签包括将函数应用于所述多个控制信息条目中的全部。
5.根据权利要求2所述的方法,其进一步包括:
使用存储在所述外部存储器中的至少所述第一控制信息条目及所述第二控制信息条目来确定认证验证程序;
确定所述认证验证程序匹配于所述认证标签;及
基于所述认证验证程序匹配于所述认证标签而将所述第一控制信息条目从所述外部存储器写入到所述控制堆栈缓冲器。
6.根据权利要求1所述的方法,其中将所述多个控制信息条目写入到所述外部存储器包括伴随将所述多个控制信息条目安置在所述外部存储器的第一区域中而将所述多个控制信息条目写入到所述外部存储器,所述外部存储器的所述第一区域物理上从存储对应于所述控制信息条目的程序数据的所述外部存储器的第二区域位移。
7.根据权利要求6所述的方法,其中将所述多个控制信息条目写入到所述外部存储器包括伴随所述多个控制信息条目的至少主要部分为写入在堆栈框架中的堆栈框架控制信息条目的主要部分的重复而将所述多个控制信息条目写入到所述外部存储器,且其中所述堆栈框架存储在所述外部存储器中且至少在被原始写入时含有对应于所述堆栈框架控制信息条目的程序数据。
8.根据权利要求7所述的方法,其进一步包括:
确定所述多个控制信息条目的至少所述主要部分匹配于所述堆栈框架控制信息条目的至少所述主要部分;及
基于所述多个控制信息条目的至少所述主要部分匹配于所述堆栈框架控制信息条目的至少所述主要部分而将所述多个控制信息条目从所述外部存储器写入到所述控制堆栈缓冲器。
9.一种计算系统,其包括:
处理器,其含有控制堆栈缓冲器;及
外部存储器,其在所述处理器外部且以通信方式耦合到所述处理器;
其中所述处理器经配置以进行以下操作:
通过将控制信息条目写入到所述控制堆栈缓冲器中而对函数调用作出响应;
对控制框架填充所述控制堆栈缓冲器作出响应,所述控制框架包括多个控制信息条目,且通过将所述控制框架写入到所述外部存储器且通过将对应于另外函数调用的另外控制信息条目写入到所述控制堆栈缓冲器而接收所述另外函数调用。
10.根据权利要求9所述的系统,其中所述处理器经进一步配置以使用所述多个控制信息条目中的至少第一控制信息条目及第二控制信息条目来确定认证标签。
11.根据权利要求10所述的系统,其中所述处理器经进一步配置以将所述认证标签的相应部分与所述第一控制信息条目及所述第二控制信息条目中的每一者相关联地存储到所述外部存储器。
12.根据权利要求10所述的系统,其中所述多个控制信息条目包括两个以上控制信息条目,且其中所述处理器经配置以通过将函数应用于所述多个控制信息条目中的全部而确定所述认证标签。
13.根据权利要求10所述的系统,其中所述处理器经进一步配置以进行以下操作:
使用存储在所述外部存储器中的至少所述第一控制信息条目及所述第二控制信息条目来确定认证验证程序;
确定所述认证验证程序匹配于所述认证标签;及
基于所述认证验证程序匹配于所述认证标签而将所述第一控制信息条目从所述外部存储器写入到所述控制堆栈缓冲器。
14.根据权利要求9所述的系统,其中所述处理器经配置以通过形成分裂式堆栈而将所述控制框架写入到所述外部存储器,其中所述多个控制信息条目安置在所述外部存储器的第一区域中,所述外部存储器的所述第一区域物理上与存储对应于所述控制信息条目的程序数据的所述外部存储器的第二区域分离。
15.根据权利要求9所述的系统,其中所述处理器经配置以通过形成影子堆栈而将所述控制框架写入到所述外部存储器,其中所述多个控制信息条目的至少主要部分为写入在堆栈框架中的堆栈框架控制信息条目的主要部分的重复,且其中所述堆栈框架存储在所述外部存储器中且至少在被原始写入时含有对应于所述堆栈框架控制信息条目的程序数据。
16.一种计算系统,其包括:
用于存储控制堆栈缓冲器的装置;
用于存储程序数据及控制数据的装置;
用于通过将控制信息条目写入到所述控制堆栈缓冲器中而对函数调用作出响应的装置;及
用于对控制框架填充所述控制堆栈缓冲器作出响应的装置,所述控制框架包括多个控制信息条目,且通过将所述控制框架写入到所述用于存储程序数据及控制数据的装置且通过将对应于另外函数调用的另外控制信息条目写入到所述控制堆栈缓冲器而接收所述另外函数调用。
17.根据权利要求16所述的系统,其进一步包括经配置以使用所述多个控制信息条目中的至少第一控制信息条目及第二控制信息条目来确定认证标签的认证装置。
18.根据权利要求17所述的系统,其中所述用于存储程序数据及控制数据的装置进一步用于与所述第一控制信息条目及所述第二控制信息条目中的每一者相关联地存储所述认证标签的相应部分。
19.根据权利要求17所述的系统,其中所述多个控制信息条目包括两个以上控制信息条目,且其中所述认证装置经配置以通过将函数应用于所述多个控制信息条目中的全部而确定所述认证标签。
20.根据权利要求17所述的系统,其中所述认证装置经进一步配置以进行以下操作:
使用存储在所述用于存储程序数据及控制数据的装置中的至少所述第一控制信息条目及所述第二控制信息条目来确定认证验证程序;及
确定所述认证验证程序匹配于所述认证标签;
其中所述系统进一步包括用于基于所述认证验证程序匹配于所述认证标签而将所述第一控制信息条目从所述存储装置写入到所述控制堆栈缓冲器的装置。
21.根据权利要求16所述的系统,其中所述用于存储程序数据及控制数据的装置进一步用于通过形成分裂式堆栈而写入所述控制框架,其中所述多个控制信息条目安置在所述用于存储程序数据及控制数据的装置的第一区域中,所述用于存储程序数据及控制数据的装置的所述第一区域物理上与存储对应于所述控制信息条目的程序数据的所述用于存储程序数据及控制数据的装置的第二区域分离。
22.根据权利要求16所述的系统,其中所述用于存储程序数据及控制数据的装置进一步用于通过形成影子堆栈而写入所述控制框架,其中所述多个控制信息条目的至少主要部分为写入在堆栈框架中的堆栈框架控制信息条目的主要部分的重复,且其中所述堆栈框架存储在所述用于存储程序数据及控制数据的装置中且至少在被原始写入时含有对应于所述堆栈框架控制信息条目的程序数据。
23.一种非暂时性处理器可读存储装置,其包括处理器可读指令,所述处理器可读指令经配置以致使处理器进行以下操作:
通过将控制信息条目写入到所述处理器中的控制堆栈缓冲器中而对函数调用作出响应;
对控制框架填充所述控制堆栈缓冲器作出响应,所述控制框架包括多个控制信息条目,且通过将所述控制框架写入到以通信方式耦合到所述处理器且物理上与所述处理器分离的外部存储器且通过将对应于另外函数调用的另外控制信息条目写入到所述控制堆栈缓冲器而接收所述另外函数调用。
24.根据权利要求23所述的存储装置,其中所述指令经进一步配置以致使所述处理器使用所述多个控制信息条目中的至少第一控制信息条目及第二控制信息条目来确定认证标签。
25.根据权利要求24所述的存储装置,其中所述指令经进一步配置以致使所述处理器将所述认证标签的相应部分与所述第一控制信息条目及所述第二控制信息条目中的每一者相关联地存储到所述外部存储器。
26.根据权利要求24所述的存储装置,其中所述多个控制信息条目包括两个以上控制信息条目,且其中所述经配置以致使所述处理器确定所述认证标签的指令经配置以致使所述处理器通过将函数应用于所述多个控制信息条目中的全部而确定所述认证标签。
27.根据权利要求24所述的存储装置,其中所述指令经进一步配置以致使所述处理器进行以下操作:
使用存储在所述外部存储器中的至少所述第一控制信息条目及所述第二控制信息条目来确定认证验证程序;
确定所述认证验证程序匹配于所述认证标签;及
基于所述认证验证程序匹配于所述认证标签而将所述第一控制信息条目从所述外部存储器写入到所述控制堆栈缓冲器。
28.根据权利要求23所述的存储装置,其中所述经配置以致使所述处理器将所述控制框架写入到所述外部存储器的指令经配置以致使所述处理器通过形成分裂式堆栈而将所述控制框架写入到所述外部存储器,其中所述多个控制信息条目安置在所述外部存储器的第一区域中,所述外部存储器的所述第一区域物理上与存储对应于所述控制信息条目的程序数据的所述外部存储器的第二区域分离。
29.根据权利要求23所述的存储装置,其中所述经配置以致使所述处理器将所述控制框架写入到所述外部存储器的指令经配置以致使所述处理器通过形成影子堆栈而将所述控制框架写入到所述外部存储器,其中所述多个控制信息条目的至少主要部分为写入在堆栈框架中的堆栈框架控制信息条目的主要部分的重复,且其中所述堆栈框架存储在所述外部存储器中且至少在被原始写入时含有对应于所述堆栈框架控制信息条目的程序数据。
CN201680007656.3A 2015-02-02 2016-01-28 经认证的控制堆栈 Active CN107209826B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/612,067 2015-02-02
US14/612,067 US9672351B2 (en) 2015-02-02 2015-02-02 Authenticated control stacks
PCT/US2016/015438 WO2016126523A2 (en) 2015-02-02 2016-01-28 Authenticated control stacks

Publications (2)

Publication Number Publication Date
CN107209826A true CN107209826A (zh) 2017-09-26
CN107209826B CN107209826B (zh) 2020-06-09

Family

ID=55359743

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680007656.3A Active CN107209826B (zh) 2015-02-02 2016-01-28 经认证的控制堆栈

Country Status (6)

Country Link
US (1) US9672351B2 (zh)
EP (1) EP3254222A2 (zh)
JP (1) JP2018506784A (zh)
CN (1) CN107209826B (zh)
TW (1) TW201643763A (zh)
WO (1) WO2016126523A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019237865A1 (zh) * 2018-06-12 2019-12-19 杨力祥 一种数据保护方法及计算装置

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104238953A (zh) * 2013-06-13 2014-12-24 中兴通讯股份有限公司 直接表的存储方法和装置
US9495237B1 (en) 2016-01-06 2016-11-15 International Business Machines Corporation Detection of corruption of call stacks
US9606855B1 (en) 2016-01-06 2017-03-28 International Business Machines Corporation Caller protected stack return address in a hardware managed stack architecture
US9576128B1 (en) 2016-01-06 2017-02-21 International Business Machines Corporation Interlinking routines with differing protections using stack indicators
US9582274B1 (en) 2016-01-06 2017-02-28 International Business Machines Corporation Architected store and verify guard word instructions
US10228992B2 (en) 2016-01-06 2019-03-12 International Business Machines Corporation Providing instructions to facilitate detection of corrupt stacks
US9514301B1 (en) 2016-01-06 2016-12-06 International Business Machines Corporation Interlinking modules with differing protections using stack indicators
US10120745B2 (en) * 2016-01-06 2018-11-06 International Business Machines Corporation Providing instructions to protect stack return addresses in a hardware managed stack architecture
US10157268B2 (en) * 2016-09-27 2018-12-18 Microsoft Technology Licensing, Llc Return flow guard using control stack identified by processor register
US10740452B2 (en) * 2017-09-15 2020-08-11 Arm Limited Call path dependent authentication
US10185595B1 (en) * 2018-06-04 2019-01-22 Confia Systems, Inc. Program verification using hash chains
CN112100954A (zh) * 2020-08-31 2020-12-18 北京百度网讯科技有限公司 验证芯片的方法、装置和计算机存储介质
US11372969B1 (en) * 2021-09-17 2022-06-28 Polyverse Corporation Randomized canary and shadow stack for JIT-ROP defense

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2343031A (en) * 1998-07-24 2000-04-26 Sun Microsytems Inc Processing stack related exception traps
US20060161773A1 (en) * 2005-01-20 2006-07-20 Atsuya Okazaki Microprocessor, a node terminal, a computer system and a program execution proving method
US20070277021A1 (en) * 1996-01-24 2007-11-29 Sun Microsystems, Inc. Instruction folding for a stack-based machine

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5107457A (en) 1989-04-03 1992-04-21 The Johns Hopkins University Stack data cache having a stack management hardware with internal and external stack pointers and buffers for handling underflow and overflow stack
US6138238A (en) * 1997-12-11 2000-10-24 Sun Microsystems, Inc. Stack-based access control using code and executor identifiers
US5953741A (en) 1996-11-27 1999-09-14 Vlsi Technology, Inc. Stack cache for stack-based processor and method thereof
US7603704B2 (en) * 2002-12-19 2009-10-13 Massachusetts Institute Of Technology Secure execution of a computer program using a code cache
US7594111B2 (en) * 2002-12-19 2009-09-22 Massachusetts Institute Of Technology Secure execution of a computer program
US8060743B2 (en) 2003-11-14 2011-11-15 Certicom Corp. Cryptographic method and apparatus
US20070226795A1 (en) * 2006-02-09 2007-09-27 Texas Instruments Incorporated Virtual cores and hardware-supported hypervisor integrated circuits, systems, methods and processes of manufacture
US8407763B2 (en) 2006-04-28 2013-03-26 Bae Systems Information And Electronic Systems Integration Inc. Secure network interface device
EP1870829B1 (en) 2006-06-23 2014-12-03 Microsoft Corporation Securing software by enforcing data flow integrity
US8196110B2 (en) * 2007-11-30 2012-06-05 International Business Machines Corporation Method and apparatus for verifying a suspect return pointer in a stack
US8117660B2 (en) * 2008-06-19 2012-02-14 Microsoft Corporation Secure control flows by monitoring control transfers
US8837741B2 (en) 2011-09-12 2014-09-16 Qualcomm Incorporated Systems and methods for encoding exchanges with a set of shared ephemeral key data
US9165138B2 (en) 2012-07-11 2015-10-20 Leviathan Security Group, Inc. Mitigation of function pointer overwrite attacks

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070277021A1 (en) * 1996-01-24 2007-11-29 Sun Microsystems, Inc. Instruction folding for a stack-based machine
GB2343031A (en) * 1998-07-24 2000-04-26 Sun Microsytems Inc Processing stack related exception traps
US20060161773A1 (en) * 2005-01-20 2006-07-20 Atsuya Okazaki Microprocessor, a node terminal, a computer system and a program execution proving method

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019237865A1 (zh) * 2018-06-12 2019-12-19 杨力祥 一种数据保护方法及计算装置
CN110598406A (zh) * 2018-06-12 2019-12-20 杨力祥 一种数据保护方法及计算装置
CN110598406B (zh) * 2018-06-12 2022-08-23 杨力祥 一种数据保护方法及计算装置

Also Published As

Publication number Publication date
JP2018506784A (ja) 2018-03-08
US9672351B2 (en) 2017-06-06
WO2016126523A2 (en) 2016-08-11
WO2016126523A3 (en) 2016-09-29
EP3254222A2 (en) 2017-12-13
TW201643763A (zh) 2016-12-16
US20160224784A1 (en) 2016-08-04
CN107209826B (zh) 2020-06-09

Similar Documents

Publication Publication Date Title
CN107209826A (zh) 经认证的控制堆栈
CN101853190B (zh) 一种适用于嵌入式处理器的数据完整性验证方法
US20080052525A1 (en) Password recovery
CN103299284B (zh) 数据安全读取方法及装置
CN104937904B (zh) 用于卸载的方法、系统和计算机存储介质
CN111078607A (zh) 面向rdma与非易失性内存的网络访问编程框架部署方法及系统
WO2017095435A1 (en) Combining hashes of data blocks
US8184804B2 (en) Hash function using a piling-up process
CN109643344B (zh) 用于共享安全性元数据存储器空间的方法和装置
CN101276389A (zh) 单个物理可信平台模块内的多个逻辑可信平台模块的分离
CN107924365A (zh) 防黑客计算机设计
CN101615145A (zh) 一种提高存储器数据缓存可靠性的方法和装置
JP5821744B2 (ja) データ有無判定装置、データ有無判定方法及びデータ有無判定プログラム
CN109522154A (zh) 数据恢复方法及相关设备与系统
CN106575336A (zh) 对敏感代码恶意调用的检测与抑制
CN108304727A (zh) 数据处理的方法与装置
CN106326751A (zh) 一种可信道系统及其实现方法
WO2010021269A1 (ja) 記憶装置、情報処理装置およびプログラム
CN108062235A (zh) 数据处理方法及装置
JP2014517376A (ja) 安全なデータ格納方法およびデバイス
JP6812826B2 (ja) 格納方法、格納装置及び格納プログラム
CN108171063A (zh) 访问安全元件的方法、终端及计算机可读存储介质
CN104254845B (zh) 通过访问网络站点接收更新模块
Alon et al. Pragmatic self-stabilization of atomic memory in message-passing systems
CN111835871A (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