Native code instruction selection
    1.
    发明授权
    Native code instruction selection 有权
    本地代码指令选择

    公开(公告)号:US09563424B2

    公开(公告)日:2017-02-07

    申请号:US13756371

    申请日:2013-01-31

    Applicant: GOOGLE INC.

    CPC classification number: G06F9/30003 G06F8/52

    Abstract: Methods, systems, and apparatus, including computer programs encoded on computer storage media, for selecting native code instructions. One of the methods includes receiving an initial machine language instruction for execution by a processor in a first execution mode; determining that a portion of the initial machine language instruction, when executed by the processor in a second execution mode, satisfies one or more risk criteria; generating one or more alternative machine language instructions to replace the initial machine language instruction for execution by the processor in the first execution mode, wherein the one or more alternative machine language instructions, when executed by the processor in the second execution mode, mitigate the one or more risk criteria; and providing the one or more alternative machine language instructions.

    Abstract translation: 方法,系统和装置,包括在计算机存储介质上编码的计算机程序,用于选择本地代码指令。 其中一种方法包括在第一执行模式中接收处理器执行的初始机器语言指令; 当处理器以第二执行模式执行时,确定所述初始机器语言指令的一部分满足一个或多个风险准则; 生成一个或多个替代的机器语言指令来替换所述初始机器语言指令以供处理器在第一执行模式中执行,其中当所述处理器在所述第二执行模式中执行时,所述一个或多个替代的机器语言指令减轻所述一个 或更多的风险标准; 以及提供一个或多个替代的机器语言指令。

    BRANCH DESTINATION TABLES
    2.
    发明申请
    BRANCH DESTINATION TABLES 审中-公开
    分支目录表

    公开(公告)号:US20150007142A1

    公开(公告)日:2015-01-01

    申请号:US13712700

    申请日:2012-12-12

    Applicant: Google Inc.

    CPC classification number: G06F21/54 G06F21/53 G06F2221/2109 H04L63/145

    Abstract: Methods, systems, and apparatus, including computer programs encoded on computer storage media, for software sandboxing. One of the methods includes receiving a software module that includes verifiably safe computer code and a branch destination table indicating addresses of all instructions that may be targets of indirect control flow transfers; validating the computer code to determine whether it can run safely by using a statically verifiable fault isolation scheme, where validating the computer code comprises validating the addresses of the branch destination table instructions; and running the computer code, in a sandbox environment, if it has been determined to run safely.

    Abstract translation: 方法,系统和装置,包括在计算机存储介质上编码的计算机程序,用于软件沙箱。 一种方法包括接收包括可验证安全的计算机代码的软件模块和指示可以是间接控制流传输的目标的所有指令的地址的分支目的地表; 验证计算机代码以确定其是否可以通过使用可静态验证的故障隔离方案来安全地运行,其中验证计算机代码包括验证分支目的地表指令的地址; 并在沙箱环境中运行计算机代码,如果已经确定安全运行。

    DYNAMIC CODE INSERTION AND REMOVAL FOR STATIC ANALYSIS BASED SANDBOXES
    3.
    发明申请
    DYNAMIC CODE INSERTION AND REMOVAL FOR STATIC ANALYSIS BASED SANDBOXES 有权
    动态代码插入和移除基于静态分析的砂糖

    公开(公告)号:US20130333031A1

    公开(公告)日:2013-12-12

    申请号:US13967626

    申请日:2013-08-15

    Applicant: Google Inc.

    CPC classification number: G06F21/53 G06F9/445

    Abstract: Methods and apparatus for dynamically adding and deleting new code to previously validated application executing in a secured runtime. New code is written to a portion of secured memory not executable by application. New code is validated to ensure it cannot directly call operating system, address memory outside of secured memory, or modify secured memory state. Indirect branch instructions may only target addresses aligned on fixed size boundaries within the secured memory. Validated code is copied to portion of secured memory executable by application in two stage process that ensures partially copied segments cannot be executed. Validated new code can be deleted once all threads reach safe execution point, provided code was previously inserted as unit or contains no internal targets that can be called by code not also being deleted.

    Abstract translation: 用于动态添加和删除新密码的方法和装置,用于在安全运行时执行的先前验证的应用程序。 新代码被写入不可执行的应用程序的一部分安全内存。 验证新代码以确保它不能直接调用操作系统,在安全内存之外的地址内存,或修改安全的内存状态。 间接分支指令可能只针对在固定内存中固定大小边界对齐的地址。 经过验证的代码被复制到可执行的安全内存的一部分,应用程序可以在两个阶段的过程中进行,以确保不能执行部分复制的段。 所有线程到达安全执行点后,可以删除已验证的新代码,前提是代码先前作为单元插入,也不包含内部可以通过代码不被删除的内部目标。

    Virtual environment having harvard architecture
    4.
    发明授权
    Virtual environment having harvard architecture 有权
    具有哈佛架构的虚拟环境

    公开(公告)号:US09372704B2

    公开(公告)日:2016-06-21

    申请号:US14141906

    申请日:2013-12-27

    Applicant: Google Inc.

    CPC classification number: G06F9/455 G06F9/45558 G06F21/53 G06F2009/45583

    Abstract: Methods, systems, and apparatus, including computer programs encoded on computer storage media, relating to software execution. One of the methods includes executing, on a computer including a single memory for storing data and instructions, a virtual environment including a data memory and an instruction memory, the instruction memory configured to be unreadable by instructions stored in the instruction memory; receiving, at the virtual environment, a software module comprising multiple instructions; and performing validation of the software module including: identifying, in the software module one or more calls to the single memory; and verifying that the one or more calls to the single memory are in the data memory.

    Abstract translation: 方法,系统和装置,包括在计算机存储介质上编码的计算机程序,涉及软件执行。 一种方法包括在包括用于存储数据和指令的单个存储器的计算机上执行包括数据存储器和指令存储器的虚拟环境,所述指令存储器被配置为通过存储在指令存储器中的指令而不可读; 在虚拟环境中接收包括多个指令的软件模块; 以及执行所述软件模块的验证,包括:在所述软件模块中识别对所述单个存储器的一个或多个调用; 并验证对单个存储器的一个或多个调用是在数据存储器中。

    Validating an untrusted native code module
    5.
    发明授权
    Validating an untrusted native code module 有权
    验证不可信的本机代码模块

    公开(公告)号:US09361453B2

    公开(公告)日:2016-06-07

    申请号:US14463345

    申请日:2014-08-19

    Applicant: Google Inc.

    CPC classification number: G06F21/577 G06F21/51

    Abstract: A system that validates a native code module. During operation, the system receives a native code module comprised of untrusted native program code. The system validates the native code module by: (1) determining that code in the native code module does not include any restricted instructions and/or does not access restricted features of a computing device; and (2) determining that the instructions in the native code module are aligned along byte boundaries such that a specified set of byte boundaries always contain a valid instruction and control flow instructions have valid targets. The system allows successfully-validated native code modules to execute, and rejects native code modules that fail validation. By validating the native code module, the system facilitates safely executing the native code module in the secure runtime environment on the computing device, thereby achieving native code performance for untrusted program binaries without significant risk of unwanted side effects.

    Abstract translation: 验证本地代码模块的系统。 在操作期间,系统接收由不可信的本地程序代码组成的本地代码模块。 该系统通过以下方式来验证本地代码模块:(1)确定本地代码模块中的代码不包括任何受限制的指令和/或不访问计算设备的受限特征; 和(2)确定本地代码模块中的指令沿着字节边界排列,使得指定的字节边界集合总是包含有效指令,并且控制流指令具有有效目标。 系统允许成功验证的本地代码模块执行,并拒绝验证失败的本机代码模块。 通过验证本地代码模块,系统便于在计算设备上的安全运行时环境中安全执行本地代码模块,从而为不受信任的程序二进制代码执行本机代码性能,而不会产生不必要的副作用。

    Machine-specific instruction set translation
    6.
    发明授权
    Machine-specific instruction set translation 有权
    特定于机器的指令集翻译

    公开(公告)号:US09300760B2

    公开(公告)日:2016-03-29

    申请号:US13751729

    申请日:2013-01-28

    Applicant: Google Inc.

    CPC classification number: H04L67/42 H04L41/08 H04L67/06

    Abstract: Methods, systems, and computer program products are provided for machine-specific instruction set translation. One example method includes identifying computing devices, each device having a respective software component installed, the software component including a translator component for translating a program in a portable format to a machine-specific instruction set, and a sandbox component for executing programs translated to the machine-specific instruction set on the computing device using software-based fault isolation; identifying computing devices having a given hardware configuration; and transmitting another translator component and another sandbox component to each of the identified computing devices. Each of the identified computing devices having the given hardware configuration is configured to receive the components and to configure its software component to use the received components in lieu of the corresponding components.

    Abstract translation: 为机器特定的指令集转换提供了方法,系统和计算机程序产品。 一个示例性方法包括识别计算设备,每个设备具有安装的相应的软件组件,所述软件组件包括用于将便携式格式的程序转换为特定于机器的指令集的翻译器组件,以及用于执行翻译为 使用基于软件的故障隔离的计算设备上的机器特定指令集; 识别具有给定硬件配置的计算设备; 以及将另一个翻译器组件和另一个沙盒组件传输到每个所识别的计算设备。 具有给定硬件配置的所识别的计算设备中的每一个被配置为接收组件并且配置其软件组件以使用所接收的组件来代替相应的组件。

    Method for Safely Executing an Untrusted Native Code Module on a Computing Device
    7.
    发明申请
    Method for Safely Executing an Untrusted Native Code Module on a Computing Device 有权
    在计算设备上安全执行不受信任的本机代码模块的方法

    公开(公告)号:US20150161383A1

    公开(公告)日:2015-06-11

    申请号:US14621550

    申请日:2015-02-13

    Applicant: Google Inc.

    Abstract: A system that safely executes a native code module on a computing device. During operation, the system receives the native code module, which is comprised of untrusted native program code expressed using native instructions in the instruction set architecture associated with the computing device. The system then loads the native code module into a secure runtime environment, and proceeds to execute a set of instructions from the native code module in the secure runtime environment. The secure runtime environment enforces code integrity, control flow integrity, and data integrity for the native code module. Furthermore, the secure runtime environment moderates which resources can be accessed by the native code module on the computing device and/or how these resources can be accessed. By executing the native code module in the secure runtime environment, the system facilitates achieving native code performance for untrusted program code without a significant risk of unwanted side effects.

    Abstract translation: 一种在计算设备上安全执行本机代码模块的系统。 在操作期间,系统接收本地代码模块,其由使用与计算设备相关联的指令集架构中的本地指令表示的不可信的本机程序代码组成。 然后,系统将本机代码模块加载到安全运行时环境中,并继续在安全运行时环境中从本机代码模块执行一组指令。 安全运行时环境强制本机代码模块的代码完整性,控制流完整性和数据完整性。 此外,安全运行时环境调节哪些资源可以由计算设备上的本地代码模块访问和/或如何访问这些资源。 通过在安全运行时环境中执行本地代码模块,系统便于实现不可信程序代码的本地代码性能,而不会产生不必要的副作用的重大风险。

    Machine-Specific Instruction Set Translation

    公开(公告)号:US20160212243A1

    公开(公告)日:2016-07-21

    申请号:US15082162

    申请日:2016-03-28

    Applicant: Google Inc.

    CPC classification number: H04L67/42 H04L41/08 H04L67/06

    Abstract: Methods, systems, and computer program products are provided for machine-specific instruction set translation. One example method includes identifying computing devices, each device having a respective software component installed, the software component including a translator component for translating a program in a portable format to a machine-specific instruction set, and a sandbox component for executing programs translated to the machine-specific instruction set on the computing device using software-based fault isolation; identifying computing devices having a given hardware configuration; and transmitting another translator component and another sandbox component to each of the identified computing devices. Each of the identified computing devices having the given hardware configuration is configured to receive the components and to configure its software component to use the received components in lieu of the corresponding components.

    Safely executing an untrusted native code module on a computing device
    9.
    发明授权
    Safely executing an untrusted native code module on a computing device 有权
    在计算设备上安全执行不受信任的本地代码模块

    公开(公告)号:US08959632B2

    公开(公告)日:2015-02-17

    申请号:US13787616

    申请日:2013-03-06

    Applicant: Google Inc.

    Abstract: A system that safely executes a native code module on a computing device. During operation, the system receives the native code module, which is comprised of untrusted native program code expressed using native instructions in the instruction set architecture associated with the computing device. The system then loads the native code module into a secure runtime environment, and proceeds to execute a set of instructions from the native code module in the secure runtime environment. The secure runtime environment enforces code integrity, control flow integrity, and data integrity for the native code module. Furthermore, the secure runtime environment moderates which resources can be accessed by the native code module on the computing device and/or how these resources can be accessed. By executing the native code module in the secure runtime environment, the system facilitates achieving native code performance for untrusted program code without a significant risk of unwanted side effects.

    Abstract translation: 一种在计算设备上安全执行本机代码模块的系统。 在操作期间,系统接收本地代码模块,其由使用与计算设备相关联的指令集架构中的本地指令表示的不可信的本机程序代码组成。 然后,系统将本机代码模块加载到安全运行时环境中,并继续在安全运行时环境中从本机代码模块执行一组指令。 安全运行时环境强制本机代码模块的代码完整性,控制流完整性和数据完整性。 此外,安全运行时环境调节哪些资源可以由计算设备上的本地代码模块访问和/或如何访问这些资源。 通过在安全运行时环境中执行本地代码模块,系统便于实现不可信程序代码的本地代码性能,而不会产生不必要的副作用的重大风险。

    Native code module security for 64-bit instruction set architectures
    10.
    发明授权
    Native code module security for 64-bit instruction set architectures 有权
    64位指令集架构的本地代码模块安全性

    公开(公告)号:US08935776B1

    公开(公告)日:2015-01-13

    申请号:US13904490

    申请日:2013-05-29

    Applicant: Google Inc.

    CPC classification number: G06F21/53

    Abstract: Some embodiments provide a system that executes a native code module. During operation, the system obtains the native code module. Next, the system loads the native code module into a secure runtime environment. Finally, the system safely executes the native code module in the secure runtime environment by using a set of software fault isolation (SFI) mechanisms that maintain control flow integrity for the native code module and constrain store instructions in the native code module by bounding a valid memory region of the native code module with one or more guard regions.

    Abstract translation: 一些实施例提供执行本地代码模块的系统。 在操作过程中,系统获取本地代码模块。 接下来,系统将本机代码模块加载到安全运行时环境中。 最后,系统通过使用一组维护本地代码模块的控制流完整性的软件故障隔离(SFI)机制来安全地执行安全运行时环境中的本地代码模块,并通过限制本地代码模块限制存储指令 具有一个或多个保护区域的本地代码模块的存储器区域。

Patent Agency Ranking