Phantom Name System for Code-Reuse Attack Mitigation
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Current mitigation techniques against code-reuse attacks, such as ROP, JOP, and COP, suffer from significant performance and energy overheads, especially in embedded systems, and are not effective in preventing attacks that exploit memory corruption vulnerabilities.
Innovation Solution
The implementation of a Phantom Name System (PNS) that assigns multiple virtual addresses or names to each instruction or block of instructions, randomly selecting one for execution, thereby making it difficult for attackers to successfully execute code-reuse attacks without causing program crashes, which can be used as a standalone solution or combined with other hardening mechanisms.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If address space layout randomization (ASLR) is used to mitigate code-reuse attacks, then security against ROP/JOP/COP attacks is improved, but attackers can still exploit memory corruption vulnerabilities to disclose code layout and rewrite payloads accordingly, and current mitigation techniques suffer from significant performance and energy overheads
Solution Approach 1:
The patent implements dynamic address assignment where each instruction or basic block is assigned multiple virtual addresses (phantom addresses) that change over time. During execution, a random phantom address is selected for each instruction fetch, making the target addresses of control flow instructions unpredictable. This dynamic addressing scheme thwarts code-reuse attacks while maintaining minimal performance overhead since the phantom address selection is integrated into the normal instruction fetch process without requiring additional mitigation steps.
Solution Approach 2:
The patent changes the addressing parameter by introducing phantom addresses as an additional layer of indirection between the physical instruction location and the virtual address used for execution. Instead of using a single fixed or randomized base address (as in ASLR), the system uses multiple phantom addresses per instruction that are selected randomly at runtime. This parameter change creates exponential complexity for attackers who would need to guess not just the base address but also the specific phantom address for each instruction in the attack chain.
2Reliability
If multiple virtual addresses are assigned to each instruction for phantom addressing, then security against code-reuse attacks is significantly improved, but hardware complexity increases due to the need for additional address mapping and selection mechanisms
Solution Approach 1:
The patent makes the existing program counter (PC) and address generation logic multi-functional by enabling it to handle both normal sequential execution addresses and phantom addresses for security. The same PC increment logic and address calculation units used for standard instruction fetching are also used to generate and select phantom addresses, eliminating the need for separate dedicated hardware structures for address management. This universal use of existing components minimizes hardware complexity while implementing the phantom addressing scheme.
Solution Approach 2:
The system uses its own existing address generation and selection mechanisms to create and manage phantom addresses, rather than requiring external or separate hardware components. The random number generator and address calculation logic that already exist in the processor are repurposed to generate phantom addresses, and the normal address translation and selection infrastructure serves dual purposes for both standard execution and security-hardened execution. This self-service approach avoids adding significant hardware complexity.
Data Source
AI summary
Disclosed are methods, systems, devices, media, circuits, and other implementations, including a method that includes generating for a code block of a process executing on a controller-based device one or more code block copies defined in a virtual address space of the controller-based device, with the code block of the process being stored in a particular segment of a physical address space of the controller-based device, and with the code block configured to separately map to each of the one or more of the code block copies in the virtual address space. The method further includes processing at least a portion of one of the one or more code block copies defined in the virtual address space when the corresponding code block of the process is to be processed.


