CN114641770A - 使用页帧标签机制来增强存储器安全编程 - Google Patents

使用页帧标签机制来增强存储器安全编程 Download PDF

Info

Publication number
CN114641770A
CN114641770A CN202080077423.7A CN202080077423A CN114641770A CN 114641770 A CN114641770 A CN 114641770A CN 202080077423 A CN202080077423 A CN 202080077423A CN 114641770 A CN114641770 A CN 114641770A
Authority
CN
China
Prior art keywords
function
functions
source code
gadget
determining
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
CN202080077423.7A
Other languages
English (en)
Other versions
CN114641770B (zh
Inventor
J·坎迪多·德利马·约尼尔
C·E·希欧
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN114641770A publication Critical patent/CN114641770A/zh
Application granted granted Critical
Publication of CN114641770B publication Critical patent/CN114641770B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • G06F21/54Monitoring 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 by adding security routines or objects to programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1433Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a module or a part of a module
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • G06F8/434Pointers; Aliasing
    • 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
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Virology (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

一种用于缓解在应用的执行期间发生的面向返回的编程(ROP)攻击的技术包括接收源代码以编译成可执行的应用。在源代码的编译期间,源代码内与ROP攻击中的小工具相关联的一个或多个函数被确定,一个或多个函数中的每个函数被分配到针对可执行的应用的一个或多个受保护的存储器页,并且标签被分配到一个或多个函数中的每个函数。针对每个函数的标签映射到函数被分配到的受保护的存储器页。

Description

使用页帧标签机制来增强存储器安全编程
背景技术
本发明涉及计算机安全,并且更具体地,涉及用于使用页帧标签机制来缓解面向返回的编程(ROP)攻击的技术。
在一些情况下,软件程序(或应用)可能易受不同类型的利用的攻击。这些利用例如可以允许将恶意代码注入和执行到程序中,允许程序执行通常可以被限制于系统管理员的动作、泄露数据等的特权升级。这些利用中的一些可以允许未经授权的用户访问计算机系统上的数据并且漏出该数据。
一种常见利用涉及通过修改调用堆栈来攻击程序的执行流。调用堆栈例如是贯穿应用的执行被使用和维护的基本数据结构。(程序的)执行流可以通过将所调用函数的返回地址推送到堆栈上来控制。恶意行为者可以因此操纵调用堆栈以重定向程序的执行以运行任意代码。ROP是涉及修改调用堆栈的常用开发的一个示例。在ROP利用中,恶意行为者通常使用多个现有代码片段(通常被称为“小工具”)来运行壳代码。例如,恶意行为者可以操纵堆栈上的返回地址以通过将返回地址的值替换成小工具的地址的值来执行小工具。当链接在一起时,这些动作允许恶意行为者执行危害程序执行流程的任意操作。
用于防御ROP技术的常规技术一般涉及地址空间布局随机化或控制流完整性系统的实现。例如,地址空间布局随机化涉及随机布置进程的数据区的地址空间位置,以便防止攻击者可靠地跳到存储器中的利用的函数。控制流完整性系统通常采用涉及防止控制流本身被利用的技术。然而,这些常规技术与高运行时开销、有限管理程序支持等相关联。此外,实现这些技术可以涉及大量的劳动强度代码重构。
发明内容
本文中所呈现的实施例描述一种用于缓解在应用的执行期间发生的针对面向返回的编程(ROP)攻击的方法。该方法总体包括接收源代码以编译成可执行的应用。方法还包括在所述源代码的编译期间,确定所述源代码内与ROP攻击中的小工具相关联的一个或多个函数,以及将一个或多个函数中的每个函数分配到针对可执行应用的一个或多个受保护的存储器页。方法还包括:在所述源代码的编译期间,将标签分配到一个或多个函数中的每个函数。针对每个函数的标签映射到被分配到函数的受保护的存储器页。
其他实施例包括但不限于一种计算机程序产品,该计算机程序产品包括具有计算机可读程序代码的存储介质以及计算系统,该计算机可读程序代码使得处理单元能够实现所公开的方法的一个或多个方面,该计算系统具有处理器、存储器和被配置成实现所公开的方法中的一个或多个的应用程序。
附图说明
现在将参考附图仅通过示例的方式来描述本发明的实施例,在附
图中:
图1示出了根据一个实施例的配置有保护组件的示例计算系统。
图2示出了根据一个实施例的计算系统内的存储器保护密钥机制的示例实现。
图3示出了根据一个实施例的面向返回的编程攻击的示例。
图4是根据一个实施例的用于缓解针对面向返回的编程攻击的方法的流程图。
图5示出了根据一个实施例的分配给受保护的页帧的函数的示例。
图6示出了根据一个实施例的缓解对应用的ROP攻击的示例。
图7是根据一个实施例的用于执行应用的方法的流程图。
图8示出了根据一个实施例的被配置以缓解对应用的ROP攻击的示例计算系统。
为了便于理解,在可能的情况下,使用相同的附图标记来表示附图所共有的相同元件。预期一个实施例的元件和特征可以有益地结合在其他实施例中,而无需进一步详述。
具体实施方式
本文描述的实施例提供用于使用在计算系统的硬件内支持的页帧标签机制来缓解对软件应用的面向返回的编程(ROP)攻击的方法、处理系统和计算机可读介质。
例如,一些计算系统可以支持存储器保护密钥特征,存储器保护密钥特征允许保护密钥被分配给存储器页以用于访问控制目的。在启用此特征的情况下,每个页表条目中的一组位(例如,四位)可以被用以将一组(例如,十六)密钥值中的一个密钥值分配给任何给定页。这些密钥值可以被用以实施基于页的保护。例如,支持该特征的计算系统可以使用寄存器,针对每个密钥值两个位,以控制对给定页的写入和读取尝试。针对给定密钥块设置“写入禁用”位试图写入具有该密钥值的页。类似地,针对给定密钥块设置“访问禁用”位试图读取具有该密钥值的页。
本文中描述的实施例可以利用计算系统内的存储器保护密钥特征(通常被用于实施基于页的保护)以便缓解ROP攻击。更具体地,实施例可以使用存储器保护密钥特征来将标签分配给受保护的页帧中的每个函数,使得程序以特定顺序执行和运行。在下文更详细描述的一个实施例中,在源代码的编译时间期间,编译器可以识别源代码内与ROP攻击相关联的函数集合(例如,易受被用作ROP攻击中的小工具的影响的高风险函数),在受保护的页帧中分配所标识的函数集合(例如,利用存储器保护密钥保护的),并且将标签分配给每个函数。通过以此方式将高风险函数分配给受保护的页帧,各实施例可缓解尝试修改对程序的执行的利用。例如,实施例可以防止恶意行为者利用小工具来构建ROP攻击,因为如果调用的经标记函数具有不正确的标签,那么使用本文中所呈现的技术保护的程序将不执行。
图1示出了根据一个实施例的配置有保护组件110的示例计算系统100。计算系统100包括一个或多个应用102、编译器104、操作系统106和硬件108。计算系统100表示各种计算设备,包括例如台式计算机、膝上型计算机、移动设备、平板计算机等。硬件108包括(多个)处理器120和存储器122。(多个)处理器120可以表示一个或多个处理器(例如,微处理器、中央处理单元(CPU)等)或多核处理器。(多个)处理器120可以包括各种寄存器、缓冲器、存储器、和由集成电路形成的其他单元,并且可以根据精简指令集计算(“RISC”)技术进行操作。存储器122可以包括各种计算机可读介质,包括例如易失性和/或非易失性介质、可移除和/或不可移除介质等。存储器122可以包括一个或多个高速缓存、随机存取存储器、只读存储器等。此外,存储器122可以包括物理地位于计算系统100中或耦合至计算系统100的另一计算设备上的存储器。
计算系统100在操作系统106的控制下操作,操作系统106负责运行应用102并且管理应用102对硬件108的访问。操作系统106通常表示任何操作系统,示例包括
Figure BDA0003630083640000041
Figure BDA0003630083640000042
分布等的版本。如图所示,操作系统106包括位于操作系统106的内核114中的系统调用接口116和页帧分配器118。(多个)应用102可以经由系统调用接口116从操作系统106请求服务(例如,进行系统调用)。对服务的请求可以包括对一个或多个进程的请求、对新进程的创建和执行的请求、对访问不同硬件设备(例如,某些外围设备等)的请求、对通信服务的请求和其他。应用102可以被实现为存储在存储器122中的指令集,并且处理器120可以被配置为执行指令以执行指定的任务或一系列任务。页帧分配器118可以基于应用进程的需要为其分配和/或解除分配存储器。在一个实施例中,页帧分配器118可以保持真实存储器的空闲页的列表,它可以从该列表分配给应用进程。
在本文的实施例中,计算系统100支持存储器保护密钥机制,存储器保护密钥机制允许将一个或多个保护密钥(pkeys)124分配给(例如,由页帧分配器118分配的)存储器页以用于访问控制目的。使用此机制,给定应用(或进程)102可以将其存储器配置到多个区中并且选择性地禁止或使能对那些区中的任一区的访问。例如,保护密钥124通常是多位值(例如,4位),其可以被存储在应用的地址空间中的每个页的页表条目中。由此,假设保护密钥124为四位值,可以将页分配给十六个密钥值中的一个密钥值。对于这些密钥中的每个密钥,应用102可以配置处理器120以拒绝对由密钥保护的相应存储器页的写入操作或读取操作。在一个示例中,应用102可以经由系统调用接口116获取具有系统调用“pkey_alloc()”的保护密钥124,该系统调用返回指示哪个密钥被分配的整数索引。应用102可以通过系统调用“pkey_mprotect()”经由系统调用接口116将密钥分配给给定页。应用102可以使用系统调用“pkey_free()”来分配或释放保护密钥并且使其可以用于稍后的分配。
图2描绘了根据一个实施例的存储器保护密钥机制的一个示例实现。这里,页帧分配器118包括页表202和用户页的保护密钥权限(PKRU)寄存器204。页表202包括一个或多个页表条目206,每个页表条目可以被分配保护密钥124。PKRU寄存器204是包括用于每个保护密钥124的两个分开的位(例如,访问禁用位和写入禁用位)的控制寄存器。在该示例中,PKRU寄存器204包括用于第一保护密钥124A(“foo”)和第二保护密钥124B(“bar”)的两个分开的位。
PKRU寄存器204可以针对每个保护密钥124确定是否可以访问(例如,读取或写入)与该保护密钥124相关联的(页表条目206的)存储器页。在该特定示例中,页表条目206包括用于保护密钥124的保护密钥字段208,该保护密钥适用于用户级别的页(例如,U/S=1)。保护字段208内的保护密钥124被用作PKRU 204的索引。然后,基于传统页许可(来自页表条目206)和保护密钥124的PKRU许可(与页表条目206相关联)来确定对存储器页的访问许可。例如,如果PKRU权限拒绝对给定存储器页的访问,则可以拒绝应用102对该存储器页的访问。类似地,也可以拒绝从内核114对该存储器页的直接存储器访问。
返回参考图1,编译器104通常可以将源代码从高级编程语言(例如,C、C+等)翻译成低级语言(例如,汇编、目标代码、机器代码等),以便创建可执行程序(例如,应用102)。注意,虽然图1描绘了计算系统100内的编译器104,但是在其他实施例中,编译器104可以位于另一计算系统内。在一些实施例中,编译器104可以位于托管在云计算环境(未示出)中的计算系统中。在一个示例中,应用102可以利用被编码到程序本身中或者存储在存储器122中的作为库的一部分(例如,C库(libc))的函数。函数可以在应用102(或程序)内定义或者分开地在可以由多个应用使用的库中定义。通常对函数进行编码,使得其可以在应用102的执行期间从若干地方开始或调用若干次,包括从其他函数开始或调用,并且然后一旦任务完成,在调用之后分支返回或返回到下一指令。函数也可以被称为步骤、子例程、例程、方法、子程序等。
处理器120可以使用调用堆栈来实现函数调用和返回。例如,每个函数调用在堆栈的一端处创建新条目或堆栈帧。当函数返回时,从堆栈中删除堆栈帧,并且该空间可以被用以其他函数调用。每个堆栈帧可以包括对应调用的私有数据(例如,参数和内部变量)和返回地址(例如,在调用之后的指令的地址)。调用堆栈被用来跟踪每个活动函数在它完成执行时应返回控制的点。例如,活动函数是已被调用但尚未完成执行的函数,此后控制应当被切换回调用点或调用函数。
函数还可以包括函数开始和函数结尾,该函数开始和函数结尾将函数的主体括起来,并且可以被用来操纵堆栈。例如,函数前言程序出现在函数的开始处并且准备堆栈和寄存器以用于在函数内使用。类似地,函数结尾出现在函数的结尾处,并且将堆栈和寄存器恢复到它们在函数被调用之前处于的状态。函数结尾通常包括函数退出点或返回指令,诸如x86汇编语言的“ret”。
如所指出的,恶意行为者经常在ROP攻击中使用多个小工具来操纵调用堆栈和改变程序执行。如本文所使用的,小工具指的是提供用于面向返回的程序的操作的指令序列。每个小工具可以在返回指令(例如,x86RET指令)中结束。作为示例,“move eax.10:ret”是将eax设置为10(十进制)的小工具。小工具通常是可以在应用102的存储器(例如,地址空间)中找到的指令序列。这种小工具的示例源是应用102可访问的库,诸如libc。恶意行为者通常可以通过分析操作系统的程序或库的二进制代码来标识可以被用作小工具的指令序列。一般而言,可以在运行时处被确定的目标地址中结束的任何指令序列(诸如,返回指令)可以潜在地被用作小工具。频繁使用的小工具的示例包括将数据从一个位置存储和加载到另一位置的小工具(例如,寄存器到寄存器、寄存器到存储器、存储器到寄存器等)、执行算术运算(例如,ADD(加)、SUB(减)、MUL(乘)、DIV(除)XOR(异或)、旋转、移位等)的小工具等。
在一些情况下,恶意行为者可以以面向返回的程序的形式执行ROP攻击。例如,面向返回的程序可以包括以特定顺序布置的一个或多个小工具,使得在被执行时,执行恶意行为者的预期行为。具有小工具的有效载荷可以被放置在被开发的应用(例如,应用102)的存储器中,并且堆栈指针可以被重定向以指向第一小工具。在一个示例中,这可以通过堆栈的缓冲器溢出来实现。小工具帧通常放置在溢出堆栈上,使得第一小工具已经盖写一些函数的所保存的指令指针。当该函数试图返回时,改为执行面向返回的程序。构造面向返回的程序中的每个小工具,使得当执行小工具的序列的最后指令中的返回指令时,堆栈指针指向待执行的下一小工具。以此方式,面向返回的程序将逐一执行一个小工具,从而改变应用102的预期执行流。
图3示出了根据一个实施例的ROP攻击的一个参考示例。在该参考示例中,应用102在302处开始并且在304处等待用户输入(例如,应用102可以调用要求用户输入的函数)。这里,在304处,应用102可以具有已知的脆弱性(例如,应用易受调用堆栈中的缓冲器溢出的影响)。在306处,恶意行为者利用该脆弱性并且用任意数据盖写堆栈350。如图所示,在这种情况下,缓冲器溢出用感兴趣的存储器地址盖写被调用函数的返回地址和随后的堆栈区域。
在308处,应用102的执行继续,并且在310,当前函数返回。然而,代替跳转到与当前函数相关联的先前返回地址,应用102反而跳转到(在应用102的存储器中的库360内的)第一小工具的地址并且在312处执行与第一小工具相关联的指令。当执行第一小工具的返回指令时,应用102跳转到(库360内的)第二小工具的地址,并且在314处执行与第二小工具相关联的指令。当执行第二小工具的返回指令时,应用102跳转到(库360内的)第三小工具的地址,并且在316执行与第三小工具相关联的指令。在该过程中,经由返回(例如,ret)函数调用每个小工具,并且每个小工具以指向下一小工具的返回函数结束。恶意行为者可以经由堆栈350传递库360内部的小工具的参量(arguments)。
该过程可以这种方式继续,直到恶意行为者已经达到其目标。例如,恶意行为者可以使用该ROP攻击来对函数执行施加任意排序,以便打开可以由恶意行为者利用的门(例如,打开Unix上的根壳)。此外,图3中所描绘的ROP攻击可以在不注入新代码的情况下实现。即,ROP攻击重用来自存储器中的库(例如,库360,诸如libc)的函数,且将任意参数传递到堆栈350上的函数。
本文描述的实施例提供可以通过利用由计算系统100支持的存储器保护密钥机制(例如,图2中描绘的)来缓解ROP攻击(诸如,图3中描绘的ROP攻击)的技术。再次参考图1,编译器104包括保护组件110,保护组件被配置以实现本文中所描述的用于缓解ROP攻击的一个或多个技术。注意,图1示出了计算系统100的一个可能的布置,并且计算系统的其他布置可以被用于实现本文所描述的技术。例如,在一个实施例中,编译器104可以位于另一计算系统上并且可以使用本文描述的技术来编译源代码以用于由计算系统100执行。
在一个实施例中,保护组件110可以在编译时间期间用一个或多个保护密钥124保护应用102的CPU指令,以便保护应用102免受ROP攻击,例如,当在计算系统100上执行时。例如,当编译应用102的源代码时,保护组件110可以将易于被用作小工具的“高风险”函数分配给利用一个或多个保护密钥124保护的存储器122内的页帧。在一个实施例中,保护组件110可以基于从开发者(例如,应用102的开发者)接收的预先配置的函数列表来确定函数是“高风险的”。
在编译源代码时,保护组件110还可以向用给定保护密钥124保护的“高风险”函数中的每个函数分配保护标签112。每个保护标签112与利用保护密钥124保护的特定页帧相关联。在下面更详细描述的一个实施例中,保护组件110可以使用保护标签112来定义应用102的源代码内的函数的正确执行顺序,使得应用102的函数将仅在函数位于其中的页帧具有适当标签顺序的情况下执行。
图4是根据一个实施例的用于缓解ROP攻击的方法400的流程图。方法400可以由编译器(例如,编译器104)执行。在一个实施例中,方法400可以在应用102的编译时间期间(例如,在运行时或执行之前)执行。
方法400可以在框402处进入,其中编译器开始构建阶段。在框404处,编译器标识源代码内的一个或多个函数的类型。在框406处,编译器确定源代码内的哪些类型的函数是易于被用作小工具的“高风险”函数。“高风险”函数的示例可以包括易受缓冲器溢出攻击的函数(例如,复制函数、移动函数等)。在一个实施例中,编译器可以基于从开发者接收的这种函数的预先确定的列表确定“高风险”函数集。在另一实施例中,编译器可以分析或评估与从源代码的开发者接收的源代码相关联的信息(例如,开发者指南集)以确定“高风险”函数集。例如,开发者指南可以指示应在不同页帧上分配哪些类型的函数,以便保护函数免于被用作在ROP攻击中的小工具。
在框408处,编译器触发将“高风险”函数集中的每个函数到分配利用一个或多个保护密钥124保护的一个或多个页帧。在一个实施例中,编译器可以通过指令(或请求)页帧分配器(例如,页帧分配器118)将该“高风险”函数集分配给利用一个或多个保护密钥124保护的一个或多个页帧来触发分配。一旦分配,编译器将保护标签112分配给“高风险”函数集中的每个函数(框410)。在一个实施例中,编译器可以经由系统调用接口116使用系统调用(例如,pkey_alloc_flag())来分配每个保护标签112。将保护标签112分配给给定函数修改函数开始和结尾以包括保护标签112。编译器指定源代码中的函数将经由保护标签112集合执行的顺序。一旦保护标签112被分配,编译器就可以完成构建过程(框412),并且方法400退出。
图5示出了根据一个实施例的分配给利用保护密钥124保护的页帧的函数的示例。在本实施例中,编译器104分别向三个不同的页帧502A、502B和502C分配三个不同的函数A()、B()和C()。利用各自的保护密钥124A、124B和124C来保护每个页帧502A、502B和502C。如图所示,编译器104还分别向函数A()、B()和C()分配保护标签112A、112B和112C。每个保护标签112映射到保护密钥124中的一个保护密钥。如所指出的,编译器104可以使用该保护标签112集合来控制执行应用102的哪些函数和/或定义执行应用102的“高风险”函数的顺序。例如,由于编译器104利用受保护密钥124处理合法函数的顺序,所以仅当每个页帧具有适当的标签顺序时,才可以执行函数。以此方式,如果恶意行为者尝试改变函数调用顺序,则应用102可以停止,因为函数调用不包含正确的保护密钥。
注意,尽管图5描绘了分配给三个不同的受保护页帧的三个函数,但是在其他实施例中,可以不同方式将被标识为“高风险”的函数分配给受保护页帧。例如,在一些实施例中,多个函数可以被分配给相同的受保护页帧。在这些实施例中,可以向这些函数中的每个函数分配映射到相同保护密钥124的保护标签112。在其他实施例中,可以存在分配给利用多个保护密钥124保护的相同页帧的多个函数。例如,在这些实施例中,页帧内的不同存储器范围(或区域)可以利用不同保护密钥124来保护,并且一个或多个函数可以被分配(或分派)给不同存储器区域。
考虑图6中描绘的应用102上的ROP攻击的示例场景,其已使用本文中所描述的ROP缓解技术来编译。类似于图3中的ROP攻击,在该ROP攻击中,恶意行为者在306处攻击应用中的脆弱性(例如,缓冲器溢出)(例如,在程序在302处开始且在304处停止等待输入之后)。具体地,恶意行为者引起堆栈350上的缓冲器溢出,缓冲器溢出使用存储器页502的库360内的小工具的地址盖写被调用函数的返回地址。然而,在该实施例中,当在602遭破坏的返回地址尝试调用存储器中的小工具时,暂停执行,因为所调用的函数被标签且函数调用不提供正确的保护标签112(与存储器页502的保护密钥124相关联的保护标签112)。以此方式,实施例提供了安全机制,该安全机制可以由编译器完全实现并且对于用户和开发者是透明的。此外,各实施例可以利用最小开销(例如,相对于与常规技术相关联的开销)和不要求源代码的重构来实现本文中所描述的技术。
图7是根据一个实施例的用于执行由编译器(例如,编译器104)编译的应用(例如,应用102)的方法700的流程图。方法700可以由计算系统100的一个或多个组件(例如,(多个)处理器120)执行。
方法700可以在框702处进入,其中计算系统100从与应用相关联的(第一)函数的开始标识一个或多个保护标签(例如,保护标签112)。如所指出的,保护标签与位于利用一个或多个保护密钥(例如,保护密钥124)保护的存储器页内的函数相关联。在框704处,计算系统100开始执行函数。在一个实施例中,例如,计算系统100可以暂停用户输入或执行另一操作。在一些情况下,在执行期间,恶意行为者可以利用应用内的脆弱性并且引起缓冲器溢出,缓冲器溢出利用存储器中的另一(第二)函数(或小工具)的地址盖写第一函数的返回地址。例如,在框706处,计算系统100确定函数返回调用存储器中的另一函数。
在框708处,计算系统100确定函数返回调用是否包括与其他函数相关联的(多个)保护标签。如果函数返回调用不包括相关的(多个)保护标签,则计算系统100暂停执行,阻止对其他函数的访问(框710)。如果函数返回调用确实包括相关的(多个)保护标签,则计算系统100执行其他函数(框712)。方法700然后退出。在一个实施例中,计算系统可以执行重复702、704、706的操作,以及作为执行712中的操作的一部分的708。
图8示出了根据一个实施例的被配置为执行设备导流程(onboarding)的计算系统800。如图所示,计算系统800包括但不限于中央处理单元(CPU)805、网络接口815、存储器820和存储装置860,每个都连接到总线817。计算系统800还可以包括将I/O设备812(例如,键盘、鼠标和显示设备)连接到计算系统800的I/O设备接口810。进一步,在本公开的上下文中,计算系统800中示出的计算元件可以对应于物理计算系统(例如,数据中心中的系统)或者可以是在计算云内执行的虚拟计算实例。
CPU 805检索并且执行存储在存储器820中的编程指令以及存储和检索驻留在存储器820中的应用数据。互连817被用于在CPU 805、I/O设备接口810、存储装置860、网络接口815和存储器820之间传输编程指令和应用数据。注意,CPU 805被包括以表示单个CPU、多个CPU、具有多个处理核的单个CPU等。通常存储器820被包括以表示随机存取存储器。存储装置860可以是盘驱动器存储装置。虽然被示出为单个单元,但是存储装置860可以是固定和/或可移除存储设备的组合,诸如固定盘驱动器、可移除存储卡或光存储装置、网络附加存储装置(NAS)或存储区域网络(SAN)。存储装置860包括上面更详细描述的保护标签112和保护密钥124。说明性地,存储装置820包括编译器104和操作系统106,其在上文更详细地描述。
已经出于说明的目的呈现了本发明的各种实施例的描述,但并不旨在是详尽的或者限于所公开的实施例。在不脱离所描述的实施例的范围和精神的情况下,许多修改和变化对本领域普通技术人员将是明显的。这里使用的术语被选择来最好地解释实施例的原理、实际应用或对在市场中找到的技术的技术改进,或者使得本领域普通技术人员能够理解本文公开的实施例。
在下文中,参考本公开中提出的实施例。然而,本公开的范围不限于具体描述的实施例。相反,以下特征和元件的任何组合(无论是否涉及不同实施例)被考虑来实现和实践所考虑的实施例。此外,尽管本文所公开的实施例可以实现优于其他可能的解决方案或优于现有技术的优点,但特定优点是否由给定实施例实现并不限制本公开的范围。因此,以下方面、特征、实施例和优点仅仅是说明性的并且不被认为是所附权利要求的元素或限制,除非在权利要求中明确陈述。同样,对“本发明”的引用不应被解释为在此所披露的任何发明主题的概括,并且不应被认为是所附权利要求的元素或限制,除非在权利要求中明确陈述。
本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施例、完全的软件实施例(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施例,本文可以统称为“电路”、“模块”或“系统”。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括其上具有用于使处理器执行本发明的各方面的计算机可读程序指令的计算机可读存储介质(或多个介质)。
计算机可读存储介质可以为可以保留和存储以用于指令执行设备使用的指令的有形设备。计算机可读存储介质可以是,例如但不限于,电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备、或者上述的任意合适的组合。计算机可读存储介质的更具体示例的非穷尽列表包括以下各项:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字通用盘(DVD)、记忆棒、软盘、诸如穿孔卡的机械编码设备或具有记录在其上的指令的槽中的凸出结构、以及上述各项的任何合适的组合。如本文所使用的计算机可读存储介质不应被解释为瞬态信号本身,例如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,穿过光纤电缆的光脉冲)或通过电线发射的电信号。
本文中所描述的计算机可读程序指令可以经由网络(例如,互联网、局域网、广域网和/或无线网络)从计算机可读存储介质下载到相应的计算/处理设备,或者下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输纤维、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口接收来自网络的计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或以一种或多种程序设计语言的任何组合编写的源代码或目标代码,这些程序设计语言包括面向对象的程序设计语言(诸如Smalltalk、C++等)、以及常规的过程式程序设计语言(诸如“C”程序设计语言或类似程序设计语言)。计算机可读程序指令可以完全地在用户计算机上执行、部分在用户计算机上执行、作为独立软件包执行、部分在用户计算机上部分在远程计算机上执行或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接至用户计算机,或者可连接至外部计算机(例如,使用互联网服务提供方通过互联网)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来使电子电路个性化来执行计算机可读程序指令,以便执行本发明的各方面。
下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个框以及流程图和/或框图中各框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现在流程图和/或框图的或多个框中指定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置、和/或其他设备以特定方式工作,从而,其中存储有指令的计算机可读存储介质包括包含实现流程图和/或框图中的或多个框中规定的功能/动作的方面的指令的制造品。
也可以把计算机可读程序指令加载到计算机、其他可编程数据处理装置、或其他设备上,使得在计算机、其他可编程装置或其他设备上执行一系列操作步骤,以产生计算机实现的处理,使得在计算机、其他可编程装置或其他设备上执行的指令实现流程图和/或框图中的或多个框中规定的功能/动作。
附图中的流程图和框图示出了根据本发明的不同实施例的系统、方法和计算机程序产品的可能实现的架构、功能性和操作。对此,流程图或框图中的每个框可以表示指令的模块、段或部分,其包括用于实现指定的(多个)逻辑功能的一个或多个可执行指令。在一些备选实现中,框中标注的功能可以不按照图中标注的顺序发生。例如,取决于所涉及的功能,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行。也要注意的是,框图和/或流程图中的每个框、以及框图和/或流程图中的框的组合,可以用执行规定的功能或动作或执行专用硬件与计算机指令的组合的专用的基于硬件的系统来实现。
本发明的实施例可以通过云计算基础设施被提供给终端用户。云计算通常指的是通过网络将可扩展的计算资源作为服务提供。更正式地,云计算可以被定义为提供计算资源与其底层技术架构(例如,服务器、存储装置、网络)之间的抽象化的计算能力,从而实现对可配置计算资源的共享池的方便的、按需的网络访问,所述可配置计算资源可以用最小的管理努力或服务提供方交互来快速供应和释放。因此,云计算允许用户访问“云”中的虚拟计算资源(例如,存储装置、数据、应用和甚至完整的虚拟化计算系统),而不考虑用于提供计算资源的底层物理系统(或那些系统的位置)。
通常,云计算资源基于每次使用支付提供给用户,其中,用户仅针对实际使用的计算资源(例如,用户消耗的存储空间或用户实例化的虚拟化系统的数量)被收费。用户可以在任何时间以及从跨互联网的任何地方访问驻留在云中的任何资源。在本发明的上下文中,用户可以访问在云中可用的应用(例如,编译器104)或相关数据。例如,编译器104可以在云中的计算系统上执行,且使用本文中所描述的ROP缓解技术中的一个或多个技术编译用于应用程序(例如,应用程序102)的源代码。在这种情况下,编译器104可以标识应用的源代码中的“高风险”函数,触发将这些“高风险”函数分配到利用一个或多个保护密钥保护的存储器页,并且将保护标签分配给“高风险”函数。应用102随后可以被存储以用于由计算系统稍后检索。例如,计算系统在执行应用时可以随后基于该函数是否包括相关保护标签来确定是否可以在存储器中访问给定函数。这样做允许用户从附接到连接到云的网络(例如,互联网)的任何计算系统访问该信息。
虽然前述内容针对本发明的实施例,但是可以在不偏离本发明的基本范围的情况下设计本发明的其他和进一步的实施例,并且本发明的范围由所附权利要求确定。

Claims (20)

1.一种用于缓解在应用的执行期间发生的面向返回的编程(ROP)攻击的计算机实现的方法,所述计算机实现的方法包括:
接收源代码以编译成可执行的应用;
在所述源代码的编译期间,确定所述源代码内与ROP攻击中的小工具相关联的一个或多个函数;
在所述源代码的所述编译期间,将所述一个或多个函数中的每个函数分配到针对所述可执行的应用的一个或多个受保护的存储器页;以及
在所述源代码的所述编译期间,将标签分配到所述一个或多个函数中的每个函数,其中针对每个函数的所述标签映射到所述函数被分配到的所述受保护的存储器页。
2.根据权利要求1所述的计算机实现的方法,其中确定所述源代码内与所述ROP攻击中的小工具相关联的所述一个或多个函数包括:从所述源代码的开发者接收与所述ROP攻击中的小工具相关联的所述一个或多个函数的列表。
3.根据权利要求1所述的计算机实现的方法,其中确定所述源代码内与所述ROP攻击中的小工具相关联的所述一个或多个函数包括:
基于对与从所述源代码的开发者接收的所述源代码相关联的信息的评估来确定能够被用作所述ROP攻击中的小工具的函数的一个或多个类型;以及
确定所述一个或多个函数中的每个函数是能够被用作所述ROP攻击中的小工具的函数的所确定的所述类型中的一个类型。
4.根据权利要求1所述的计算机实现的方法,还包括,在所述可执行的应用的执行期间:
确定所述可执行的应用的第一函数的函数返回调用针对所述可执行的应用的存储器中的第二函数;以及
在确定所述函数返回不包括与所述第二函数相关联的所述标签后,暂停所述可执行的应用的所述执行。
5.根据权利要求1所述的计算机实现的方法,其中将所述标签分配到所述一个或多个函数中的每个函数包括修改所述函数的开始和所述函数的结尾中的至少一项以包括对所述标签的引用。
6.根据权利要求1所述的计算机实现的方法,其中将所述一个或多个函数中的每个函数分配到所述一个或多个受保护的存储器页包括:将每个函数分配到不同的受保护的存储器页。
7.根据权利要求1所述的计算机实现的方法,其中将所述一个或多个函数中的每个函数分配到所述一个或多个受保护的存储器页包括:将所述源代码内的多个函数分配到同一受保护的存储器页。
8.一种系统,包括:
至少一个处理器;以及
存储器,所述存储器存储一个或多个应用,所述一个或多个应用在由所述处理器执行时执行用于缓解在应用的执行期间发生的面向返回的编程(ROP)攻击的操作,所述操作包括:
接收源代码以编译成可执行的应用;
在所述源代码的编译期间,确定所述源代码内与ROP攻击中的小工具相关联的一个或多个函数;
在所述源代码的所述编译期间,将所述一个或多个函数中的每个函数分配到针对所述可执行的应用的一个或多个受保护的存储器页;以及
在所述源代码的所述编译期间,将标签分配到所述一个或多个函数中的每个函数,其中针对每个函数的所述标签映射到所述函数被分配到的所述受保护的存储器页。
9.根据权利要求8所述的系统,其中确定所述源代码内与所述ROP攻击中的小工具相关联的所述一个或多个函数包括:从所述源代码的开发者接收与所述ROP攻击中的小工具相关联的所述一个或多个函数的列表。
10.根据权利要求8所述的系统,其中确定所述源代码内与所述ROP攻击中的小工具相关联的所述一个或多个函数包括:
基于对与从所述源代码的开发者接收的所述源代码相关联的信息的评估来确定能够被用作所述ROP攻击中的小工具的函数的一个或多个类型;以及
确定所述一个或多个函数中的每个函数是能够被用作所述ROP攻击中的小工具的函数的所确定的所述类型中的一个类型。
11.根据权利要求8所述的系统,所述操作还包括,在所述可执行的应用的执行期间:
确定所述可执行的应用的第一函数的函数返回调用针对所述可执行的应用的存储器中的第二函数;以及
在确定所述函数返回不包括与所述第二函数相关联的所述标签后,暂停所述可执行的应用的所述执行。
12.根据权利要求8所述的系统,其中将所述标签分配到所述一个或多个函数中的每个函数包括修改所述函数的开始和所述函数的结尾中的至少一项以包括对所述标签的引用。
13.根据权利要求8所述的系统,其中将所述一个或多个函数中的每个函数分配到所述一个或多个受保护的存储器页包括:将每个函数分配到不同的受保护的存储器页。
14.根据权利要求8所述的系统,其中将所述一个或多个函数中的每个函数分配到所述一个或多个受保护的存储器页包括:将所述源代码内的多个函数分配到同一受保护的存储器页。
15.一种用于缓解面向返回的编程(ROP)攻击的计算机程序产品,所述计算机程序产品包括具有共同地存储在其上的计算机可读程序代码的一个或多个计算机可读存储介质,所述计算机可读程序代码由一个或多个计算机处理器可执行以执行包括以下的操作:
接收源代码以编译成可执行的应用;
在所述源代码的编译期间,确定所述源代码内与ROP攻击中的小工具相关联的一个或多个函数;
在所述源代码的所述编译期间,将所述一个或多个函数中的每个函数分配到针对所述可执行的应用的一个或多个受保护的存储器页;以及
在所述源代码的所述编译期间,将标签分配到所述一个或多个函数中的每个函数,其中针对每个函数的所述标签映射到所述函数被分配到的所述受保护的存储器页。
16.根据权利要求15所述的计算机程序产品,其中确定所述源代码内的与所述ROP攻击中的小工具相关联的所述一个或多个函数包括:从所述源代码的开发者接收与所述ROP攻击中的小工具相关联的所述一个或多个函数的列表。
17.根据权利要求15所述的计算机程序产品,其中确定所述源代码内与所述ROP攻击中的小工具相关联的所述一个或多个函数包括:
基于对与从所述源代码的开发者接收的所述源代码相关联的信息的评估来确定能够被用作所述ROP攻击中的小工具的函数的一个或多个类型;以及
确定所述一个或多个函数中的每个函数是能够被用作所述ROP攻击中的小工具的函数的所确定的所述类型中的一个类型。
18.根据权利要求15所述的计算机程序产品,所述操作还包括,在所述可执行的应用的执行期间:
确定所述可执行的应用的第一函数的函数返回调用针对所述可执行的应用的存储器中的第二函数;以及
在确定所述函数返回不包括与所述第二函数相关联的所述标签后,暂停所述可执行的应用的所述执行。
19.根据权利要求15所述的计算机程序产品,其中将所述标签分配到所述一个或多个函数中的每个函数包括修改所述函数的开始和所述函数的结尾中的至少一项以包括对所述标签的引用。
20.根据权利要求15所述的计算机程序产品,其中将所述一个或多个函数中的每个函数分配到所述一个或多个受保护的存储器页包括:将每个函数分配到不同的受保护的存储器页。
CN202080077423.7A 2019-11-08 2020-10-16 使用页帧标签机制来增强存储器安全编程 Active CN114641770B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/678,904 US11341241B2 (en) 2019-11-08 2019-11-08 Enhancing memory safe programming using a page frame tag mechanism
US16/678,904 2019-11-08
PCT/IB2020/059767 WO2021090096A1 (en) 2019-11-08 2020-10-16 Enhancing memory safe programming using page frame tag mechanism

Publications (2)

Publication Number Publication Date
CN114641770A true CN114641770A (zh) 2022-06-17
CN114641770B CN114641770B (zh) 2024-06-25

Family

ID=75846855

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080077423.7A Active CN114641770B (zh) 2019-11-08 2020-10-16 使用页帧标签机制来增强存储器安全编程

Country Status (6)

Country Link
US (1) US11341241B2 (zh)
JP (1) JP7495193B2 (zh)
CN (1) CN114641770B (zh)
DE (1) DE112020004190T5 (zh)
GB (1) GB2603444B (zh)
WO (1) WO2021090096A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11610000B2 (en) * 2020-10-07 2023-03-21 Bank Of America Corporation System and method for identifying unpermitted data in source code
US20230208870A1 (en) * 2021-12-28 2023-06-29 SecureX.AI, Inc. Systems and methods for predictive analysis of potential attack patterns based on contextual security information
US20230208871A1 (en) * 2021-12-28 2023-06-29 SecureX.AI, Inc. Systems and methods for vulnerability assessment for cloud assets using imaging methods
CN117093377A (zh) * 2022-05-12 2023-11-21 北京图森智途科技有限公司 用于在多个模块之间传输数据的系统和方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006185233A (ja) * 2004-12-28 2006-07-13 Hitachi Ltd セキュリティ向上のためのプログラム変換方法及びこれを用いたコンパイラプログラム
US20140283040A1 (en) * 2013-03-14 2014-09-18 Daniel Shawcross Wilkerson Hard Object: Lightweight Hardware Enforcement of Encapsulation, Unforgeability, and Transactionality
US20160092675A1 (en) * 2014-09-30 2016-03-31 Apple Inc. Fine-grained address space layout randomization
US20170213039A1 (en) * 2016-01-22 2017-07-27 The University Of North Carolina At Chapel Hill Methods, systems, and computer readable media for preventing code reuse attacks

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5619671A (en) 1993-04-19 1997-04-08 International Business Machines Corporation Method and apparatus for providing token controlled access to protected pages of memory
US7272832B2 (en) 2001-10-25 2007-09-18 Hewlett-Packard Development Company, L.P. Method of protecting user process data in a secure platform inaccessible to the operating system and other tasks on top of the secure platform
US20130166922A1 (en) 2011-12-23 2013-06-27 Ati Technologies Ulc Method and system for frame buffer protection
US8776223B2 (en) 2012-01-16 2014-07-08 Qualcomm Incorporated Dynamic execution prevention to inhibit return-oriented programming
CN105022956B (zh) * 2015-08-14 2018-11-09 中国科学院计算技术研究所 一种抵御代码重用攻击的方法
US9767292B2 (en) 2015-10-11 2017-09-19 Unexploitable Holdings Llc Systems and methods to identify security exploits by generating a type based self-assembling indirect control flow graph
CN105224864B (zh) * 2015-11-04 2018-05-04 中国科学院计算技术研究所 一种抵御代码重用攻击的工作进程随机化方法及系统
CN107798241B (zh) * 2016-09-07 2020-01-31 龙芯中科技术有限公司 攻击检测装置、系统及方法
US10884952B2 (en) 2016-09-30 2021-01-05 Intel Corporation Enforcing memory operand types using protection keys
US10572666B2 (en) 2017-04-20 2020-02-25 Microsoft Technology Licensing, Llc Return-oriented programming mitigation
US10885183B2 (en) 2017-09-28 2021-01-05 International Business Machines Corporation Return oriented programming attack protection
GB2572158B (en) 2018-03-20 2020-11-25 Advanced Risc Mach Ltd Random tag setting instruction

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006185233A (ja) * 2004-12-28 2006-07-13 Hitachi Ltd セキュリティ向上のためのプログラム変換方法及びこれを用いたコンパイラプログラム
US20140283040A1 (en) * 2013-03-14 2014-09-18 Daniel Shawcross Wilkerson Hard Object: Lightweight Hardware Enforcement of Encapsulation, Unforgeability, and Transactionality
US20160092675A1 (en) * 2014-09-30 2016-03-31 Apple Inc. Fine-grained address space layout randomization
US20170213039A1 (en) * 2016-01-22 2017-07-27 The University Of North Carolina At Chapel Hill Methods, systems, and computer readable media for preventing code reuse attacks

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
PWL999: "CFI/CFG 安全防护原理详解", Retrieved from the Internet <URL:https://www.cnblogs.com/pwl999/p/15534982.html> *
VASILIS PAPPAS等: "Smashing the Gadgets: Hindering Return-Oriented Programming Using In-place Code Randomization", 《2012 IEEE SYMPOSIUM ON SECURITY AND PRIVACY》, 9 July 2012 (2012-07-09), pages 601 - 615 *

Also Published As

Publication number Publication date
GB2603444B (en) 2023-01-25
WO2021090096A1 (en) 2021-05-14
US20210141899A1 (en) 2021-05-13
GB202207658D0 (en) 2022-07-06
JP2023501091A (ja) 2023-01-18
US11341241B2 (en) 2022-05-24
GB2603444A (en) 2022-08-03
DE112020004190T5 (de) 2022-05-19
CN114641770B (zh) 2024-06-25
JP7495193B2 (ja) 2024-06-04

Similar Documents

Publication Publication Date Title
CN114641770B (zh) 使用页帧标签机制来增强存储器安全编程
US10972276B2 (en) Virtual machine structure
US10509734B2 (en) Cryptographic pointer address encoding
US8875295B2 (en) Memory introspection engine for integrity protection of virtual machines
CN108475223B (zh) 检测计算环境的堆栈的损坏的方法、系统和计算机程序产品
CN110119302B (zh) 虚拟机监视器以及虚拟可信执行环境构建方法
US10311229B1 (en) Mitigating timing side-channel attacks by obscuring alternatives in code
EP3973393B1 (en) Executing system calls in isolated address space in operating system kernel
US10868665B1 (en) Mitigating timing side-channel attacks by obscuring accesses to sensitive data
US11966331B2 (en) Dedicated bound information register file for protecting against out-of-bounds memory references
US11983532B2 (en) Optimize bound information accesses in buffer protection
US20210150028A1 (en) Method of defending against memory sharing-based side-channel attacks by embedding random value in binaries
US20240231825A1 (en) Method for control flow isolation with protection keys and indirect branch tracking
Sensaoui et al. An in-depth study of MPU-based isolation techniques
US10599465B2 (en) Off-the-shelf software component reuse in a cloud computing environment
JP2023065323A (ja) コンピュータに実装された方法、システム及びコンピュータプログラム
CN115495343A (zh) 一种安全维护方法、装置、存储介质及电子设备
US11726922B2 (en) Memory protection in hypervisor environments
US11520866B2 (en) Controlling processor instruction execution
WO2023216776A1 (en) Providing system services
Giannaris Securing Operating Systems using Hardware-Enforced Compartmentalization
EP4396702A1 (en) Exploit prevention based on generation of random chaotic execution context
WO2023156571A1 (en) Protecting software

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