CN109726549A - 用于采用处理器沙箱支持的不可信代码执行的技术 - Google Patents

用于采用处理器沙箱支持的不可信代码执行的技术 Download PDF

Info

Publication number
CN109726549A
CN109726549A CN201811131137.5A CN201811131137A CN109726549A CN 109726549 A CN109726549 A CN 109726549A CN 201811131137 A CN201811131137 A CN 201811131137A CN 109726549 A CN109726549 A CN 109726549A
Authority
CN
China
Prior art keywords
sandbox
processor
domain
calculating equipment
response
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201811131137.5A
Other languages
English (en)
Inventor
张明威
孙鸣秋
R.L.萨希塔
张春晖
李晓宁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN109726549A publication Critical patent/CN109726549A/zh
Pending legal-status Critical Current

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
    • G06F21/53Monitoring 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 executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • G06F21/126Interacting with the operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/441Register allocation; Assignment of physical memory space to logical memory space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2143Clearing memory, e.g. to prevent the data from being stolen

Abstract

本申请涉及用于采用处理器沙箱支持的不可信代码执行的技术。用于不可信代码执行的技术包括具有带沙箱支持的处理器的计算设备。计算设备在非特权本地处理器模式下执行包括在本地域中的代码。计算设备可在本地域中的代码执行期间调用沙箱跳转处理器指令以进入沙箱域。计算设备响应于调用沙箱跳转指令而在非特权沙箱处理器模式下执行沙箱域中的代码。在沙箱处理器模式下执行的同时,处理器拒绝对沙箱域外部的存储器的访问,并可拒绝一个或多个禁止的指令的执行。从沙箱域中,计算设备可执行沙箱退出指令以退出沙箱域并恢复本地域中的执行。计算设备可执行处理器指令以配置沙箱域。描述并要求保护其它实施例。

Description

