Software Diversification via Random Block Padding
Find Innovative SolutionsGenerate 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
Engineering 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
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.
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.
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
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.
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.
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
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.
Data Source
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.


