CN114356616A - 缓冲器溢出捕获 - Google Patents
缓冲器溢出捕获 Download PDFInfo
- Publication number
- CN114356616A CN114356616A CN202111185565.8A CN202111185565A CN114356616A CN 114356616 A CN114356616 A CN 114356616A CN 202111185565 A CN202111185565 A CN 202111185565A CN 114356616 A CN114356616 A CN 114356616A
- Authority
- CN
- China
- Prior art keywords
- memory
- overflow
- program
- memory address
- virtual
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
- G06F12/0684—Configuration or reconfiguration with feedback, e.g. presence or absence of unit detected by addressing, overflow detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/034—Test or assess a computer or a system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Storage Device Security (AREA)
- Debugging And Monitoring (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明的各方面包括在处理器上执行的操作系统处从程序接收将数据写入存储器的写入请求。该写请求包括虚拟存储器地址和数据。确定虚拟存储器地址未被分配给物理存储器地址。基于该确定,将未分配虚拟存储器地址分配给溢出存储器中的物理存储器地址。将数据写入溢出存储器中的物理存储器地址,并且将成功写入数据的指示返回给程序。程序访问虚拟存储器地址的未来请求指向溢出存储器中的物理存储器地址。
Description
技术领域
本发明总体上涉及缓冲器溢出捕获,并且更具体地,涉及用于缓冲器溢出捕获的未支持存储器蜜罐(non-backed memory honey pot)。
背景技术
存储器管理是控制和协调计算机存储器的过程,包括将存储器的部分分配给正在执行的各种程序。存储器管理功能可以驻留在计算机硬件、操作系统(OS)以及程序和应用中。缓冲器溢出是指在计算机上执行的程序开始访问(读或写)未分配给该程序的存储器部分的情况。未分配给程序的存储器部分可以分配给在计算机上执行的另一程序。缓冲器溢出可能由例如编程错误的人为错误引起。在其他情况下,缓冲器溢出可能被有目的地执行并且导致恶意代码的执行。
发明内容
本发明的实施例涉及缓冲器溢出捕获。一种非限制性示例计算机实现的方法包括在处理器上执行的操作系统处从程序接收将数据写入存储器的写入请求。该写入请求包括虚拟存储器地址和数据。该方法确定虚拟存储器地址未被分配给物理存储器地址。基于该确定,将该虚拟存储器地址分配给溢出存储器中的物理存储器地址。将数据写入溢出存储器中的物理存储器地址,并且将成功写入数据的指示返回给程序。程序访问虚拟存储器地址的未来请求指向溢出存储器中的物理存储器地址。
本发明的其它实施例在计算机系统和计算机程序产品中实现上述方法的特征。
通过本发明的技术实现了额外的技术特征和益处。本发明的实施例和方面在本文中详细描述,并且被认为是所要求保护的主题的一部分。为了更好地理解,参考详细描述和附图。
附图说明
在所附权利要求中特别指出并清楚地要求了本文描述的专有权的细节。从下面结合附图的详细描述中,本发明的实施例的前述和其它特征和优点将变得显而易见,其中:
图1描绘了根据本发明的一个或多个实施例的用于缓冲器溢出捕获的系统的框图;
图2描绘了根据本发明的一个或多个实施例的缓冲器溢出捕获的组件的框图;
图3描绘了根据本发明的一个或多个实施例的用于缓冲器溢出捕获的过程的流程图;
图4描绘了根据本发明的一个或多个实施例的云计算环境;
图5描绘了根据本发明的一个或多个实施例的抽象模型层;以及
图6描绘了根据本发明的一个或多个实施例的用于缓冲器溢出捕获的系统。
本文描绘的图是说明性的。在不脱离本发明的精神的情况下,可以对其中描述的图或操作进行许多变化。例如,可以以不同的顺序执行动作,或者可以添加、删除或修改动作。此外,术语“耦合”及其变型描述了在两个元件之间具有通信路径,并且不暗示元件之间直接连接而没有中间元件/连接。所有这些变化都被认为是说明书的一部分。
具体实施方式
本发明的一个或多个实施例通过在正常连续的存储器分配中人为地插入空洞(hole)来提供防止缓冲器溢出的防御机制。根据本发明的一个或多个实施例,使用转换表来将虚拟存储器地址映射到物理地址,并且在转换表的映射中放置策略空洞,以迫使缓冲器溢出到具有更高的开放概率的区域中。转换表中的开放区域包含尚未分配给物理存储器地址的虚拟地址,因此不受物理存储器支持。根据本发明的一个或多个实施例,通过经由转换表请求访问未支持虚拟存储器地址而跨越其存储器边界的程序触发计算机系统的存储器管理器取得所请求的虚拟地址并将数据放置到本文称为溢出或蜜罐存储器的存储器区域中。
溢出或蜜罐存储器可由计算机系统内的众所周知且受控的存储器区域池来实施。根据本发明的一个或多个实施例,溢出存储器区域被配置为防止其内容可由程序执行。这可以例如通过设置指令执行保护(Instruction Execution Protection,IEP)位来防止溢出存储器的相应存储块中的代码被执行来完成。在写入溢出存储器的同时,密集的记录过程可以同时收集关于正被写入的程序和/或数据的信息。可以存储所收集的信息,然后对其进行分析。
如本领域技术人员所知,术语“蜜罐”是指被设置成检测、偏转或以某种方式抵制对信息系统的未授权使用的尝试的计算机安全机制。通常,蜜罐包括看上去是站点或应用的合法部分但实际上被隔离和被监视的数据。蜜罐似乎包含对攻击者有价值的信息或资源,该攻击者随后被阻止。术语蜜罐存储器和溢出存储器在本文中可互换使用,以指代当程序尝试访问未分配给该程序的存储器位置时由本发明的一个或对个实施例利用的存储器的一部分。
当计算机程序利用同一物理存储器的不同区域时,重要的是保持计算机程序在其所分配的存储器区域内运行。较高级别(例如,源代码级别)的软件程序具有检查,这些检查通常将程序的所有执行和数据保持在它们所分配的存储器区域内的有组织的位置中。然而,在微代码(或汇编)级别,这些内置检查通常不可用。这可能由于各种原因而发生,但是其中最主要的是效率和/或性能考虑。系统相信给予微代码或汇编指令的信息是有效的,因此这些操作通常不检查数据完整性。这允许这些操作尽可能快地执行。
在许多这些较低级别的操作中,系统利用存储器管理器来代理给定程序的虚拟存储器和其中存储数据的物理或真实存储器之间的请求。如上所述,在当代系统中,存储器管理器通常执行存储器访问请求而不检查反响,相信由其上的软件层执行的检查确保了正确的执行。因为存储器管理器不检查缓冲器溢出,所以给定程序可访问它不应当能够访问的虚拟或物理存储器的区域。缓冲器溢出可能由人为错误引起,或者可能由于恶意原因而故意进行。通常,缓冲器溢出是由于误计算的地址或存储器偏移量,导致对请求程序的存储器区之外的存储器位置的请求,该请求程序的存储器区由程序在其下运行的任何仲裁功能(例如,管理程序)定义。当发生缓冲器溢出时,给定程序可以重写或处理由另一运行程序使用的数据,这可以引起大量错误、崩溃、冲突等,这可能导致系统停机。
本发明的一个或多个实施例提供对当前提供对可导致缓冲器溢出的存储器的访问的方法的技术改进。当代方法的缺点是程序可能获得对分配给另一程序的存储器区域的访问,并因此在执行另一程序时例如通过重写由另一程序使用的存储器位置而导致错误。这可能是由例如差的代码结构或由导致能够写入到正好在代码库的边界之外的存储器部分的数据大小的差的处理引起的。此外,访问分配给另一程序的存储器区域可能引起访问存储器的程序中的错误,例如,通过使程序读取来自其它程序的假定无效的数据并对其进行动作。当代方法的另一个缺点是当程序请求访问没有被物理存储器支持的虚拟存储器地址时,该程序被通知错误。在恶意攻击的情况下,攻击者被通知虚拟地址无效,并且攻击者可以尝试访问其他虚拟地址,直到定位到存储器支持的地址。
本发明的一个或多个实施例通过创建具有策略性放置的间隙的转换表来提供对这些缺点中的一个或多个的技术解决方案,其中虚拟地址不映射到物理地址(即,未支持虚拟存储器地址)。当程序尝试访问未支持储器地址之一时,存储器管理器将访问定向到溢出存储器(例如,通过将请求中的虚拟存储器地址与溢出存储器中的物理地址相关联),并允许程序在溢出存储器中执行访问。重定向到溢出区域对于请求程序是透明的,使得潜在的黑客或威胁行动者不知道该程序正在访问溢出区域中的存储器位置。存储器访问的重定向防止程序访问其被分配的存储器区域之外的数据,这可以导致系统错误的减少。另外,响应于检测到对溢出存储器的访问,本发明的一个或多个实施例收集关于正在被写入的程序和/或数据的状态信息,该状态信息可以用于识别和分析该程序。在程序是恶意程序的情况下,该信息可以用于提供对违规程序的感知和/或防止采用类似策略的一个或多个程序在未来被执行。
现在转到图1,根据本发明的一个或多个实施例,一般地示出了用于缓冲器溢出捕获的系统100的框图。该系统包括操作系统(OS)102、管理程序108、存储器110和溢出存储器114。如图1所示,OS 102包括存储器管理器106、由OS 102执行的程序104、以及系统和存储器分析器116。在图1所示的实施例中,存储器管理器106提供程序104和管理程序108之间的接口,以请求对存储器110的访问。此外,存储器管理器106提供接口,以在需要时将存储器访问请求从程序104重定向到溢出存储器114,以避免缓冲器溢出。图1所示的系统和存储器分析器116收集关于请求访问未支持存储器地址的程序和/或关于可用于识别和分析程序的正被写入的数据的状态信息。
根据本发明的一个或多个实施例,存储器管理器106从程序104接收虚拟存储器地址,并将其转换成位于程序存储器112或溢出存储器114中的物理存储器地址。存储器管理器106可包括如本领域中已知的转换后备缓冲器(translation lookaside buffer,TLB)以执行该转换。可以采用简单的检查,以便识别程序104何时尝试访问其原始分配空间之外的存储器位置。有效虚拟存储器地址具有分配给它的物理存储器,并且如果程序或进程向未支持存储器位置请求数据,则存储器管理器106立即知道该地址是错误的并且将不执行该请求。存储器管理器106检测这些缓冲器溢出的能力被本发明的一个或多个实施例用作识别可能的恶意程序的机制。
根据本发明的一个或多个实施例,溢出存储器114位于与包括程序存储器112的存储器110不同的物理存储设备(或存储模块或存储系统)中。根据本发明的一个或多个其他实施例,溢出存储器114和存储器110位于同一存储器设备(或存储器模块或存储器系统)的不同区域。
根据本发明的一个或多个实施例,程序104向存储器管理器106发送包括虚拟存储器地址和数据的写入请求。存储器管理器106将该请求转发给管理程序108,其指示存储器110将数据写入存储器110中与虚拟存储器地址相关联的物理存储器地址处的存储器位置。如果虚拟存储器地址是未支持虚拟存储器地址,则存储器110将指示未支持状态的错误返回给管理程序108,该管理程序将错误指示中继给OS 102。管理程序108然后可以分派或分配蜜罐或溢出存储器114中的区域,用于程序104的缓冲器溢出,并且向存储器管理器106通知该分配。存储器管理器106可以将来自程序104的写入请求中的虚拟存储器地址与溢出存储器114中的物理存储器地址之间的对应关系存储在TLB中或另一位置。管理程序108将数据写入溢出存储器114中的位置。溢出存储器114向管理程序108指示写入成功,并且管理程序108将成功的写入状态传送到程序104,并且程序104继续执行。下一次程序请求访问未支持虚拟存储器地址时,存储器管理器106将访问定向到分配给程序104的溢出存储器114。存储器转换错误对程序104是隐藏的。存储器管理器106标记该请求,并发回溢出存储器114中的区域的地址,并在那里转发该范围内(例如,在该虚拟存储器地址处)的所有后续请求。存储器管理器106可以附加地标记对程序104所请求的附加页的请求,并将它们发送到溢出存储器114中的该区域。根据本发明的一个或多个实施例,溢出存储器114的大小足够大,并且如果其接近被完全填充,则将溢出存储器114的内容写出到被配置为使得可以捕获所有信息的盘。
应当理解,图1的框图不旨在指示系统100将包括图1中所示的所有组件,相反,系统100可以包括图1中未示出的任何适当的更少或附加的组件(例如,附加的存储器组件、程序、功能块之间的连接、模块、输入、输出等)。例如,系统和存储器分析器116可以被包括在存储器管理器106中。在另一个示例中,系统和存储器分析器116可以在与存储器管理器106不同的OS 102下的不同处理器上执行。此外,本文关于设备100描述的实施例可以用任何适当的逻辑来实现,其中如本文所提到的逻辑可以包括任何适当的硬件(例如,处理器、嵌入式控制器或专用集成电路等)、软件(例如,应用等)、固件或在各种实施例中硬件、软件和固件的任何适当的组合。
现在转到图2,根据本发明的一个或多个实施例,一般地示出了用于缓冲器溢出捕获的组件的框图200。图2的框图200示出了TLB 208、系统和存储器分析器116、存储器管理器106、溢出存储器114和人206(例如,系统分析员或安全分析员)之间的交互的高级流程。
图2的框图200包括用于将虚拟存储器地址转换成物理存储器地址的TLB 208。图2所示的TLB 208包括存储器支持的虚拟存储器地址204a、204b、204c,在此统称为存储器支持的虚拟存储器地址204,其对应于物理存储器地址。TLB 208还包括未支持的虚拟存储器地址202a、202b、202c、202d,本文统称为未支持虚拟存储器地址202,它们未被分派给物理存储器地址。在存储器支持的虚拟存储器地址204之间放置未支持虚拟存储器地址202是人工地将空洞放入正常连续的存储器分配中的示例(例如,稀疏存储器放置)。
图2所示的TLB 208包括在TLB的映射中策略性地放置的空洞,以便迫使违规缓冲器溢出到具有较高开放概率的区域中。在TLB映射中放置空洞的这种布置在这里被称为使用“稀疏存储器放置”来配置TLB。根据本发明的一个或多个实施例,存储器支持的虚拟存储器地址204a包括分配给“程序a”的所有虚拟存储器地址,存储器支持的虚拟存储器地址204b包括分配给“程序b”的所有虚拟存储器地址,存储器支持的虚拟地址204c包括分配给“程序c”的所有虚拟存储器地址。如图2的TLB 208所示,存储器分派已经策略性地完成,以允许分配给程序的虚拟地址之间的大的空间区域,使得一个程序更难与另一个程序的存储器重叠。
TLB 208的实施例不限于将程序的所有虚拟地址保持在连续条目中,因为分配给程序的存储器可被分解成多个段。本发明的一个或多个实施例可以偏移公共存储器段(例如512兆字节(MB)或2048MB页),并且以已知偏移将未支持存储器段放置在每个段的开始和结尾。例如,如果该页在存储器地址0x000A处结束,则可以在TLB 208中为位置0x000B放置空洞。如果程序或进程尝试访问这里的存储器段,则它将立即失败。在没有这种方案的情况下,如果位置0x000B正被另一程序或进程使用(并且因此被支持),则错误的进程可能一直重写0x000B到下一个未备份的存储器位置,该下一个未备份的存储器位置可能是整页,因此破坏并影响许多其它进程的操作。
利用如图2的TLB 208所示的在存储器空间中具有大量空洞的存储器系统,通过使缓冲器溢出不太可能溢出到另一程序的存储器中,允许对恶意缓冲器溢出的某种固有防御。另外,本发明的一个或多个实施例利用虚拟存储器系统(例如,存储器管理器106)知道页面是否被支持的能力,以便检测程序已越过其边界。一旦发生指示程序已超出其边界的触发,存储器管理器106便将正被写入的数据放置到蜜罐或溢出存储器114中。蜜罐通常看起来像是恶意者想要的东西,但是实际上是一个更能了解攻击者的陷阱。
根据本发明的一个或多个实施例,蜜罐或溢出存储器114位于系统内的公众周知和受控的存储器区域池中。存储池中的每个存储器部分可以具有指令执行保护(IEP)位设置,以防止在该部分中存储的任何代码或计算机指令的执行。由于系统不能执行写入该位置的内容,所以允许写入该位置并检查数据的内容是安全的。当存储器管理器106检测到发生了缓冲器溢出时,它将进入存储器区域池,并开始允许程序写入该存储器(例如溢出存储器114),同时开始使用系统和存储器分析器116收集关于被写入的程序或数据的信息的密集记录过程。如图2所示,在未支持的存储单元202c中检测到代码缓冲器溢出,并且溢出检测触发存储器管理器106,存储器管理器106将数据引导到包含溢出存储器114的存储器子池。
根据本发明的一个或多个实施例,系统和存储器分析器116记录关于程序和/或数据的状态信息,诸如但不限于:引起缓冲器溢出的程序或进程的标识符;正被写入的数据;网络活动;代码风格;消息摘要算法5(MD5)对被写入的数据(例如,计算机代码)的散列;由正被写入的计算机代码访问的地址;与正被写入的计算机代码的执行相关联的加载器;和/或关于存储器内容的其它统计,例如代码请求访问的大小和地址。可以保存(例如,写入存储器)然后分析所收集的数据。分析可以由诸如系统管理员或安全分析之类的人206手动执行,和/或分析可以是自动的。
根据本发明的一个或多个实施例,可针对公众周知的攻击框架,诸如但不限于Mitre Att&ckTM,检查由系统和存储器分析器116收集的信息(例如,状态信息),以确定与MD5散列、统计、地址等相关联的行为和/或威胁工具是否与已知的威胁因素或模式相关联。本领域已知的威胁行动者是指任何尝试或成功地实施针对企业的恶意活动的实体,无论是有意的还是无意的。关于缓冲器溢出是否与公众周知的威胁行动者或模式相关联的该信息可以进一步由诸如系统管理员或安全分析员之类的人员206使用,以保护机器并寻找附加攻击表面来进一步保护企业。例如,可以基于状态信息来更新处理器的安全策略。安全策略的示例包括但不限于:网络签名、日志记录跟踪、允许在机器上执行的程序、数据访问和所使用的身份。
根据本发明的一个或多个实施例,给定所有的存储器转发和信息的密集记录,系统和存储器分析器116可以被放置在单独的硬件内部以加速对这种攻击的响应。此外,存储器管理器106的全部或一部分也可位于单独的硬件上。
现在转到图3,根据本发明的一个或多个实施例,一般地示出了用于缓冲器溢出捕获的过程300的流程图。图3所示的处理可以由在计算机处理器上执行的操作系统执行,例如图1的OS 102。计算机处理器可以是独立的处理器或云中的节点,诸如图4中的节点10。
在框302,从程序接收写入请求。该写入请求包括虚拟存储器地址和要被写入存储器的数据。在框304,确定虚拟存储器地址未被分配给物理存储器地址,并且虚拟存储器地址被分配给溢出存储器中的物理存储器地址。在框306,将数据写入溢出存储器中的物理存储器地址。在框308,将数据写入请求成功完成的指示返回给程序。根据本发明的一个或多个实施例,程序不知道数据被写入溢出位置。将数据被成功写入存储器的指示符返回给程序,并且将程序访问虚拟存储器地址的未来请求指向溢出存储器中的物理存储器地址。
根据本发明的一个或多个实施例,响应于确定虚拟地址未被分配给物理存储器地址,启动关于数据和程序中的一个或两个的状态信息的记录。状态信息可以用于标识与恶意程序或威胁行动者相关联的模式。根据本发明的一个或多个实施例,至少部分地基于状态信息来更新处理器的安全策略。
根据本发明的一个或多个实施例,溢出位置被配置成防止计算机代码从溢出位置执行。根据本发明的一个或一个以上实施例,使用TLB将虚拟存储器地址转换成物理存储器地址,且使用稀疏存储器放置来配置TLB。
本发明的一个或多个实施例是基于处理器的缓冲器溢出模式来实现的。例如,可以基于标志或其他指示符的设置来确定处理器的缓冲器溢出模式,并且可以基于处理器的缓冲器溢出模式是第一模式来执行数据到溢出存储器位置的写入。基于缓冲器溢出模式是第二模式,可以跳过框304和306,并且替代地,向程序返回写入未成功完成的指示。另外或替代地,缓冲器溢出模式可与特定程序或程序组相关联。处理器的缓冲器溢出模式是可编程的,并且可以自动设置或者由诸如系统管理员之类的人来设置。以这种方式,可以在特定生命周期阶段期间(例如,在测试期间)、针对在特定处理器上运行的程序、针对特定程序、针对在选定时间帧期间执行的程序等,选择性地应用响应于检测到缓冲器溢出条件而对溢出存储器位置的写入和分析。
图3的过程流程图不旨在指示方法300的操作将以任何特定顺序执行,或者方法300的所有操作将被包括在每种情况中。另外,方法300可包括任何合适数量的附加操作。
应当理解,尽管本公开包括关于云计算的详细描述,但是本文所陈述的教导的实现不限于云计算环境。相反,本发明的实施例能够结合现在已知或以后开发的任何其它类型的计算环境来实现。
云计算是一种服务递送模型,用于实现对可配置计算资源(例如,网络、网络带宽、服务器、处理、存储器、存储、应用、虚拟机和服务)的共享池的方便的按需网络访问,所述可配置计算资源可以以最小的管理努力或与服务的提供者的交互来快速供应和释放。该云模型可以包括至少五个特性、至少三个服务模型和至少四个部署模型。
特征如下:
按需自助:云消费者可以单方面地自动地根据需要提供计算能力,诸如服务器时间和网络存储,而不需要与服务的提供者进行人工交互。
广域网接入:能力在网络上可用,并且通过促进由异构的薄或厚客户端平台(例如,移动电话、膝上型计算机和PDA)使用的标准机制来访问。
资源池化:供应商的计算资源被集中以使用多租户模型来服务多个消费者,其中不同的物理和虚拟资源根据需求被动态地分配和重新分配。存在位置无关的意义,因为消费者通常不控制或不知道所提供的资源的确切位置,但是能够在较高抽象级别(例如国家、州或数据中心)指定位置。
快速弹性:在一些情况下,可以快速且弹性地提供快速向外扩展的能力和快速向内扩展的能力。对于消费者,可用于提供的能力通常看起来不受限制,并且可以在任何时间以任何数量购买。
测量服务:云系统通过利用在适合于服务类型(例如,存储、处理、带宽和活动用户账户)的某一抽象级别的计量能力来自动地控制和优化资源使用。可以监视、控制和报告资源使用,从而为所利用服务的提供者和消费者两者提供透明性。
服务模型如下:
软件即服务(SaaS):提供给消费者的能力是使用在云基础设施上运行的提供者的应用。应用可通过诸如web浏览器(例如,基于web的电子邮件)等瘦客户机界面从各种客户机设备访问。消费者不管理或控制包括网络、服务器、操作系统、存储、或甚至个别应用能力的底层云基础结构,可能的例外是有限的用户专用应用配置设置。
平台即服务(PaaS):提供给消费者的能力是将消费者创建或获取的应用部署到云基础设施上,该消费者创建或获取的应用是使用由提供商支持的编程语言和工具创建的。消费者不管理或控制包括网络、服务器、操作系统或存储的底层云基础设施,但具有对部署的应用和可能的应用托管环境配置的控制。
基础设施即服务(IaaS):提供给消费者的能力是提供处理、存储、网络和消费者能够部署和运行任意软件的其它基本计算资源,所述软件可以包括操作系统和应用。消费者不管理或控制底层云基础设施,但具有对操作系统、存储、部署的应用的控制,以及可能对选择的联网组件(例如,主机防火墙)的有限控制。
部署模型如下:
私有云:云基础设施仅为组织操作。它可以由组织或第三方管理,并且可以存在于建筑物内或建筑物外。
社区云:云基础设施由若干组织共享,并且支持具有共享关注(例如,任务、安全要求、策略和合规性考虑)的特定社区。它可以由组织或第三方管理,并且可以存在于场所内或场所外。
公有云:云基础设施可用于一般公众或大型工业群体,并且由销售云服务的组织拥有。
混合云:云基础设施是两个或更多云(私有、共同体或公共)的组合,所述云保持唯一实体,但是通过使数据和应用能够移植的标准化或私有技术(例如,用于云之间的负载平衡的云突发)绑定在一起。
云计算环境是面向服务的,其焦点在于无状态、低耦合、模块性和语义互操作性。在云计算的核心是包括互连节点的网络的基础设施。
现在参考图4,描绘了说明性云计算环境50。如图所示,云计算环境50包括云消费者使用的本地计算设备可以与其通信的一个或多个云计算节点10,该本地计算设备例如个人数字助理(PDA)或蜂窝电话54A、台式计算机54B、膝上型计算机54C和/或汽车计算机系统54N。节点10可以彼此通信。它们可以被物理地或虚拟地分组(未示出)在一个或多个网络中,诸如如上文描述的私有云、社区云、公共云或混合云或其组合。这允许云计算环境50提供基础设施、平台和/或软件作为服务,云消费者不需要为其维护本地计算设备上的资源。应当理解,图4中所示的计算设备54A-N的类型仅旨在说明,并且计算节点10和云计算环境50可以在任何类型的网络和/或网络可寻址连接上(例如,使用web浏览器)与任何类型的计算机化设备通信。
现在参考图5,示出了由云计算环境50(图4)提供的一组功能抽象层。应当预先理解,图5中所示的组件、层和功能仅旨在说明,并且本发明的实施例不限于此。如所描绘的,提供了以下层和相应的功能:
硬件和软件层60包括硬件和软件组件。硬件组件的示例包括:主机61;基于RISC(精简指令集计算机)架构的服务器62;服务器63;刀片服务器64;存储设备65;以及网络和网络组件66。在一些实施例中,软件组件包括网络应用服务器软件67和数据库软件68。
虚拟化层70提供抽象层,从该抽象层可以提供虚拟实体的以下示例:虚拟服务器71;虚拟存储器72;虚拟网络73,包括虚拟专用网络;虚拟应用和操作系统74;以及虚拟客户机75。
在一个示例中,管理层80可以提供以下描述的功能。资源供应81提供用于在云计算环境内执行任务的计算资源和其它资源的动态采购。计量和定价82提供了在云计算环境中利用资源时的成本跟踪,以及用于消耗这些资源的开帐单或发票。在一个示例中,这些资源可以包括应用软件许可证。安全性为云消费者和任务提供身份验证,以及为数据和其他资源提供保护。用户门户83为消费者和系统管理员提供对云计算环境的访问。服务级别管理84提供云计算资源分配和管理,使得满足所需的服务级别。服务水平协议(SLA)规划和履行85提供对云计算资源的预安排和采购,其中根据SLA预期未来需求。
工作负载层90提供了可以利用云计算环境的功能的示例。可以从该层提供的工作负载和功能的示例包括:绘图和导航91;软件开发和生命周期管理92;虚拟教室教育传送93;数据分析处理94;交易处理95;以及缓冲器溢出捕获96。
可以理解,本发明的一个或多个实施例能够结合现在已知或以后开发的任何类型的计算环境来实现。
现在转到图6,根据本发明的一个或多个实施例,一般地示出了用于缓冲器溢出捕获的计算机系统。本文所述的方法可以硬件、软件(例如,固件)或其组合来实施。在本发明的一个或多个示例性实施例中,在此描述的方法在硬件中实现为专用或通用数字计算机的微处理器的一部分,所述专用或通用数字计算机诸如个人计算机、工作站、小型计算机或大型计算机。因此,系统600可包括能够同时运行O/S的多个实例的通用计算机或大型机601。
在本发明的一个或多个示例性实施例中,在硬件架构方面,如图6所示,计算机601包括一个或多个处理器605、耦合到存储器控制器615的存储器610、以及经由本地输入/输出控制器635通信地耦合的一个或多个输入和/或输出(I/O)设备640、645(或外围设备)。输入/输出控制器635可以是例如但不限于一个或多个总线或其它有线或无线连接,如本领域已知的。输入/输出控制器635可以具有附加元件以实现通信,为了简单起见省略了这些附加元件,诸如控制器、缓冲器(高速缓存)、驱动器、中继器和接收器。此外,本地接口可以包括地址、控制和/或数据连接,以便能够在上述组件之间进行适当的通信。输入/输出控制器635可以包括被配置为访问输出设备640和645的多个子通道。子信道可以包括光纤通信端口。
处理器605是用于执行软件的硬件设备,特别是存储在诸如高速缓存存储装置的存储装置620或存储器610中的软件。处理器605可以是任何定制的或商业上可获得的处理器、中央处理单元(CPU)、与计算机601相关联的若干处理器中的辅助处理器、基于半导体的微处理器(以微芯片或芯片组的形式)、宏处理器或一般地用于执行指令的任何设备。
存储器610可以包括易失性存储器元件(例如,随机存取存储器(RAM,诸如DRAM、SRAM、SDRAM等))和非易失性存储器元件(例如,ROM、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁带、压缩盘只读存储器(CD-ROM)、盘、磁盘、盒式磁带等)中的任何一个或其组合。此外,存储器610可以包括电、磁、光和/或其它类型的存储介质。注意,存储器610可以具有分布式架构,其中各种组件彼此远离,但是可以由处理器605访问。
存储器610中的指令可以包括一个或多个单独的程序,每个程序包括用于实现逻辑功能的可执行指令的有序列表。在图6的示例中,存储器610中的指令是合适的操作系统(OS)611。操作系统611本质上控制其它计算机程序的执行,并提供调度、输入-输出控制、文件和数据管理、存储器管理、以及通信控制和相关服务。
根据本发明的一个或多个实施例,存储器610可以包括多个逻辑分区(logicalpartition,LPAR),每个逻辑分区运行操作系统的实例。LPAR可以由系统管理程序管理,该系统管理程序可以是存储在存储器610中并由处理器605执行的程序。
在本发明的一个或多个示例性实施例中,传统的键盘650和鼠标655可被耦合到输入/输出控制器635。诸如I/O设备640、645之类的其他输出设备可以包括输入设备,例如但不限于打印机、扫描仪、麦克风等。最后,I/O设备640、645还可以包括与输入和输出两者通信的设备,例如但不限于网络接口卡(network interface card,NIC)或调制器/解调器(用于访问其他文件、设备、系统或网络)、射频(radio frequency,RF)或其他收发器、电话接口、桥接器、路由器等。系统600还可以包括耦合到显示器630的显示控制器625。
在本发明的一个或多个示例性实施例中,系统600还可以包括用于耦合到网络665的网络接口660。网络665可以是用于计算机601和任何外部服务器、客户机等之间经由宽带连接通信的基于IP的网络。网络665在计算机601和外部系统之间发送和接收数据。在示例性实施例中,网络665可以是由服务提供商管理的受管理IP网络。网络665可以以无线方式实现,例如使用诸如WiFi、WiMax等无线协议和技术。网络665也可以是分组交换网络,例如局域网、广域网、城域网、因特网或其它类似类型的网络环境。网络665可以是固定无线网络、无线局域网(LAN)、无线广域网(WAN)、个人区域网(PAN)、虚拟专用网(VPN)、内联网或其它合适的网络系统,并且包括用于接收和发送信号的设备。
如果计算机601是PC、工作站、智能设备等,则存储器610中的指令还可以包括基本输入输出系统(BIOS)(为了简单起见而省略)。BIOS是一组基本软件例程,其在启动时初始化和测试硬件,启动OS 611,并且支持硬件设备之间的数据传输。BIOS存储在ROM中,使得当计算机601被激活时可以执行BIOS。
当计算机601运行时,处理器605被配置为执行存储在存储器610内的指令,以向和从存储器610传送数据,并且通常根据指令控制计算机601的操作。根据本发明的一个或多个实施例,计算机601是图4的云计算节点10的示例。
在此参考相关附图描述本发明的各种实施例。在不偏离本发明的范围的情况下,可以设计本发明的替代实施例。在以下描述和附图中,在元件之间阐述了各种连接和位置关系(例如,上方、下方、相邻等)。除非另有说明,这些连接和/或位置关系可以是直接的或间接的,并且本发明并不旨在在这方面进行限制。因此,实体的偶联可以指直接或间接偶联,并且实体之间的位置关系可以是直接或间接位置关系。此外,本文所述的各种任务和过程步骤可并入具有本文未详细描述的额外步骤或功能性的更综合程序或过程中。
本文所述的一种或多种方法可以用本领域公知的以下技术中的任一种或其组合来实现:具有用于根据数据信号实现逻辑功能的逻辑门的分立逻辑电路、具有适当组合逻辑门的专用集成电路(ASIC)、可编程门阵列(PGA)、现场可编程门阵列(FPGA)等。
为了简洁起见,与制造和使用本发明的方面相关的常规技术可以或可以不在本文中详细描述。特别地,用于实现本文描述的各种技术特征的计算系统和特定计算机程序的各个方面是公知的。因此,为了简洁起见,许多常规实现细节在本文中仅简要提及或完全省略,而不提供众所周知的系统和/或过程细节。
在一些实施例中,各种功能或动作可以在给定位置处和/或结合一个或多个装置或系统的操作而发生。在一些实施例中,给定功能或动作的一部分可以在第一设备或位置处执行,并且该功能或动作的其余部分可以在一个或多个附加设备或位置处执行。
本文所用的术语仅是为了描述特定实施例的目的,而不是旨在进行限制。如本文所用,单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文另有明确指示。还将理解,术语“包括”和/或“包含”在本说明书中使用时,指定所陈述的特征、整数、步骤、操作、元件和/或组件的存在,但不排除一个或多个其它特征、整数、步骤、操作、元件组件和/或其群组的存在或添加。
以下权利要求中的所有装置或步骤加功能元件的对应结构、材料、动作和等同物旨在包括用于与如具体要求保护的其它要求保护的元件组合执行功能的任何结构、材料或动作。本公开内容是为了说明和描述的目的而呈现的,而不是旨在是穷举的或限于所公开的形式。在不背离本公开的范围和精神的情况下,许多修改和变化对于本领域普通技术人员将是显而易见的。选择和描述实施例是为了最好地解释本公开的原理和实际应用,并且使本领域的其他普通技术人员能够理解具有各种修改的各种实施例的本公开,这些修改适合于所设想的特定用途。
这里描述的图是说明性的。在不脱离本公开的精神的情况下,可以存在对其中描述的图或步骤(或操作)的许多变化。例如,可以以不同的顺序执行动作,或者可以添加、删除或修改动作。此外,术语“耦合”描述在两个元件之间具有信号路径,并且不暗示元件之间的直接连接,而其间没有中间元件/连接。所有这些变化被认为是本公开的一部分。
以下定义和缩写用于解释权利要求和说明书。如本文所用,术语“包含”、“包括”、“具有”、“含有”或其任何其它变型旨在涵盖非排他性的包括。例如,包括一系列要素的组合物、混合物、工艺、方法、制品或装置不一定仅限于那些要素,而是可以包括未明确列出的或此类组合物、混合物、工艺、方法、制品或装置固有的其他要素。
另外,术语“示例性”在本文中用于表示“用作示例、实例或说明”。在此描述为“示例性”的任何实施例或设计不一定被解释为比其它实施例或设计更优选或有利。术语“至少一个”和“一个或多个”被理解为包括大于或等于一的任何整数,即一、二、三、四等。术语“多个”应理解为包括大于或等于二的任何整数,即二、三、四、五等。术语“连接”可以包括间接“连接”和直接“连接”两者。
术语“约”、“基本上”、“大约”及其变体旨在包括与基于提交本申请时可用的设备的特定量的测量相关联的误差度。例如,“约”可以包括给定值的±8%或5%或2%的范围。
本发明可以是任何可能的技术细节集成水平的系统、方法和/或计算机程序产品。计算机程序产品可以包括其上具有计算机可读程序指令的计算机可读存储介质(或多个介质),所述计算机可读程序指令用于使处理器执行本发明的各方面。
计算机可读存储介质可以是能够保留和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述的任何合适的组合。计算机可读存储介质的更具体示例的非穷举列表包括以下:便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、诸如上面记录有指令的打孔卡或凹槽中的凸起结构的机械编码装置,以及上述的任何适当组合。如本文所使用的计算机可读存储介质不应被解释为暂时性信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤线缆的光脉冲)、或通过导线传输的电信号。
本文描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备,或者经由网络,例如因特网、局域网、广域网和/或无线网络,下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路的配置数据,或者以一种或多种编程语言(包括面向对象的编程语言,例如Smalltalk、C++等)和过程编程语言(例如,“C”编程语言或类似的编程语言)的任意组合编写的源代码或目标代码。计算机可读程序指令可以完全在用户的计算机上执行,部分在用户的计算机上执行,作为独立的软件包执行,部分在用户的计算机上并且部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机,包括局域网(LAN)或广域网(WAN),或者可以连接到外部计算机(例如,使用因特网服务提供商通过因特网)。在一些实施例中,为了执行本发明的各方面,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路个性化。
在此参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的各方面。将理解,流程图和/或框图的每个框以及流程图和/或框图中的框的组合可以由计算机可读程序指令来实现。
这些计算机可读程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现流程图和/或框图的一个或多个框中指定的功能/动作的装置。这些计算机可读程序指令还可以存储在计算机可读存储介质中,其可以引导计算机、可编程数据处理装置和/或其他设备以特定方式工作,使得其中存储有指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或框图的一个或多个框中指定的功能/动作的各方面的指令。
计算机可读程序指令还可以被加载到计算机、其他可编程数据处理装置或其他设备上,以使得在计算机、其他可编程装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,使得在计算机、其他可编程装置或其他设备上执行的指令实现流程图和/或框图的一个或多个框中指定的功能/动作。
附图中的流程图和框图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在这点上,流程图或框图中的每个框可以表示指令的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些替代实施方案中,框中所注明的功能可不按图中所注明的次序发生。例如,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。还将注意,框图和/或流程图图示的每个框以及框图和/或流程图图示中的框的组合可以由执行指定功能或动作或执行专用硬件和计算机指令的组合的专用的基于硬件的系统来实现。
已经出于说明的目的给出了本发明的各种实施例的描述,但是其不旨在是穷尽的或限于所公开的实施例。在不背离所描述的实施例的范围和精神的情况下,许多修改和变化对于本领域的普通技术人员将是显而易见的。选择本文所使用的术语以最好地解释实施例的原理、实际应用或对市场上存在的技术改进,或使本领域的其他普通技术人员能够理解本文所描述的实施例。
Claims (20)
1.一种方法,包括:
在处理器上执行的操作系统处,从程序接收将数据写入到存储器的写入请求,所述写入请求包括虚拟存储器地址和所述数据;
确定所述虚拟存储器地址未被分配给物理存储器地址;
基于所述确定,将所述虚拟存储器地址分配给溢出存储器中的物理存储器地址;
将所述数据写入所述溢出存储器中的所述物理存储器地址;以及
向所述程序返回所述数据被成功写入所述存储器的指示,其中所述程序访问所述虚拟存储器地址的后续请求被定向到所述溢出存储器中的所述物理存储器地址。
2.根据权利要求1所述的方法,还包括响应于确定所述虚拟地址未被分配给物理存储器地址而启动关于所述数据和所述程序中的一者或两者的状态信息的记录。
3.根据权利要求2所述的方法,其中,所述状态信息被用于识别与恶意程序或威胁行动者相关联的模式。
4.根据权利要求2所述的方法,其中,至少部分基于所述状态信息来更新所述处理器的安全策略。
5.根据权利要求1所述的方法,其中,所述数据包括计算机代码,并且所述溢出位置被配置为防止所述计算机代码从所述溢出位置执行。
6.根据权利要求1所述的方法,其中,使用转换后备缓冲器TLB将虚拟存储器地址转换成物理存储器地址,并且所述TLB是使用稀疏存储器放置来配置的。
7.根据权利要求1所述的方法,还包括:
确定所述处理器的缓冲器溢出模式,其中,基于所述处理器的所述缓冲器溢出模式为第一模式而执行所述分配、写入和返回;以及
基于所述缓冲器溢出模式是第二模式,响应于确定所述虚拟地址未被分配给所述存储器中的物理存储器地址,向所述程序返回所述写入未被成功完成的指示。
8.一种系统,包括:
用于执行计算机可读指令的一个或多个处理器,所述计算机可读指令控制所述一个或多个处理器执行操作,所述操作包括:
在所述一个或多个处理器中的处理器上执行的操作系统处,从程序接收将数据写入到存储器的写入请求,所述写入请求包括虚拟存储器地址和所述数据;
确定所述虚拟存储器地址未被分配给物理存储器地址;
基于所述确定,将所述虚拟存储器地址分配给溢出存储器中的物理存储器地址;
将所述数据写入所述溢出存储器中的所述物理存储器地址;以及
向所述程序返回所述数据被成功写入所述存储器的指示,其中,所述程序访问所述虚拟存储器地址的后续请求被定向到所述溢出存储器中的所述物理存储器地址。
9.根据权利要求8所述的系统,其中,所述操作还包括响应于确定所述虚拟地址未被分配给物理存储器地址而启动关于所述数据和所述程序中的一者或两者的状态信息的记录。
10.根据权利要求9所述的系统,其中,所述状态信息被用于识别与恶意程序或威胁行动者相关联的模式。
11.根据权利要求9所述的系统,其中,至少部分地基于所述状态信息来更新所述处理器的安全策略。
12.根据权利要求8所述的系统,其中,所述数据包括计算机代码,并且所述溢出位置被配置为防止所述计算机代码从所述溢出位置执行。
13.根据权利要求8所述的系统,其中,使用转换后备缓冲器TLB将虚拟存储器地址转换成物理存储器地址,并且所述TLB是使用稀疏存储器放置来配置的。
14.根据权利要求8所述的系统,其中,所述操作还包括:
确定所述处理器的缓冲器溢出模式,其中,基于所述处理器的所述缓冲器溢出模式为第一模式而执行所述分配、写入和返回;以及
基于所述缓冲器溢出模式是第二模式,响应于确定所述虚拟地址未被分配给所述存储器中的物理存储器地址,向所述程序返回所述写入未被成功完成的指示。
15.一种计算机程序产品,包括计算机可读存储介质,所述计算机可读存储介质包含程序指令,所述程序指令可由处理器执行以使所述处理器执行操作,所述操作包括:
在所述处理器上执行的操作系统处,从程序接收将数据写入到存储器的写入请求,所述写入请求包括虚拟存储器地址和所述数据;
确定所述虚拟存储器地址未被分配给物理存储器地址;
基于所述确定,将所述虚拟存储器地址分配给溢出存储器中的物理存储器地址;
将所述数据写入所述溢出存储器中的所述物理存储器地址;以及
向所述程序返回所述数据被成功写入所述存储器的指示,其中,所述程序访问所述虚拟存储器地址的后续请求被定向到所述溢出存储器中的所述物理存储器地址。
16.根据权利要求15所述的计算机程序产品,其中,所述操作还包括响应于确定所述虚拟地址未被分配给物理存储器地址而启动关于所述数据和所述程序中的一者或两者的状态信息的记录。
17.根据权利要求16所述的计算机程序产品,其中,至少部分地基于所述状态信息来更新所述处理器的安全策略。
18.根据权利要求15所述的计算机程序产品,其中,所述数据包括计算机代码,并且所述溢出位置被配置为防止所述计算机代码从所述溢出位置执行。
19.根据权利要求15所述的计算机程序产品,其中,使用转换后备缓冲器TLB将虚拟存储器地址转换成物理存储器地址,并且所述TLB是使用稀疏存储器放置来配置的。
20.根据权利要求15所述的计算机程序产品,其中,所述操作还包括:
确定所述处理器的缓冲器溢出模式,其中,基于所述处理器的所述缓冲器溢出模式是第一模式而执行所述分配、写入和返回;以及
基于所述缓冲器溢出模式是第二模式,响应于确定所述虚拟地址未被分配给所述存储器中的物理存储器地址,向所述程序返回所述写入未被成功完成的指示。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/068,915 | 2020-10-13 | ||
US17/068,915 US11947465B2 (en) | 2020-10-13 | 2020-10-13 | Buffer overflow trapping |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114356616A true CN114356616A (zh) | 2022-04-15 |
Family
ID=78399511
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111185565.8A Pending CN114356616A (zh) | 2020-10-13 | 2021-10-12 | 缓冲器溢出捕获 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11947465B2 (zh) |
JP (1) | JP2022064320A (zh) |
CN (1) | CN114356616A (zh) |
DE (1) | DE102021124371A1 (zh) |
GB (1) | GB2603989B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11947465B2 (en) * | 2020-10-13 | 2024-04-02 | International Business Machines Corporation | Buffer overflow trapping |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5157663A (en) | 1990-09-24 | 1992-10-20 | Novell, Inc. | Fault tolerant computer system |
US6381694B1 (en) | 1994-02-18 | 2002-04-30 | Apple Computer, Inc. | System for automatic recovery from software problems that cause computer failure |
US6594780B1 (en) | 1999-10-19 | 2003-07-15 | Inasoft, Inc. | Operating system and data protection |
US20020144141A1 (en) | 2001-03-31 | 2002-10-03 | Edwards James W. | Countering buffer overrun security vulnerabilities in a CPU |
US7222143B2 (en) | 2003-11-24 | 2007-05-22 | Lenovo (Singapore) Pte Ltd. | Safely restoring previously un-backed up data during system restore of a failing system |
US7647637B2 (en) | 2005-08-19 | 2010-01-12 | Sun Microsystems, Inc. | Computer security technique employing patch with detection and/or characterization mechanism for exploit of patched vulnerability |
US8819822B1 (en) * | 2006-03-30 | 2014-08-26 | Vmware, Inc. | Security method for detecting intrusions that exploit misinterpretation of supplied data |
US8510827B1 (en) * | 2006-05-18 | 2013-08-13 | Vmware, Inc. | Taint tracking mechanism for computer security |
US8893278B1 (en) * | 2011-07-12 | 2014-11-18 | Trustwave Holdings, Inc. | Detecting malware communication on an infected computing device |
US8694738B2 (en) * | 2011-10-11 | 2014-04-08 | Mcafee, Inc. | System and method for critical address space protection in a hypervisor environment |
US10447733B2 (en) * | 2014-06-11 | 2019-10-15 | Accenture Global Services Limited | Deception network system |
US9804975B2 (en) | 2014-06-23 | 2017-10-31 | The Johns Hopkins University | Hardware-enforced prevention of buffer overflow |
US9952887B2 (en) | 2014-06-23 | 2018-04-24 | Vmware, Inc. | Device simulation in a secure mode supported by hardware architectures |
EP3195178B1 (en) | 2014-07-23 | 2019-02-20 | GrammaTech, Inc. | Systems and/or methods for automatically protecting against memory corruption vulnerabilities |
US10268601B2 (en) * | 2016-06-17 | 2019-04-23 | Massachusetts Institute Of Technology | Timely randomized memory protection |
US10938854B2 (en) * | 2017-09-22 | 2021-03-02 | Acronis International Gmbh | Systems and methods for preventive ransomware detection using file honeypots |
US11030112B2 (en) * | 2018-05-25 | 2021-06-08 | Red Hat, Inc. | Enhanced address space layout randomization |
US11985101B2 (en) * | 2019-01-18 | 2024-05-14 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Method, apparatus, electronic message server and computer program for processing a plurality of electronic messages |
US11681806B2 (en) * | 2019-10-15 | 2023-06-20 | International Business Machines Corporation | Protecting against out-of-bounds buffer references |
US11271907B2 (en) * | 2019-12-19 | 2022-03-08 | Palo Alto Networks, Inc. | Smart proxy for a large scale high-interaction honeypot farm |
US11816217B2 (en) * | 2020-04-10 | 2023-11-14 | Vmware, Inc. | Decoy memory allocation |
US11947465B2 (en) * | 2020-10-13 | 2024-04-02 | International Business Machines Corporation | Buffer overflow trapping |
-
2020
- 2020-10-13 US US17/068,915 patent/US11947465B2/en active Active
-
2021
- 2021-09-21 DE DE102021124371.8A patent/DE102021124371A1/de active Pending
- 2021-09-28 GB GB2113827.6A patent/GB2603989B/en active Active
- 2021-10-12 JP JP2021167124A patent/JP2022064320A/ja active Pending
- 2021-10-12 CN CN202111185565.8A patent/CN114356616A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
GB2603989A (en) | 2022-08-24 |
DE102021124371A1 (de) | 2022-04-14 |
GB2603989B (en) | 2023-07-12 |
US20220114106A1 (en) | 2022-04-14 |
JP2022064320A (ja) | 2022-04-25 |
GB202113827D0 (en) | 2021-11-10 |
US11947465B2 (en) | 2024-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10834108B2 (en) | Data protection in a networked computing environment | |
US11048620B2 (en) | Distributed system test device | |
US10491621B2 (en) | Website security tracking across a network | |
US10158743B2 (en) | Compute node cluster management | |
US9904484B2 (en) | Securing protected information based on software designation | |
US9612942B2 (en) | Verification of a computer program in respect to an unexpected response to an access request | |
US10025671B2 (en) | Smart virtual machine snapshotting | |
US10552616B2 (en) | Determining and managing application vulnerabilities | |
CN114356616A (zh) | 缓冲器溢出捕获 | |
US10296737B2 (en) | Security enforcement in the presence of dynamic code loading | |
US11010479B2 (en) | Cyber security for space-switching program calls | |
US20190166063A1 (en) | Abstracted, extensible cloud access of resources | |
US11784821B2 (en) | Cognitive process data and decision tracking to facilitate artificial intelligence operations compliance | |
US11418539B2 (en) | Denial of service attack mitigation through direct address connection | |
US11775272B1 (en) | Deployment of software programs based on security levels thereof | |
US20240137382A1 (en) | Techniques for cybersecurity identity risk detection utilizing disk cloning and unified identity mapping | |
US11360939B2 (en) | Testing of file system events triggered by file access | |
US11374959B2 (en) | Identifying and circumventing security scanners | |
US20210117304A1 (en) | Breakpoint generation from static analysis | |
TW202309743A (zh) | 虛擬機器執行期間無法存取之前綴頁面 | |
Guo et al. | High-Performance Computing Security |
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 |