用于采用处理器沙箱支持的不可信代码执行的技术
背景技术
典型的计算设备可执行许多小的、不可信代码组件。例如,计算设备可执行从因特网下载的插件、小应用程序、应用程序或其它第三方代码组件。在当前的计算设备中,不可信代码可通过进程边界或环边界而与可信代码分离。Intel®页面保护密钥可保护进程地址空间的少量(例如16个)域免于意外读取或写入存储器访问,例如由编程错误引起。页面保护密钥可能无法防止操纵保护密钥本身的恶意攻击者。典型的计算设备还可实现基于软件的隔离以在用户进程内执行不可信代码。例如,Google® Native Client(NaCl)实现自定义工具链,以确保除了通过特定的蹦床(trampoline)例程之外,在基于软件的沙箱内执行的代码不可以跳出沙箱。
附图说明
本文所述的概念在附图中通过示例的方式而不是通过限制的方式来图示。为了说明的简单和清楚,图中图示的元件不一定按比例绘制。在认为合适的情况下,已经在附图中重复参考标记以指示对应的或类似的元件。
图1是用于不可信代码执行的计算设备的至少一个实施例的简化框图;
图2是可由图1的计算设备建立的环境的至少一个实施例的简化框图;
图3A和图3B是可由图1至图2的计算设备执行的用于不可信代码执行的方法的至少一个实施例的简化流程图;以及
图4是可由图1至图2的计算设备执行的用于异常处理的方法的至少一个实施例的简化流程图。
具体实施方式
尽管本公开的概念易于进行各种修改和替代形式,但是已经在图中通过示例的方式示出并且将在本文中详细描述其具体实施例。然而,应当理解的是:并不意图将本公开的概念限于公开的特定形式,而是相反,意图是覆盖与本公开和所附权利要求一致的所有修改、等同物和替代方案。
说明书中对“一个实施例”、“实施例”、“说明性实施例”等的引用指示所述的实施例可包括特定特征、结构或特性,但是每个实施例可能一定或可能不一定包括该特定特征、结构或特性。而且,这样的短语不一定指相同的实施例。此外,当结合实施例描述特定特征、结构或特性时,要主张的是:结合其它实施例(无论是否被明确描述)实现这样的特征、结构或特性在本领域技术人员的知识范围内。另外,应当理解:以“A、B和C中的至少一个”的形式包括在列表中的项可以意味着(A);(B);(C);(A和B);(A和C);(B和C);或者(A、B和C)。类似地,以“A、B或C中的至少一个”的形式列出的项可以意味着(A);(B);(C);(A和B);(A和C);(B和C);或者(A,B和C)。
在一些情况下,公开的实施例可以按硬件、固件、软件或其任何组合来实现。公开的实施例还可被实现为由一个或多个暂时性或非暂时性机器可读(例如,计算机可读)存储介质承载或在其上存储的指令,该指令可由一个或多个处理器读取并且执行。机器可读存储介质可被体现为用于以由机器可读的形式(例如,易失性或非易失性存储器、媒体盘或其它媒体设备)存储或发送信息的任何存储设备、机制或其它物理结构。
在图中,可以按具体布置和/或排序示出一些结构或方法特征。然而,应当理解:可能不需要这样的具体布置和/或排序。而是,在一些实施例中,可以按不同于说明性图中所示的方式和/或次序来布置这样的特征。另外,在特定图中包括结构或方法特征不意味着暗示在所有实施例中都需要这样的特征,并且在一些实施例中,可不包括这样的特征或者这样的特征可与其它特征组合。
现在参考图1,在说明性实施例中,示出用于不可信代码执行的计算设备100。如所示的,计算设备100包括处理器120,该处理器120包括沙箱支持122。在使用中,如以下更详细地描述的,计算设备100在本地处理器模式下执行来自本地域的非特权代码(例如,用户级代码)。计算设备100可将存储器页面添加到一个或多个沙箱域,并且然后使用沙箱支持122跳转到沙箱域内的进入点。计算设备100在沙箱处理器模式下执行沙箱域内的代码,其中不允许在沙箱域外部的存储器访问以及某些处理器指令。计算设备100可使用沙箱支持122跳回到本地域。本地域和沙箱域可被包括在相同的虚拟地址空间中。因此,计算设备100可使能多个不可信沙箱域的用户级配置和管理。计算设备100可为相同地址空间中的不同域提供存储器保护,而不需要可能昂贵的上下文切换或许可级别改变(例如,环级别改变、超级调用或其它安全性边界交叉)。因此,计算设备100可为某些应用程序改善性能,特别是为执行频繁跨边界交互的工作负载。另外,计算设备100可执行沙箱隔离而无需大量的专用工具链支持(例如,无需对编译器、链接器或其它工具链组件进行大量改变),并且通过移除软件开销,可提供比仅仅软件隔离技术改善的性能。
计算设备100可被体现为能够执行本文所述的功能的任何类型的计算或计算机设备,包括而不限于计算机、多处理器系统、服务器、机架式服务器、刀片服务器、膝上型电脑、笔记本电脑、平板电脑、可穿戴计算设备、网络器具、web器具、嵌入式系统、分布式计算系统、基于处理器的系统和/或消费电子设备。如图1中所示,计算设备100说明性地包括处理器120、输入/输出子系统124、存储器126、数据存储设备128和通信子系统130。当然,在其它实施例中,计算设备100可包括其它或附加组件,诸如在服务器中常见的组件(例如,各种输入/输出设备)。另外,在一些实施例中,说明性组件中的一个或多个可并入另一个组件中,或者以其它方式形成另一组件的一部分。例如,在一些实施例中,存储器126或其部分可并入在处理器120中。
处理器120可被体现为能够执行本文所述的功能的任何类型的处理器。处理器120可被体现为单核或多核处理器、数字信号处理器、微控制器或者其它处理器或处理/控制电路。正如所示的,处理器120包括沙箱支持122。沙箱支持122可被体现为任何硬件、固件、微代码、处理器120的如下进一步所述地提供沙箱保护的其它资源。例如,沙箱支持122可包括指令集架构(ISA)扩展、模型特定寄存器和/或其它处理器特征,以支持沙箱域的配置、进入和退出沙箱域并实施沙箱保护。
类似地,存储器126可被体现为能够执行本文所述的功能的任何类型的易失性或非易失性存储器或数据存储。在操作中,存储器126可存储在计算设备100的操作期间使用的各种数据和软件,诸如操作系统、应用程序、程序、库和驱动程序。存储器126经由I/O子系统124通信地耦合到处理器120,I/O子系统124可被体现为便于与处理器120、存储器126和计算设备100的其它组件的输入/输出操作的线路和/或组件。例如,I/O子系统124可被体现为或以其它方式包括存储器控制器集线器、输入/输出控制集线器、固件设备,通信链路(即,点对点链路、总线链路、电线、电缆、光导、印刷电路板迹线等)和/或其它组件和子系统,以便于输入/输出操作。在一些实施例中,I/O子系统124可形成片上系统(SoC)的一部分,并且与处理器120、存储器126以及计算设备100的其它组件一起被并入在单个集成电路芯片上。
数据存储设备128可被体现为被配置用于数据的短期或长期存储的任何类型的一个或多个设备,诸如例如存储器设备和电路、存储卡、硬盘驱动器、固态驱动器或其它数据存储设备。计算设备100的通信子系统130可被体现为能够通过网络在计算设备100与其它远程设备之间实现通信的任何通信电路、设备或其集合。通信子系统130可被配置成使用任何一个或多个通信技术(例如,有线或无线通信)和相关联的协议(例如,以太网、Bluetooth®、Wi-Fi®、WiMAX等)来实现这样的通信。
如所示的,计算设备100还可包括一个或多个外围设备132。外围设备132可包括任何数量的附加输入/输出设备、接口设备和/或其它外围设备。例如,在一些实施例中,外围设备132可包括显示器、触摸屏、图形线路、键盘、鼠标、扬声器系统、麦克风、网络接口和/或其它输入/输出设备、接口设备和/或外围设备。
现在参考图2,在说明性实施例中,计算设备100在操作期间建立环境200。说明性环境200包括可信域管理器206、系统管理器212以及处理器120的沙箱支持122。如所示的,沙箱支持122进一步包括沙箱强制执行引擎216、配置引擎218、沙箱跳转引擎220和沙箱退出引擎222。环境200的各种组件可被体现为硬件、固件、处理器微代码、软件或其组合。这样,在一些实施例中,环境200的组件中的一个或多个可被体现为电子设备的线路或集合(例如,可信域管理器线路206、系统管理器线路212、沙箱强制执行线路216、配置线路218、沙箱跳转线路220和/或沙箱退出线路222)。应当理解:在这样的实施例中,可信域管理器线路206、系统管理器线路212、沙箱强制执行线路216、配置线路218、沙箱跳转线路220和/或沙箱退出线路222中的一个或多个可形成计算设备100的处理器120、I/O子系统124和/或其它组件中的一个或多个的一部分。另外,在一些实施例中,说明性组件中的一个或多个可形成另一个组件的一部分和/或说明性组件中的一个或多个可彼此独立。
可信域管理器206可在非特权操作模式(例如,用户模式或环级别3)下执行。可信域管理器206被配置成在非特权本地处理器模式下执行包括在本地域208中的代码。可信域管理器206被进一步配置成:当在本地处理器模式下时调用sandbox_allocate指令以将一个或多个存储器页面添加到对应的沙箱域202,并且可被配置成:当在本地处理器模式下时调用sandbox_free指令以将一个或多个存储器页面从对应的沙箱域202移除。可信域管理器206可被配置成:为沙箱域202配置沙箱状态,并且当在本地处理器模式下时调用sandbox_set_state指令以为沙箱域202设置沙箱状态。可信域管理器206被进一步配置成:当在本地处理器模式下时调用sandbox_jump指令以进入指定的沙箱域202。
可信域管理器206被进一步配置成:响应于调用sandbox_jump指令,在非特权沙箱处理器模式下执行包括在沙箱域202中的代码。沙箱域202被包括在与本地域208相同的虚拟地址空间中,例如在相同的过程中。包括在沙箱域202中的存储器页面未被包括在本地域208中。说明性环境200包括两个沙箱域202a、202b;然而,在其它实施例中,环境可包括任何数量的沙箱域202。包括在沙箱域202中的代码可在沙箱处理器模式下执行的同时调用sandbox_exit指令以退出沙箱域202。
沙箱强制执行引擎216被配置成:通过响应于沙箱违规而生成异常来强制执行沙箱处理器模式。沙箱强制执行引擎216可被配置成:当在沙箱处理器模式下执行的同时允许对包括在当前沙箱域202中的存储器的访问,并且拒绝对未被包括在当前沙箱域202中(例如,在本地域208和/或其它沙箱域202中)的存储器的访问。沙箱强制执行引擎216可拒绝对未被包括在当前沙箱域202中的存储器的读取访问、写入访问和执行访问,例如通过生成页面故障异常。沙箱强制执行引擎216可被进一步配置成:当在沙箱处理器模式下执行的同时拒绝一个或多个被禁止的指令的执行,例如通过生成一般保护故障异常。禁止的指令例如可包括所有与系统调用相关的指令。
配置引擎218被配置成:响应于调用sandbox_set_state指令而在存储器126中配置状态控制块224。状态控制块224可被体现为存储器126中的每线程数据结构。状态控制块224由处理器120管理。状态控制块224可位于正常域208中或内核空间中,或者在一些实施例中对于由计算设备100执行的软件可能不可访问。状态控制块224可不由任何沙箱域202直接修改。状态控制块224可被配置成包括:指向沙箱域202内的堆栈指针、沙箱域202内的进入点或者其它沙箱状态。配置引擎218还可被配置成:响应于调用sandbox_allocate指令或sandbox_free指令而分别添加存储器页面或从沙箱域202移除存储器页面。
沙箱跳转引擎220被配置成:在状态控制块224中设置沙箱位,在状态控制块224中存储返回地址,从状态控制块224加载执行状态,并且响应于调用sandbox_jump指令而跳转到沙箱域202内的进入点。存储在状态控制块224中的返回地址指向本地域208内的地址。沙箱退出引擎222被配置成:清除状态控制块224中的沙箱位,并且响应于调用sandbox_exit指令而跳转到存储在状态控制块224中的返回地址。
系统管理器212可被体现为或以其它方式包括计算设备100的操作系统、管理程序、虚拟机监视器和/或其它特权管理组件。因此,系统管理器212可在特权操作模式(例如,内核模式或环级别0)下执行。系统管理器212被配置成:响应于由处理器120生成的异常,在特权处理器模式下执行内核异常处理程序214。系统管理器212可被配置成:响应于内核异常处理程序214的执行,在非特权本地处理器模式下调用非特权异常处理程序210。可信域管理器206可被进一步配置成:响应于执行非特权异常处理程序210而读取处理器120的沙箱状态寄存器,并且确定异常是否起源于非特权沙箱处理器模式。如果异常起源于沙箱处理器模式,可信域管理器206可被进一步配置成:调用sandbox_jump处理器指令以进入非特权沙箱处理器模式以执行沙箱域异常处理程序204。可信域管理器206可在进入非特权沙箱处理器模式之前执行一次或多次检查。例如,如果异常由试图退出沙箱域202的不可信代码生成,可信域管理器206可不将控制传递回沙箱域异常处理程序204。
现在参考图3A和3B,在使用中,计算设备100可执行方法300以用于不可信代码执行。应当理解:在一些实施例中,方法300的操作可由如图2中所示的计算设备100的环境200的一个或多个组件执行。方法300开始于块302,其中计算设备100在用户级本地处理器模式下执行来自本地域208的代码。例如,处理器120可在诸如环级别3之类的非特权模式下执行。处理器120执行正常域208中的代码而无需使能沙箱,例如清除状态控制块224的沙箱位。
在块304中,计算设备100调用sandbox_allocate指令以将一个或多个存储器页面添加到沙箱域202。例如,在正常域208中执行的应用程序可将与下载的小程序、插件或其它不可信代码相关联的存储器页面添加到沙箱域202。计算设备100可调用具有一个或多个参数的指令,该参数包括添加到沙箱域202的存储器页面的线性地址或其它标识符以及沙箱域202的域标识符。处理器120可使用任何技术来跟踪或以其它方式将存储器页面添加到沙箱域202。计算设备100可多次调用sandbox_allocate指令以将附加存储器页面添加到沙箱域202。如果存储器页面已经被分配给不同的沙箱域202,处理器120可返回错误。
在块306中,计算设备100为沙箱域202配置状态。计算设备100例如可配置当进入沙箱域202时将被加载到处理器120的所有通用寄存器中的初始值。计算设备100可配置存储器126中的状态,例如在正常域208中的存储器内数据结构中。在块308中,计算设备100设置堆栈指针值(例如,RSP、ESP或其它堆栈指针寄存器)。堆栈指针值指向沙箱域202内的地址,该地址将在沙箱域202中执行期间用于堆栈空间。在块310中,计算设备100设置进入点(例如,RIP、EIP或其它指令指针寄存器)。进入点可被体现为沙箱域202内的地址。
在块312中,计算设备100调用sandbox_set_state处理器指令以为沙箱域202设置状态。计算设备100可调用具有一个或多个参数的指令,该参数包括到包括状态的数据结构的指针以及沙箱域202的域标识符。在块314中,处理器120基于提供的状态数据来配置状态控制块224。处理器120例如可将一个或多个值复制到状态控制块224,包括堆栈指针值和进入点值。
在块316中,计算设备100调用sandbox_jump指令以在进入点地址处切换到沙箱域202。可在非特权(例如,用户模式)本地处理器模式下执行sandbox_jump指令。计算设备100可调用具有一个或多个参数的指令,该参数包括沙箱域202中的存储页面的线性地址或其它标识符。例如,参数可用于指示何时首次进入沙箱域202,何时进入沙箱域202以返回到沙箱中的保存状态,和/或何时执行沙箱域202中的异常处理程序。在那些示例中,参数可标识状态控制块224,并且状态控制块224可包括普通进入点、异常处理进入点和异常位。当异常位被清除时,处理器120可跳转到普通进入点,并且当异常位被设置时,处理器120可跳转到异常处理进入点。
在块318中,响应于调用sandbox_jump指令,处理器120在状态控制块224中设置沙箱位。设置沙箱位指示处理器120正在沙箱模式下执行并且因此强制执行沙箱保护。在块320中,处理器120在状态控制块224中存储返回地址。返回地址可以是在其处可恢复本地(即,非沙箱)执行的本地域208内的任何地址。例如,返回地址可以是sandbox_jump指令之后的下一条指令的地址。在块322中,处理器120从状态控制块224加载状态。例如,处理器120可从状态控制块224加载用于所有通用寄存器的值,包括堆栈指针和指令指针。在块324中,处理器120跳转到沙箱域202内的进入点地址。
在块326中,如图3B中所示,计算设备100在用户级沙箱处理器模式下执行来自沙箱域202的代码。例如,处理器120可在诸如环级别3之类的非特权模式下执行。计算设备100可在与本地域208相同的虚拟地址空间中(例如,在相同的处理空间中)执行沙箱域202,并且因此可继续执行而无需上下文切换或环级别转换。在沙箱模式下执行的同时,处理器120强制执行沙箱保护。
在块328中,处理器120允许对当前沙箱域202内的存储器页面的代码和/或数据访问。例如,处理器120可允许对当前沙箱域202内的存储器地址的读取、写入和执行访问。当然,处理器120可继续将页面表(或扩展的页面表)许可应用于存储器访问。在块330中,处理器120可拒绝对当前沙箱域外部的存储器页面的代码和/或数据访问。例如,如图2中所图示,当在沙箱域202a中执行时,处理器120可拒绝对本地域208内或任何其它沙箱域202(例如,沙箱域202b)内的存储器位置的读取、写入和执行访问。处理器120可通过生成诸如页面故障异常之类的异常来拒绝访问。以下结合图4描述可由计算设备100执行的用于异常处理的一种方法。
在块332中,处理器120可拒绝一个或多个禁止的指令的执行。禁止的指令可包括生成软件中断或以其它方式试图退出用户级代码的指令,诸如SYSCALL、INT、VMCALL或类似指令。禁止的指令还可包括清洗高速缓存的指令,诸如RDTSC。禁止的指令还可包括管理沙箱域202的指令,诸如sandbox_allocate、sandbox_free、sandbox_set_state或sandbox_jump。处理器120可通过生成诸如一般保护故障异常之类的异常来拒绝禁止的指令的执行。以下结合图4描述可由计算设备100执行的用于异常处理的一种方法。
计算设备100在用户级沙箱处理器模式下继续执行来自沙箱域202的用户模式代码,直到在块334中,计算设备100调用sandbox_exit指令以在先前存储在状态控制块224中的返回地址处切换到本地域208。调用sandbox_exit指令可以是对于沙箱代码请求从沙箱域202退出的独有技术(例如,而不生成异常或其它错误)。例如,可调用sandbox_exit指令以从正常域请求特权服务(例如,请求文件打开、读取、写入或关闭,分配或解除分配存储器,或执行其它特权操作)。本地域208代码可应用一个或多个安全性策略或以其它方式确定是否服务来自沙箱204的请求。注意:可在内核模式下处理定时器中断(例如,时间片到期)和对内核的其它中断,而不从沙箱域生成退出。在一些实施例中,内核可能不知道沙箱域204的存在。可调用sandbox_exit指令而无需任何附加参数。在块336中,响应于执行sandbox_exit指令,处理器120清除状态控制块224中的沙箱位。清除沙箱位指示处理器120正在本地模式下执行,并且因此不强制执行沙箱保护。在块338中,处理器120跳转到存储在状态控制块224中的返回地址。
在块340中,在一些实施例中,计算设备100可调用sandbox_free指令以从沙箱域202移除一个或多个存储器页面。例如,在不可信代码的执行完成之后,在正常域208中执行的应用程序可移除与从沙箱域202下载的小程序、插件或其它不可信代码相关联的存储器页面。计算设备100可调用具有一个或多个参数的指令,该参数包括从沙箱域202移除的存储器页面的线性地址或其它标识符以及沙箱域202的域标识符。处理器120可使用任何技术来从沙箱域202移除存储器页面。计算设备100可多次调用sandbox_free指令以从沙箱域202移除附加存储器页面。在移除任何存储器页面之后,方法300循环回到块302,如图3A中所示,以继续执行不可信代码。
现在参考图4,在使用中,计算设备100可执行方法400以用于异常处理。应当理解:在一些实施例中,方法400的操作可由如图2中所示的计算设备100的环境200的一个或多个组件执行。方法400开始于块402,其中计算设备100生成异常、故障、中断、陷阱或其它异常情况。可在沙箱模式下执行的同时生成异常,例如响应于沙箱违规,或者在其它情况下。
在块404中,处理器120调用内核异常处理程序214。处理器120可执行典型的中断处理过程,例如通过将中断帧推送到内核堆栈上并且然后在诸如环级别0之类的特权处理器模式下调用异常处理程序214。因为内核异常处理程序214在特权模式下执行,所以处理器120不强制执行沙箱保护。在块406中,内核异常处理程序214在用户模式下调用沙箱处理程序。例如,内核异常处理程序214可调用本地域异常处理程序210。本地域异常处理程序210可由本地域208用内核异常处理程序214注册,并且因此可以是可信的。内核异常处理程序214可清除状态控制块224中的沙箱位,允许用户模式代码在正常模式(而不是沙箱模式)下执行。
在块408中,本地域异常处理程序212读取处理器120的沙箱状态模型特定寄存器(MSR)以确定异常是否源于沙箱域202。当生成异常时,处理器120设置沙箱状态MSR指示异常是否源于沙箱域202。在块410中,内核异常处理器214确定异常是否源于沙箱域202。如果不是,方法400向前分支到块422,如下所述。如果异常确实源于沙箱域202,方法400前进到块412。
在块412中,用户模式本地代码沙箱处理程序210处理沙箱异常。例如,处理程序210可释放或以其它方式卸载生成异常的沙箱域202或以其它方式处理沙箱异常。在一些实施例中,用户模式本地代码沙箱处理程序210可执行一个或多个检查或其它安全性策略确定以确定是否允许由沙箱域202处理异常。例如,可允许沙箱域202处理异常,除非异常是由试图退出沙箱的沙箱域202中的代码引起的。
在块414中,本地域异常处理程序212读取SCB的沙箱处理程序字段以确定是否已指定沙箱异常处理程序。例如,沙箱处理程序可由本地域配置以指向沙箱域204内的沙箱异常处理程序204。在块416中,本地域处理程序212确定是否调用沙箱异常处理程序。例如,如果未指定沙箱异常处理程序,沙箱处理程序字段可能为null或以其它方式无效。替代地,本地域处理程序210可基于一个或多个安全性策略或其它因素来确定是否调用沙箱异常处理程序。如果将不调用沙箱异常处理程序,方法400分支到块422,如下所述。如果将调用沙箱异常处理程序,方法400前进到块418。
在块418中,用户模式本地异常处理程序210可调用沙箱异常处理程序204。可在沙箱模式下调用沙箱异常处理程序204,例如通过调用sandbox_jump指令。沙箱异常处理程序204可执行任何适当的异常处理例程。在本地代码沙箱处理程序210和/或沙箱异常处理程序204处理异常之后,方法400分支到块420,其中计算设备100从处理异常返回。在返回之后,方法400完成。
返回参考块408、412,如果异常不源自沙箱或沙箱异常处理程序未被调用,方法400可分支到块422。在块422中,计算设备100执行默认异常处理例程。例如,计算设备100可终止生成异常的用户级进程或者执行其它管理操作。在执行默认异常处理例程之后,方法400分支到块420,其中计算设备100从处理异常返回。在返回之后,方法400完成。
虽然图4图示本地域异常处理程序210读取沙箱状态MSR并确定是否调用沙箱异常处理程序,但是应当理解:在一些实施例中,那些操作可由计算设备100的一个或多个其它组件执行。例如,在一些实施例中,那些操作可由内核异常处理程序214执行。
应当理解:在一些实施例中,方法300和/或400可被体现为存储在计算机可读介质上的各种指令,该指令可由计算设备100的处理器120和/或其它组件执行,以使计算设备100执行相应的方法300和/或400。计算机可读介质可被体现为能够由计算设备100读取的任何类型的介质,包括但不限于存储器126、数据存储设备128、固件设备、计算设备100的其它存储器或数据存储设备、可由计算设备100的外围设备132读取的便携式介质和/或其它介质。
示例
以下提供本文公开的技术的说明性示例。技术的实施例可包括下述示例中的任何一个或多个以及任何组合。
示例1包括一种用于不可信代码执行的计算设备,该计算设备包括可信域管理器以:在非特权本地处理器模式下执行包括在第一虚拟地址空间的本地域中的代码;在本地处理器模式下的代码执行期间,调用第一处理器指令以将存储器页面添加到第一虚拟地址空间的第一沙箱域,其中存储器页面未被包括在本地域中;在本地处理器模式下的代码执行期间,调用第二处理器指令以响应于第一处理器指令的调用而进入第一沙箱域;以及响应于第二处理器指令的调用,在非特权沙箱处理器模式下执行包括在第一沙箱域中的代码。
示例2包括示例1的主题,并且其中在非特权沙箱处理器模式下执行包括在第一沙箱域中的代码包括:由计算设备的处理器允许对包括在第一沙箱域中的存储器的访问;以及由计算设备的处理器拒绝对未被包括在第一沙箱域中的存储器的访问。
示例3包括示例1和2中任一项的主题,并且其中拒绝对存储器的访问包括:拒绝对未被包括在第一沙箱域中的存储器的读取访问、写入访问和执行访问。
示例4包括示例1-3中任一项的主题,并且其中拒绝对未被包括在第一沙箱域中的存储器的访问包括:由处理器生成页面故障异常。
示例5包括示例1-4中任一项的主题,并且其中在非特权沙箱处理器模式下执行包括在第一沙箱域中的代码包括:由计算设备的处理器拒绝禁止的指令的执行。
示例6包括示例1-5中任一项的主题,并且其中拒绝禁止的指令的执行包括:由处理器生成一般保护故障异常。
示例7包括示例1-6中任一项的主题,并且其中可信域管理器进一步:在本地处理器模式下的用户模式代码的执行期间,为第一沙箱域配置沙箱状态;以及响应于沙箱状态的配置,调用第三处理器指令以为第一沙箱域设置沙箱状态;其中调用第二处理器指令包括:响应于第三处理器指令的调用而调用第二处理器指令。
示例8包括示例1-7中任一项的主题,并且其中沙箱状态指示指向第一沙箱域内的堆栈指针和第一沙箱域内的进入点。
示例9包括示例1-8中任一项的主题,并且进一步包括处理器,其中处理器包括配置引擎,以响应于第三处理器指令的调用而将计算设备的存储器中的状态控制块配置有沙箱状态。
示例10包括示例1-9中任一项的主题,并且进一步包括处理器,其中处理器包括沙箱跳转引擎以:响应于第二处理器指令的调用,在计算设备的存储器中设置沙箱位;响应于第二处理器指令的调用,在计算设备的存储器中存储返回地址;响应于第二处理器指令的调用,从计算设备的存储器加载执行状态;以及响应于第二处理器指令的调用,跳转到第一沙箱域内的进入点。
示例11包括示例1-10中任一项的主题,并且其中加载执行状态包括:将堆栈指针从存储器加载到处理器的堆栈指针寄存器;以及将进入点从存储器加载到处理器的指令指针寄存器。
示例12包括示例1-11中任一项的主题,并且其中:设置沙箱位包括在计算设备的存储器中设置状态控制块的沙箱位;存储返回地址包括在状态控制块中存储返回地址;并且加载执行状态包括从状态控制块加载执行状态。
示例13包括示例1-12中任一项的主题,并且其中:在沙箱处理器模式下执行代码包括:调用第三处理器指令以退出第一沙箱域;以及可信域管理器进一步响应于第三处理器指令的调用,在非特权本地处理器模式下执行包括在第一虚拟地址空间的本地域中的代码。
示例14包括示例1-13中任一项的主题,并且进一步包括处理器,其中:处理器包括沙箱跳转引擎,以响应于第二处理器指令的调用而在计算设备的存储器中设置沙箱位;并且处理器包括沙箱退出引擎,以响应于第三处理器指令的调用而清除存储器中的沙箱位。
示例15包括示例1-14中任一项的主题,并且进一步包括处理器,其中:处理器包括沙箱跳转引擎,以响应于第二处理器指令的调用而在计算设备的存储器中存储指向本地域的返回地址;并且处理器包括沙箱退出引擎,以响应于第三处理器指令的调用而跳转到返回地址。
示例16包括示例1-15中任一项的主题,并且进一步包括:处理器,其包括沙箱强制执行引擎以在非特权沙箱处理器模式下执行包括在第一沙箱域中的代码期间生成异常;以及系统管理器,以(i)响应于异常的生成,在特权处理器模式下执行内核异常处理程序,以及(ii)响应于内核异常处理程序的执行,在非特权本地处理器模式下调用非特权异常处理程序;其中可信域管理器进一步:(i)响应于非特权异常处理程序的执行,读取处理器的沙箱状态寄存器,以及(ii)响应于沙箱状态寄存器的读取,确定异常是否源于非特权沙箱处理器模式。
示例17包括示例1-16中任一项的主题,并且其中可信域管理器进一步:在本地处理器模式下的非特权异常处理程序的执行期间,调用第二处理器指令以进入非特权沙箱处理器模式。
示例18包括一种用于不可信代码执行的方法,该方法包括:由计算设备在非特权本地处理器模式下执行包括在第一虚拟地址空间的本地域中的代码;在本地处理器模式下执行代码的同时,由计算设备调用第一处理器指令以将存储器页面添加到第一虚拟地址空间的第一沙箱域,其中存储器页面未被包括在本地域中;在本地处理器模式下执行代码的同时,由计算设备调用第二处理器指令以响应于调用第一处理器指令而进入第一沙箱域;以及响应于调用第二处理器指令,由计算设备在非特权沙箱处理器模式下执行包括在第一沙箱域中的代码。
示例19包括示例18的主题,并且其中在非特权沙箱处理器模式下执行包括在第一沙箱域中的代码包括:由计算设备的处理器允许对包括在第一沙箱域中的存储器的访问;以及由计算设备的处理器拒绝对未被包括在第一沙箱域中的存储器的访问。
示例20包括示例18和19中任一项的主题,并且其中拒绝对存储器的访问包括:拒绝对未被包括在第一沙箱域中的存储器的读取访问、写入访问和执行访问。
示例21包括示例18-20中任一项的主题,并且其中拒绝对未被包括在第一沙箱域中的存储器的访问包括:由处理器生成页面故障异常。
示例22包括示例18-21中任一项的主题,并且其中在非特权沙箱处理器模式下执行包括在第一沙箱域中的代码包括:由计算设备的处理器拒绝禁止的指令的执行。
示例23包括示例18-22中任一项的主题,并且其中拒绝禁止的指令的执行包括:由处理器生成一般保护故障异常。
示例24包括示例18-23中任一项的主题,并且进一步包括:在本地处理器模式下执行用户模式代码的同时,由计算设备为第一沙箱域配置沙箱状态;以及响应于配置沙箱状态,由计算设备调用第三处理器指令以为第一沙箱域设置沙箱状态;其中调用第二处理器指令包括:响应于调用第三处理器指令而调用第二处理器指令。
示例25包括示例18-24中任一项的主题,并且其中沙箱状态指示指向第一沙箱域内的堆栈指针和第一沙箱域内的进入点。
示例26包括示例18-25中任一项的主题,并且进一步包括:响应于调用第三处理器指令,由计算设备的处理器将计算设备的存储器中的状态控制块配置有沙箱状态。
示例27包括示例18-26中任一项的主题,并且进一步包括:响应于调用第二处理器指令,由计算设备的处理器在计算设备的存储器中设置沙箱位;响应于调用第二处理器指令,由处理器在计算设备的存储器中存储返回地址;响应于调用第二处理器指令,由处理器从计算设备的存储器加载执行状态;以及响应于调用第二处理器指令,由处理器跳转到第一沙箱域内的进入点。
示例28包括示例18-27中任一项的主题,并且其中加载执行状态包括:将堆栈指针从存储器加载到处理器的堆栈指针寄存器;以及将进入点从存储器加载到处理器的指令指针寄存器。
示例29包括示例18-28中任一项的主题,并且其中:设置沙箱位包括在计算设备的存储器中设置状态控制块的沙箱位;存储返回地址包括在状态控制块中存储返回地址;并且加载执行状态包括从状态控制块加载执行状态。
示例30包括示例18-29中任一项的主题,并且进一步包括:在沙箱处理器模式下执行代码的同时,由计算设备调用第三处理器指令以退出第一沙箱域;以及响应于调用第三处理器指令,由计算设备在非特权本地处理器模式下执行包括在第一虚拟地址空间的本地域中的代码。
示例31包括示例18-30中任一项的主题,并且进一步包括:响应于调用第二处理器指令,由计算设备的处理器在计算设备的存储器中设置沙箱位;并且响应于调用第三处理器指令,由处理器清除存储器中的沙箱位。
示例32包括示例18-31中任一项的主题,并且进一步包括:响应于调用第二处理器指令,由处理器存储指向计算设备的存储器中的本地域的返回地址;以及响应于调用第三处理器指令,由处理器跳转到返回地址。
示例33包括示例18-32中任一项的主题,并且进一步包括:在非特权沙箱处理器模式下执行包括在第一沙箱域中的代码的同时,由计算设备的处理器生成异常;响应于生成异常,由计算设备在特权处理器模式下执行内核异常处理程序;响应于执行内核异常处理程序,由计算设备在非特权本地处理器模式下调用非特权异常处理程序;响应于执行非特权异常处理程序,由计算设备读取处理器的沙箱状态寄存器;以及响应于读取沙箱状态寄存器,由计算设备确定异常是否源于非特权沙箱处理器模式。
示例34包括示例18-33中任一项的主题,并且进一步包括:在本地处理器模式下执行非特权异常处理程序的同时,由计算设备调用第二处理器指令以输入非特权沙箱处理器模式。
示例35包括一种计算设备,包括:处理器;以及存储器,具有在其中存储的多个指令,该指令在由处理器执行时使计算设备执行权利要求18-34中任一项的方法。
示例36包括一个或多个非暂时性计算机可读存储介质,包括在其上存储的多个指令,该指令响应于被执行而导致计算设备执行权利要求18-34中任一项的方法。
示例37包括一种计算设备,包括用于执行权利要求18-34中任一项的方法的装置。
示例38包括一种用于不可信代码执行的计算设备,该计算设备包括:用于在非特权本地处理器模式下执行包括在第一虚拟地址空间的本地域中的代码的装置;用于在本地处理器模式下执行代码的同时,由计算设备调用第一处理器指令以将存储器页面添加到第一虚拟地址空间的第一沙箱域的装置,其中存储器页面未被包括在本地域中;用于在本地处理器模式下执行代码的同时,由计算设备调用第二处理器指令以响应于调用第一处理器指令而进入第一沙箱域的装置;以及用于响应于调用第二处理器指令,在非特权沙箱处理器模式下执行包括在第一沙箱域中的代码的装置。
示例39包括示例38的主题,并且其中用于在非特权沙箱处理器模式下执行包括在第一沙箱域中的代码的装置包括:用于由计算设备的处理器允许对包括在第一沙箱域中的存储器的访问的装置;以及用于由计算设备的处理器拒绝对未被包括在第一沙箱域中的存储器的访问的装置。
示例40包括示例38和39中任一项的主题,并且其中用于拒绝对存储器的访问的装置包括:用于拒绝对未被包括在第一沙箱域中的存储器的读取访问、写入访问和执行访问的装置。
示例41包括示例38-40中任一项的主题,并且其中用于拒绝对未被包括在第一沙箱域中的存储器的访问的装置包括:用于由处理器生成页面故障异常的装置。
示例42包括示例38-41中任一项的主题,并且其中用于在非特权沙箱处理器模式下执行包括在第一沙箱域中的代码的装置包括:用于由计算设备的处理器拒绝禁止的指令的执行的装置。
示例43包括示例38-42中任一项的主题,并且其中用于拒绝禁止的指令的执行的装置包括:用于由处理器生成一般保护故障异常的装置。
示例44包括示例38-43中任一项的主题,并且进一步包括:用于在本地处理器模式下执行用户模式代码的同时,由计算设备为第一沙箱域配置沙箱状态的装置;以及用于响应于配置沙箱状态,调用第三处理器指令以为第一沙箱域设置沙箱状态的装置;其中用于调用第二处理器指令的装置包括:用于响应于调用第三处理器指令而调用第二处理器指令的装置。
示例45包括示例38-44中任一项的主题,并且其中沙箱状态指示指向第一沙箱域内的堆栈指针和第一沙箱域内的进入点。
示例46包括示例38-45中任一项的主题,并且进一步包括:用于响应于调用第三处理器指令,由计算设备的处理器将计算设备的存储器中的状态控制块配置有沙箱状态的装置。
示例47包括示例38-46中任一项的主题,并且进一步包括:用于响应于调用第二处理器指令,由计算设备的处理器在计算设备的存储器中设置沙箱位的装置;用于响应于调用第二处理器指令,由处理器在计算设备的存储器中存储返回地址的装置;用于响应于调用第二处理器指令,由处理器从计算设备的存储器加载执行状态的装置;以及用于响应于调用第二处理器指令,由处理器跳转到第一沙箱域内的进入点的装置。
示例48包括示例38-47中任一项的主题,并且其中用于加载执行状态的装置包括:用于将堆栈指针从存储器加载到处理器的堆栈指针寄存器的装置;以及用于将进入点从存储器加载到处理器的指令指针寄存器的装置。
示例49包括示例38-48中任一项的主题,并且其中:用于设置沙箱位的装置包括:用于在计算设备的存储器中设置状态控制块的沙箱位的装置;用于存储返回地址的装置包括:用于在状态控制块中存储返回地址的装置;用于加载执行状态的装置包括:用于从状态控制块加载执行状态的装置。
示例50包括示例38-49中任一项的主题,并且进一步包括:用于在沙箱处理器模式下执行代码的同时,由计算设备调用第三处理器指令以退出第一沙箱域的装置;以及用于响应于调用第三处理器指令,在非特权本地处理器模式下执行包括在第一虚拟地址空间的本地域中的代码的装置。
示例51包括示例38-50中任一项的主题,并且进一步包括:用于响应于调用第二处理器指令,由计算设备的处理器在计算设备的存储器中设置沙箱位的装置;以及用于响应于调用第三处理器指令,由处理器清除存储器中的沙箱位的装置。
示例52包括示例38-51中任一项的主题,并且进一步包括:用于响应于调用第二处理器指令,由处理器存储指向计算设备的存储器中的本地域的返回地址的装置;以及用于响应于调用第三处理器指令,由处理器跳转到返回地址的装置。
示例53包括示例38-52中任一项的主题,并且进一步包括:用于在非特权沙箱处理器模式下执行包括在第一沙箱域中的代码的同时,由计算设备的处理器生成异常的装置;用于响应于生成异常,在特权处理器模式下执行内核异常处理程序的装置;用于响应于执行内核异常处理程序,在非特权本地处理器模式下调用非特权异常处理程序的装置;用于响应于执行非特权异常处理程序,读取处理器的沙箱状态寄存器的装置;以及用于响应于读取沙箱状态寄存器,确定异常是否源于非特权沙箱处理器模式的装置。
示例54包括示例38-53中任一项的主题,并且进一步包括:用于在本地处理器模式下执行非特权异常处理程序的同时,由计算设备调用第二处理器指令以进入非特权沙箱处理器模式的装置。

