Runtime Code Repair Probes Defend Against MMU Attacks

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing self-checking systems are vulnerable to the MMU Attack, which reroutes data and code fetches to different physical addresses, allowing hackers to execute modified code while the unmodified version is checked, making it impossible for anti-tampering systems to detect this configuration.

Innovation Solution

The method synchronizes data and code memory accesses by modifying the program to only execute correctly when both are routed to the same physical addresses, using repair targets and probes to replace incorrect code sections at runtime, ensuring that the program behaves incorrectly if the MMU Attack is attempted.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If self-checking systems use data fetches to perform checksums on code, then code integrity can be verified, but the system becomes vulnerable to MMU attacks where modified code is executed while unmodified code is checked

Engineering Contradiction:
Improvecode integrity verificationVSAvoidvulnerability to MMU attacks
Core Design Contradiction:
ReliabilityVSObject-affected harmful factors

Solution Approach 1:

The patent creates a copy of the code in a separate memory location that is used for execution while the original code remains for integrity checking. This separation ensures that the checksumming process always operates on the unmodified original code, preventing MMU attacks from succeeding.

Inventive Principle:
Principle #26Copying

Solution Approach 2:

The patent divides the code into two separate memory locations: one for execution and one for integrity verification. By segmenting the code storage, the system can independently manage the execution copy and the checking copy, ensuring that modifications to the execution copy do not affect the integrity verification process.

Inventive Principle:
Principle #1Segmentation

2Adaptability or versatility

If the program executes code from memory locations that may be modified, then execution flexibility is achieved, but detection of code tampering becomes impossible

Engineering Contradiction:
Improvecode execution flexibilityVSAvoidcode tampering detection
Core Design Contradiction:
Adaptability or versatilityVSDifficulty of detecting and measuring

Solution Approach 1:

The patent introduces an intermediary integrity checking mechanism that independently verifies the code before execution. This intermediary layer detects tampering by comparing the executed code against a known good version, making tamper detection possible even when code execution flexibility is maintained.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent implements a feedback mechanism where the integrity checking system continuously monitors and verifies the code execution process. When tampering is detected, the system provides feedback to halt execution or alert the user, enabling detection of code tampering while maintaining execution flexibility.

Inventive Principle:
Principle #23Feedback

3Reliability

If repair probes are injected to replace incorrect code sections, then code correctness is restored, but the program complexity increases

Engineering Contradiction:
Improvecode correctnessVSAvoidprogram structure complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent performs preliminary actions by pre-calculating and storing the correct code sections before they are needed during execution. When code tampering is detected, the system can immediately replace the corrupted sections with the pre-prepared correct versions, restoring correctness without requiring complex runtime analysis.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent implements self-service by enabling the system to automatically detect and repair its own code tampering issues. The integrity checking mechanism identifies corrupted sections and triggers automatic replacement with correct versions, reducing the need for external intervention and simplifying the overall system architecture.

Inventive Principle:
Principle #25Self-service

Data Source

PatentUS10803151B2Method of protecting computer program code
Publication Date: 2020.10.13 GUARDSQUARE NV
  • US10803151B2 patent drawing
  • US10803151B2 patent drawing
  • US10803151B2 patent drawing

AI summary

In a general aspect, a computer implemented method can include identifying, in a program code stored in computer memory, a location of a dynamic repair target code section for an assignment to a program variable, a value of which is known only at runtime. The method can also include modifying the program code at the identified location of the dynamic repair target code section to assign an immediate value different from a correct runtime value to the program variable. The method can further include inserting, into the program code in the computer memory, a dynamic repair probe code section that is executed before the dynamic repair target code and, at runtime, modifies the immediate value in the code to contain the correct runtime value when an attack has not occurred.