Software Diversification via Random Block Padding

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional computing devices are vulnerable to deterministic memory addressing exploits due to fixed software code locations, which can be compromised even with address space layout randomization (ASLR) since attackers can adapt to new memory addresses, and existing security techniques are not universally applicable, especially in resource-constrained IoT devices.

Innovation Solution

Introducing entropy into the address space by padding software blocks with random amounts of non-program space during compilation or loading, ensuring that executable instructions are not found at expected memory locations, thus preventing deterministic memory addressing attacks.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If address space layout randomization (ASLR) is used to randomize starting addresses, then security against deterministic memory addressing attacks is improved, but it requires OS support and additional resources that are not available in resource-constrained IoT devices

Engineering Contradiction:
ImprovesecurityVSAvoidOS support requirement
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The system performs self-service by implementing its own address randomization mechanism without requiring external OS support. The software pads itself with random amounts of non-program space during compilation or loading, making the executable instructions inaccessible at expected memory locations. This self-contained approach eliminates dependency on OS-level ASLR infrastructure while achieving the same security goal.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The address randomization is performed in advance during compilation or loading phases, before the software executes. By pre-padding the software with random non-program space, the system establishes unpredictable memory layouts beforehand, preventing attackers from exploiting deterministic addressing even before runtime execution begins.

Inventive Principle:
Principle #10Preliminary action

2Reliability

If ASLR is implemented to move the compiled binary to a different starting address, then prediction of target addresses becomes more difficult, but the entire address space layout becomes available to attackers who obtain the second starting address

Engineering Contradiction:
ImprovesecurityVSAvoidattack vulnerability
Core Design Contradiction:
ReliabilityVSObject-affected harmful factors

Solution Approach 1:

The system segments the software into multiple blocks and pads each block independently with random amounts of non-program space. This segmentation ensures that even if an attacker obtains one starting address, they cannot predict the locations of other code segments, as each block's offset is independently randomized. This breaks the deterministic relationship between different parts of the address space.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Different blocks of the software are treated differently through independent random padding, creating local variations in address offsets. Each block has its own unique random offset applied, meaning that the same software instructions reside at different relative locations within each block across different targets, preventing localized exploitation.

Inventive Principle:
Principle #3Local quality

3Ease of operation

If software instructions are placed at fixed memory locations for easy execution, then device operation is simplified, but deterministic memory addressing makes the system vulnerable to exploits

Engineering Contradiction:
Improvedevice operationVSAvoidexploit vulnerability
Core Design Contradiction:
Ease of operationVSObject-affected harmful factors

Solution Approach 1:

The system changes the parameter of memory address by introducing random padding offsets to software blocks. This parameter change transforms fixed memory locations into variable locations, where the same software instructions can execute correctly but reside at different addresses. The random padding acts as a transformation layer that maintains operational simplicity while eliminating deterministic addressing patterns.

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS11036852B2System and method for software diversification
Publication Date: 2021.06.15 CACI LGS INNOVATIONS LLC
  • US11036852B2 patent drawing
  • US11036852B2 patent drawing
  • US11036852B2 patent drawing

AI summary

The present disclosure pertains to a system configured to prepare and use prediction models for software diversification. Some embodiments may: obtain compilation data; identify a plurality of blocks from the compilation data; and pad each of one or more blocks of the plurality of blocks by a random amount such that executable instructions within the each block begin at a different location to prevent a deterministic memory addressing attack, none of the one or more blocks being a beginning block of the compilation data.