Claims (25)

1.一种用于不可信代码执行的计算设备,该计算设备包括可信域管理器以:
在非特权本地处理器模式下执行包括在第一虚拟地址空间的本地域中的代码;
在本地处理器模式下的代码的执行期间,调用第一处理器指令以将存储器页面添加到第一虚拟地址空间的第一沙箱域,其中存储器页面未被包括在本地域中;
在本地处理器模式下的代码的执行期间,调用第二处理器指令以响应于第一处理器指令的调用而进入第一沙箱域;以及
响应于第二处理器指令的调用,在非特权沙箱处理器模式下执行包括在第一沙箱域中的代码。
2.根据权利要求1所述的计算设备,其中在非特权沙箱处理器模式下执行包括在第一沙箱域中的代码包括:
由计算设备的处理器允许对包括在第一沙箱域中的存储器的访问;以及
由计算设备的处理器拒绝对未被包括在第一沙箱域中的存储器的访问。
3.根据权利要求2所述的计算设备,其中拒绝对存储器的访问包括:拒绝对未被包括在第一沙箱域中的存储器的读取访问、写入访问和执行访问。
4.根据权利要求1所述的计算设备,其中在非特权沙箱处理器模式下执行包括在第一沙箱域中的代码包括:由计算设备的处理器拒绝禁止的指令的执行。
5.根据权利要求1所述的计算设备,其中可信域管理器进一步:
在本地处理器模式下的用户模式代码的执行期间,为第一沙箱域配置沙箱状态;以及
响应于沙箱状态的配置,调用第三处理器指令以为第一沙箱域设置沙箱状态;
其中调用第二处理器指令包括:响应于第三处理器指令的调用,调用第二处理器指令。
6.根据权利要求1所述的计算设备,进一步包括处理器,其中处理器包括沙箱跳转引擎以:
响应于第二处理器指令的调用,在计算设备的存储器中设置沙箱位;
响应于第二处理器指令的调用,在计算设备的存储器中存储返回地址;
响应于第二处理器指令的调用,从计算设备的存储器加载执行状态;以及
响应于第二处理器指令的调用,跳转到第一沙箱域内的进入点。
7.根据权利要求6所述的计算设备,其中加载执行状态包括:
将堆栈指针从存储器加载到处理器的堆栈指针寄存器;以及
将进入点从存储器加载到处理器的指令指针寄存器。
8.根据权利要求1所述的计算设备,其中:
在沙箱处理器模式下执行代码包括:调用第三处理器指令以退出第一沙箱域;以及
可信域管理器进一步响应于第三处理器指令的调用,在非特权本地处理器模式下执行包括在第一虚拟地址空间的本地域中的代码。
9.根据权利要求8所述的计算设备,进一步包括处理器,其中:
处理器包括沙箱跳转引擎,以响应于第二处理器指令的调用而在计算设备的存储器中设置沙箱位;以及
处理器包括沙箱退出引擎,以响应于第三处理器指令的调用而清除存储器中的沙箱位。
10.根据权利要求1所述的计算设备,进一步包括:
处理器,其包括沙箱强制执行引擎以在非特权沙箱处理器模式下执行包括在第一沙箱域中的代码期间生成异常;以及
系统管理器,以(i)响应于异常的生成,在特权处理器模式下执行内核异常处理程序,以及(ii)响应于内核异常处理程序的执行,在非特权本地处理器模式下调用非特权异常处理程序;
其中可信域管理器进一步:(i)响应于非特权异常处理程序的执行,读取处理器的沙箱状态寄存器,以及(ii)响应于沙箱状态寄存器的读取,确定异常是否源于非特权沙箱处理器模式。
11.根据权利要求10所述的计算设备,其中可信域管理器进一步在本地处理器模式下的非特权异常处理程序的执行期间调用第二处理器指令以进入非特权沙箱处理器模式。
12.一种用于不可信代码执行的方法,该方法包括:
由计算设备在非特权本地处理器模式下执行包括在第一虚拟地址空间的本地域中的代码;
在本地处理器模式下执行代码的同时,由计算设备调用第一处理器指令以将存储器页面添加到第一虚拟地址空间的第一沙箱域,其中存储器页面未被包括在本地域中;
在本地处理器模式下执行代码的同时,由计算设备调用第二处理器指令以响应于调用第一处理器指令而进入第一沙箱域;以及
响应于调用第二处理器指令,由计算设备在非特权沙箱处理器模式下执行包括在第一沙箱域中的代码。
13.根据权利要求12所述的方法,其中在非特权沙箱处理器模式下执行包括在第一沙箱域中的代码包括:
由计算设备的处理器允许对包括在第一沙箱域中的存储器的访问;以及
由计算设备的处理器拒绝对未被包括在第一沙箱域中的存储器的访问。
14.根据权利要求12所述的方法,其中在非特权沙箱处理器模式下执行包括在第一沙箱域中的代码包括:由计算设备的处理器拒绝禁止的指令的执行。
15.根据权利要求12所述的方法,进一步包括:
在本地处理器模式下执行用户模式代码的同时,由计算设备为第一沙箱域配置沙箱状态;以及
响应于配置沙箱状态,由计算设备调用第三处理器指令以为第一沙箱域设置沙箱状态;
其中调用第二处理器指令包括:响应于调用第三处理器指令而调用第二处理器指令。
16.根据权利要求12所述的方法,进一步包括:
响应于调用第二处理器指令,由计算设备的处理器在计算设备的存储器中设置沙箱位;
响应于调用第二处理器指令,由处理器在计算设备的存储器中存储返回地址;
响应于调用第二处理器指令,由处理器从计算设备的存储器加载执行状态;以及
响应于调用第二处理器指令,由处理器跳转到第一沙箱域内的进入点。
17.根据权利要求12所述的方法,进一步包括:
在沙箱处理器模式下执行代码的同时,由计算设备调用第三处理器指令以退出第一沙箱域;以及
响应于调用第三处理器指令,由计算设备在非特权本地处理器模式下执行包括在第一虚拟地址空间的本地域中的代码。
18.根据权利要求12所述的方法,进一步包括:
在非特权沙箱处理器模式下执行包括在第一沙箱域中的代码的同时,由计算设备的处理器生成异常;
响应于生成异常,由计算设备在特权处理器模式下执行内核异常处理程序;
响应于执行内核异常处理程序,由计算设备在非特权本地处理器模式下调用非特权异常处理程序;
响应于执行非特权异常处理程序,由计算设备读取处理器的沙箱状态寄存器;以及
响应于读取沙箱状态寄存器,由计算设备确定异常是否源于非特权沙箱处理器模式。
19.一种用于不可信代码执行的计算设备,该计算设备包括:
用于在非特权本地处理器模式下执行包括在第一虚拟地址空间的本地域中的代码的装置;
用于在本地处理器模式下执行代码的同时,由计算设备调用第一处理器指令以将存储器页面添加到第一虚拟地址空间的第一沙箱域的装置,其中存储器页面未被包括在本地域中;
用于在本地处理器模式下执行代码的同时,由计算设备调用第二处理器指令以响应于调用第一处理器指令而进入第一沙箱域的装置;以及
用于响应于调用第二处理器指令,在非特权沙箱处理器模式下执行包括在第一沙箱域中的代码的装置。
20.根据权利要求19所述的计算设备,其中用于在非特权沙箱处理器模式下执行包括在第一沙箱域中的代码的装置包括:
用于由计算设备的处理器允许对包括在第一沙箱域中的存储器的访问的装置;以及
用于由计算设备的处理器拒绝对未被包括在第一沙箱域中的存储器的访问的装置。
21.根据权利要求19所述的计算设备,其中用于在非特权沙箱处理器模式下执行包括在第一沙箱域中的代码的装置包括:用于由计算设备的处理器拒绝禁止的指令的执行的装置。
22.根据权利要求19所述的计算设备,进一步包括:
用于在本地处理器模式下执行用户模式代码的同时,由计算设备为第一沙箱域配置沙箱状态的装置;以及
用于响应于配置沙箱状态,调用第三处理器指令以为第一沙箱域设置沙箱状态的装置;
其中用于调用第二处理器指令的装置包括:用于响应于调用第三处理器指令而调用第二处理器指令的装置。
23.根据权利要求19所述的计算设备,进一步包括:
用于响应于调用第二处理器指令,由计算设备的处理器在计算设备的存储器中设置沙箱位的装置;
用于响应于调用第二处理器指令,由处理器在计算设备的存储器中存储返回地址的装置;
用于响应于调用第二处理器指令,由处理器从计算设备的存储器加载执行状态的装置;以及
用于响应于调用第二处理器指令,由处理器跳转到第一沙箱域内的进入点的装置。
24.根据权利要求19所述的计算设备,进一步包括:
用于在沙箱处理器模式下执行代码的同时,由计算设备调用第三处理器指令以退出第一沙箱域的装置;以及
用于响应于调用第三处理器指令,在非特权本地处理器模式下执行包括在第一虚拟地址空间的本地域中的代码的装置。
25.根据权利要求19所述的计算设备,进一步包括:
用于在非特权沙箱处理器模式下执行包括在第一沙箱域中的代码的同时,由计算设备的处理器生成异常的装置;
用于响应于生成异常,在特权处理器模式下执行内核异常处理程序的装置;
用于响应于执行内核异常处理程序,在非特权本地处理器模式下调用非特权异常处理程序的装置;
用于响应于执行非特权异常处理程序,读取处理器的沙箱状态寄存器的装置;以及
用于响应于读取沙箱状态寄存器,确定异常是否源于非特权沙箱处理器模式的装置。
CN201811131137.5A 2017-09-29 2018-09-27 用于采用处理器沙箱支持的不可信代码执行的技术 Pending CN109726549A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/720,083 US11055401B2 (en) 2017-09-29 2017-09-29 Technologies for untrusted code execution with processor sandbox support
US15/720083 2017-09-29

