Guard Regions for Memory Corruption Protection
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Conventional techniques lack an efficient and robust system for detecting and handling memory-corruption vulnerabilities in software, which can lead to dangerous consequences such as corruption of in-memory data.
Innovation Solution
The implementation of guard regions in memory, with bipartite guards and guard maps, to track and prevent disallowed memory accesses, ensuring the application program does not exploit these vulnerabilities by modifying its execution to prevent memory corruption.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If conventional techniques are used for detecting and handling software vulnerabilities, then the system is simpler to implement, but the system lacks robustness and efficiency in detecting and handling memory-corruption vulnerabilities
Solution Approach 1:
The memory is segmented into data regions and guard regions, with each guard region containing guard values. This segmentation allows the system to detect memory-corruption vulnerabilities by checking whether accessed memory locations contain guard values, thereby improving reliability without requiring a completely new detection architecture.
Solution Approach 2:
Guard regions act as intermediaries between valid data regions and invalid memory areas. These guard regions contain distinctive guard values that serve as markers to detect unauthorized or erroneous memory accesses, enabling robust vulnerability detection while maintaining a relatively simple system structure.
2Measurement precision
If guard regions with bipartite guards are implemented to track memory accesses, then the system achieves high precision in detecting disallowed accesses, but the device complexity increases
Solution Approach 1:
Different parts of the memory system are assigned different qualities: data regions contain valid data, guard regions contain guard values, and the system uses different detection mechanisms for different types of memory accesses. This local differentiation enables precise detection of disallowed accesses while keeping the overall system manageable through localized rather than universal complexity.
Solution Approach 2:
The system uses distinctive guard values (analogous to color changes) to mark guard regions. By checking whether accessed memory locations contain these distinctive markers, the system achieves high precision in detecting unauthorized accesses. The use of specific marker values makes detection straightforward despite the added structural complexity.
3Reliability
If the system modifies execution to prevent exploitation of memory vulnerabilities, then the security against memory-corruption vulnerabilities is improved, but the execution speed may be reduced
Solution Approach 1:
The system performs preliminary actions by pre-establishing guard regions with guard values before the application program executes. This allows the detection mechanism to be already in place, enabling the system to detect and prevent memory-corruption vulnerabilities during normal execution without requiring extensive runtime modifications or slow post-hoc analysis.
Solution Approach 2:
The guard region detection system operates autonomously to detect and prevent memory vulnerabilities. When a disallowed access is detected, the system automatically modifies execution to prevent exploitation without requiring external intervention or complex runtime decision-making processes, thereby maintaining execution speed while improving security.
Data Source
AI summary
Certain example embodiments described herein relate to techniques for automatically protecting, or hardening, software against exploits of memory-corruption vulnerabilities. The techniques include arranging a plurality of guard regions in the memory in relation to data objects formed by the application program, identifying an access by the application program to a guard region arranged in the memory as a disallowed access, and modifying the execution of the application program in response to the identifying, the modifying being in order to prevent exploitation of the memory and/or to correctly execute the application program.


