Native Code Security via Software Fault Isolation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing computing systems apply trust to software on a coarse, all-or-nothing basis, leading to security issues and performance disparities between native and web applications, with native applications having full access to system resources and web applications executing slower and providing limited functionality.

Innovation Solution

A system that executes native code modules in a secure runtime environment using software fault isolation mechanisms to maintain control flow integrity and constrain store instructions, validating the modules before execution and bounding memory regions with guard areas to ensure secure and efficient execution.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If native applications are granted full access to system resources, then execution performance is improved, but security and stability are worsened due to unwanted side effects and system modifications

Engineering Contradiction:
Improveexecution performanceVSAvoidsystem stability
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The patent segments the execution environment by introducing separate execution contexts (e.g., browser sandbox, application sandbox) that isolate native code modules from the rest of the system. This allows native code to execute with full performance while containing its access to specific, authorized resources only, preventing unwanted side effects on system stability.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent implements local quality by granting different levels of access to different parts of the system. Native code modules receive full access to resources needed for their specific functionality, while other system components maintain restricted access. This selective granting of privileges maintains performance where needed while protecting system stability elsewhere.

Inventive Principle:
Principle #3Local quality

2Reliability

If web applications are executed with limited access to system resources, then security is improved, but execution speed and functionality are worsened

Engineering Contradiction:
ImprovesecurityVSAvoidexecution speed
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent implements dynamic access control where the execution context can adaptively grant or restrict access to system resources based on the specific native code module being executed. This allows the system to maintain security by default while dynamically enabling full access to native code that requires it, thus improving both security and performance as needed.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The patent changes the access parameters dynamically based on the execution context. When executing native code modules, the system adjusts memory access permissions, CPU register access, and other system parameters to match the performance requirements of native code while maintaining security boundaries. This parameter adjustment resolves the contradiction between security and performance.

Inventive Principle:
Principle #35Parameter changes

3Device complexity

If all applications are treated with the same trust level, then system simplicity is maintained, but security vulnerabilities and performance disparities are exacerbated

Engineering Contradiction:
Improvetrust management simplicityVSAvoidsecurity
Core Design Contradiction:
Device complexityVSReliability

Solution Approach 1:

The patent applies preliminary action by establishing execution contexts and trust levels before code execution begins. The system pre-configures security boundaries, resource access permissions, and execution environments based on the application type and source. This preliminary setup maintains simplicity in trust management while enabling differentiated security and performance characteristics for different application types.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS8935776B1Native code module security for 64-bit instruction set architectures
Publication Date: 2015.01.13 GOOGLE LLC
  • US8935776B1 patent drawing
  • US8935776B1 patent drawing
  • US8935776B1 patent drawing

AI summary

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.