Publications (1)

Publication Number Publication Date
CN109726549A true CN109726549A (zh) 2019-05-07

Family

ID=65728137

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811131137.5A Pending CN109726549A (zh) 2017-09-29 2018-09-27 用于采用处理器沙箱支持的不可信代码执行的技术

Country Status (3)

Country Link
US (3) US11055401B2 (zh)
CN (1) CN109726549A (zh)
DE (1) DE102018115670A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117093323A (zh) * 2023-08-23 2023-11-21 北京志凌海纳科技有限公司 基于后端执行引擎中实现沙盒机制的方法及系统
CN117112029A (zh) * 2023-10-24 2023-11-24 上海芯联芯智能科技有限公司 一种指令执行方法及装置
US11847206B2 (en) 2017-09-29 2023-12-19 Intel Corporation Technologies for untrusted code execution with processor sandbox support

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10915457B2 (en) 2018-08-30 2021-02-09 Micron Technology, Inc. Memory access control through permissions specified in page table entries for execution domains
US10915465B2 (en) 2018-08-30 2021-02-09 Micron Technology, Inc. Memory configured to store predefined set of domain registers for instructions being executed in computer processors
US10942863B2 (en) 2018-08-30 2021-03-09 Micron Technology, Inc. Security configurations in page table entries for execution domains using a sandbox application operation
US11481241B2 (en) 2018-08-30 2022-10-25 Micron Technology, Inc. Virtual machine register in a computer processor
US11500665B2 (en) 2018-08-30 2022-11-15 Micron Technology, Inc. Dynamic configuration of a computer processor based on the presence of a hypervisor
US11182507B2 (en) 2018-08-30 2021-11-23 Micron Technology, Inc. Domain crossing in executing instructions in computer processors
US11914726B2 (en) 2018-08-30 2024-02-27 Micron Technology, Inc. Access control for processor registers based on execution domains
CN110688198B (zh) * 2019-09-24 2021-03-02 网易(杭州)网络有限公司 系统调用方法、装置和电子设备
GB2589895B (en) * 2019-12-11 2022-03-16 Advanced Risc Mach Ltd Intermodal calling branch instruction
US20220198014A1 (en) * 2020-12-23 2022-06-23 Dover Microsystems, Inc. Systems and methods for policy violation processing

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070050854A1 (en) * 2005-09-01 2007-03-01 Microsoft Corporation Resource based dynamic security authorization
US20130291053A1 (en) * 2012-04-27 2013-10-31 Broadcom Corporation Security Controlled Multi-Processor System
WO2013174503A1 (en) * 2012-05-21 2013-11-28 Eth Zurich Secure loader
US20140130187A1 (en) * 2012-11-08 2014-05-08 Dewan Prashant Protecting Systems from Unauthorized Access to System Resources Using Browser Independent Web Page Technology
WO2015148834A1 (en) * 2014-03-28 2015-10-01 Intel Corporation Virtualization based intra-block workload isolation
US20170097898A1 (en) * 2015-10-02 2017-04-06 David M. Durham Technologies for execute only transactional memory

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8136158B1 (en) * 2008-07-21 2012-03-13 Google Inc. User-level segmentation mechanism that facilitates safely executing untrusted native code
US9160756B2 (en) * 2010-05-19 2015-10-13 International Business Machines Corporation Method and apparatus for protecting markup language document against cross-site scripting attack
US9535731B2 (en) * 2014-11-21 2017-01-03 International Business Machines Corporation Dynamic security sandboxing based on intruder intent
US11055401B2 (en) 2017-09-29 2021-07-06 Intel Corporation Technologies for untrusted code execution with processor sandbox support

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070050854A1 (en) * 2005-09-01 2007-03-01 Microsoft Corporation Resource based dynamic security authorization
US20130291053A1 (en) * 2012-04-27 2013-10-31 Broadcom Corporation Security Controlled Multi-Processor System
WO2013174503A1 (en) * 2012-05-21 2013-11-28 Eth Zurich Secure loader
US20140130187A1 (en) * 2012-11-08 2014-05-08 Dewan Prashant Protecting Systems from Unauthorized Access to System Resources Using Browser Independent Web Page Technology
WO2015148834A1 (en) * 2014-03-28 2015-10-01 Intel Corporation Virtualization based intra-block workload isolation
CN106030602A (zh) * 2014-03-28 2016-10-12 英特尔公司 基于虚拟化的块内工作负荷隔离
US20170097898A1 (en) * 2015-10-02 2017-04-06 David M. Durham Technologies for execute only transactional memory

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
MUHANNAD SHAMS UI HAQ;LEJIAN LIAO: "Design and implementation of sandbox technique for isolated applications", 2016 IEEE INFORMATION TECHNOLOGY,NETWORKING,ELECTRONIC AND AUTOMATION CONTROL CONFERENCE, 22 May 2016 (2016-05-22), pages 1 - 5 *
蒋雅利: "基于虚拟机的实时文件保护机制研究", 信息科技, no. 2, 15 December 2011 (2011-12-15), pages 15 - 23 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11847206B2 (en) 2017-09-29 2023-12-19 Intel Corporation Technologies for untrusted code execution with processor sandbox support
CN117093323A (zh) * 2023-08-23 2023-11-21 北京志凌海纳科技有限公司 基于后端执行引擎中实现沙盒机制的方法及系统
CN117093323B (zh) * 2023-08-23 2024-03-26 北京志凌海纳科技有限公司 基于后端执行引擎中实现沙盒机制的方法及系统
CN117112029A (zh) * 2023-10-24 2023-11-24 上海芯联芯智能科技有限公司 一种指令执行方法及装置
CN117112029B (zh) * 2023-10-24 2024-03-12 上海芯联芯智能科技有限公司 一种指令执行方法及装置

