Application Code Randomization for ROP Attack Prevention

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Vulnerabilities in third-party software, particularly through return-oriented programming (ROP) attacks, pose a significant security risk as they can be exploited to execute malicious code on user devices, and existing solutions are either computationally intensive or ineffective in environments like iOS and Android where digital signatures are required for application execution.

Innovation Solution

Randomizing portions of code in applications to generate unique, randomized versions while maintaining digital signatures that attest to the integrity of the original application, thereby preventing monoculture and making ROP attacks costly and less effective, as each user receives a distinct version of the application.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If code randomization is applied to prevent ROP attacks, then security against ROP attacks is improved, but computational complexity and processing overhead increase

Engineering Contradiction:
Improvesecurity against ROP attacksVSAvoidcomputational complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The system performs code randomization in advance during the application distribution phase, generating randomized versions before they reach user devices. This preliminary action ensures security is built-in without requiring complex runtime computations on the user device, thus improving security while managing computational complexity.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent introduces a code randomization service as an intermediary between the application developer and the user device. This intermediary handles the complex randomization process, generating secure randomized versions of application code without requiring the user device to perform complex computations, thereby resolving the contradiction between security improvement and computational complexity.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If code randomization is applied to create unique application versions, then security against ROP attacks is improved, but verification and execution complexity increase

Engineering Contradiction:
Improvesecurity through unique versionsVSAvoidverification complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The system creates randomized copies of the original application code, where each copy is a valid but unique version. These copies maintain functional equivalence while having different code structures that prevent ROP attacks. The copying approach allows verification through digital signatures without requiring complex analysis of each randomized version.

Inventive Principle:
Principle #26Copying

Solution Approach 2:

The patent changes parameters of the code (such as instruction ordering, register allocation, and memory layout) while maintaining functional behavior. These parameter changes create unique application versions that are resistant to ROP attacks, while the changes are designed to be verifiable through existing digital signature mechanisms, thus managing verification complexity.

Inventive Principle:
Principle #35Parameter changes

3Reliability

If digital signatures are used to verify application integrity, then trust in applications is improved, but vulnerability to ROP attacks persists

Engineering Contradiction:
Improvetrust in applicationsVSAvoidsusceptibility to ROP attacks
Core Design Contradiction:
ReliabilityVSObject-affected harmful factors

Solution Approach 1:

The patent segments the application code into multiple sections and randomizes their arrangement while maintaining digital signatures for each segment. This segmentation approach allows the system to verify integrity through signatures while simultaneously preventing ROP attacks by disrupting the fixed code structure that ROP exploits.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The system introduces asymmetry by creating randomized versions of application code where the structure varies but the functional behavior remains consistent. This asymmetry in code structure prevents ROP attacks that rely on predictable code patterns, while digital signatures ensure the asymmetric versions are still trusted and verified.

Inventive Principle:
Principle #4Asymmetry

4Reliability

If existing ROP prevention solutions are implemented, then security against ROP attacks is improved, but they are either computationally intensive or ineffective in signed application environments

Engineering Contradiction:
Improvesecurity against ROP attacksVSAvoidexecution efficiency
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent performs ROP prevention through code randomization in advance during application distribution, rather than implementing computationally intensive runtime prevention mechanisms. This preliminary action ensures security is established before execution, allowing efficient runtime execution without compromising security.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The system creates pre-randomized copies of application code that are distributed to users. These copies are designed to be resistant to ROP attacks while maintaining execution efficiency, avoiding the need for computationally intensive runtime prevention measures that would degrade productivity.

Inventive Principle:
Principle #26Copying

Data Source

PatentUS10419224B2Preventing monoculture in application distribution
Publication Date: 2019.09.17 INTERNATIONAL BUSINESS MACHINE CORPORATION
  • US10419224B2 patent drawing
  • US10419224B2 patent drawing
  • US10419224B2 patent drawing

AI summary

Portions of code in an original application are randomized to generate a randomized version of the original application, wherein the randomizing does not modify expected behavior of the original application. Digital signature(s) are generated that attest to integrity of the randomized version. The digital signature(s) and either the original application or the randomized version are sent to a user device for execution or denial of execution of the randomized version based on the digital signature(s). At the user device, the randomized version is created if not received. The randomized version of the application is verified by the user device using the digital signature(s). The randomized version is executed by the user device in response to the digital signature(s) being verified or not executing the randomized version in response to the digital signature(s) not being verified.