Native Code Security via Software Fault Isolation on ARM

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing computing systems grant trust to applications on an all-or-nothing basis, leading to security issues where native applications have full access to resources, potentially causing unwanted side effects, while web applications execute slower and provide limited functionality due to lack of direct access, necessitating a finer-grained application of trust.

Innovation Solution

A system that loads native code modules into a secure runtime environment using Software Fault Isolation (SFI) mechanisms to constrain store instructions and maintain control flow integrity, validating the modules before execution, and masking destination addresses to prevent unauthorized access, specifically adapted for ARM instruction set architectures.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If native applications are granted full access to resources, then execution performance is improved, but security risks increase due to potential unwanted side effects and resource manipulation

Engineering Contradiction:
Improveexecution performanceVSAvoidsecurity risks
Core Design Contradiction:
ProductivityVSObject-affected harmful factors

Solution Approach 1:

The patent segments the execution environment by loading native code modules into a sandboxed runtime environment rather than allowing direct system access. This segmentation isolates potentially harmful code while preserving execution performance, resolving the contradiction between performance and security.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces a sandboxed runtime environment as an intermediary layer between native code modules and the operating system. This intermediary provides controlled access to resources, enabling performance optimization while preventing direct harmful access to system resources.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Object-affected harmful factors

If web applications are executed with limited access to resources, then security is improved, but execution speed decreases by one to two orders of magnitude

Engineering Contradiction:
ImprovesecurityVSAvoidexecution speed
Core Design Contradiction:
Object-affected harmful factorsVSProductivity

Solution Approach 1:

The patent allows web applications to invoke native code modules that provide optimized execution paths. By copying the performance benefits of native code into the sandboxed environment through controlled native module invocation, the system achieves both security and improved execution speed.

Inventive Principle:
Principle #26Copying

Solution Approach 2:

The patent changes the execution parameters by allowing native code modules to run with optimized performance characteristics within the sandboxed environment. This parameter change enables web applications to achieve native-level performance while maintaining security through the sandboxed execution context.

Inventive Principle:
Principle #35Parameter changes

3Object-affected harmful factors

If a sandboxed runtime environment is used for native code modules, then security is improved through isolation, but device complexity increases due to additional validation and constraint mechanisms

Engineering Contradiction:
Improvesecurity isolationVSAvoidvalidation mechanisms
Core Design Contradiction:
Object-affected harmful factorsVSDevice complexity

Solution Approach 1:

The patent applies preliminary validation actions by validating native code modules before execution and maintaining control flow integrity through code block division. These preliminary actions prevent harmful execution paths while maintaining relatively simple runtime mechanisms through advance preparation.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS8966628B2Native code module security for arm instruction set architectures
Publication Date: 2015.02.24 GOOGLE LLC
  • US8966628B2 patent drawing
  • US8966628B2 patent drawing
  • US8966628B2 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 constrain store instructions in the native code module. The SFI mechanisms also maintain control flow integrity for the native code module by dividing a code region associated with the native code module into equally sized code blocks and data blocks and starting each of the data blocks with an illegal instruction.