Also Published As

Publication number Publication date
DE102018115670A1 (de) 2019-04-04
US11055401B2 (en) 2021-07-06
US11847206B2 (en) 2023-12-19
US20190102537A1 (en) 2019-04-04
US20240095340A1 (en) 2024-03-21
US20220121737A1 (en) 2022-04-21

Similar Documents

Publication Publication Date Title
CN109726549A (zh) 用于采用处理器沙箱支持的不可信代码执行的技术
Biondo et al. The Guard's Dilemma: Efficient {Code-Reuse} Attacks Against Intel {SGX}
US9589132B2 (en) Method and apparatus for hypervisor based monitoring of system interactions
AU2014389572B2 (en) Process evaluation for malware detection in virtual machines
US9501637B2 (en) Hardware shadow stack support for legacy guests
CN111651778B (zh) 基于risc-v指令架构的物理内存隔离方法
CN108475217B (zh) 用于审计虚拟机的系统及方法
Cho et al. {Hardware-Assisted}{On-Demand} Hypervisor Activation for Efficient Security Critical Code Execution on Mobile Devices
US9336383B2 (en) Mitigating just-in-time spraying attacks in a network environment
US10091216B2 (en) Method, apparatus, system, and computer readable medium for providing apparatus security
US8584248B2 (en) Transforming untrusted applications into trusted executables through static previrtualization
JP2007220086A (ja) 入出力制御装置、入出力制御システム及び入出力制御方法
WO2015108675A1 (en) Threat-aware microvisor
Pék et al. On the feasibility of software attacks on commodity virtual machine monitors via direct device assignment
CN104021037B (zh) 动态资源共享
CN106462508A (zh) 访问控制与代码调度
US10108800B1 (en) ARM processor-based hardware enforcement of providing separate operating system environments for mobile devices with capability to employ different switching methods
US20140337637A1 (en) Methods and systems for executing protected content
US20120255038A1 (en) Dual Trust Architecture
US10579791B2 (en) Technologies to defeat secure enclave side-channel attacks using fault-oriented programming
US10929148B2 (en) Executing services in containers
KR101467877B1 (ko) 하이퍼바이저를 이용한 프로세스 메모리 보안 시스템 및 방법
Masmano et al. Io virtualisation in a partitioned system
McDermott et al. The Xenon separation VMM: Secure virtualization infrastructure for military clouds
CN113986715A (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