Program Generation With Selective CFI for Lower Execution Overhead
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing buffer overflow attack countermeasures, such as Control Flow Integrity (CFI), face challenges like increased execution overhead and implementation difficulties on low-performance processors, and do not effectively align with the importance of functions or execution environments.
Innovation Solution
A program generation method that identifies functions with high tampering likelihood and determines the scope of CFI application based on control flow type, inserting processing instructions to execute the control flow correctly and minimize overhead.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If CFI is applied to all functions in the program, then security against buffer overflow attacks is improved, but execution overhead increases and processor performance deteriorates
Solution Approach 1:
The patent applies CFI selectively to specific functions identified as having high tampering likelihood based on control flow analysis, rather than uniformly to all functions. This localized approach concentrates security resources on critical paths while leaving less sensitive functions unprotected, thereby reducing overall execution overhead while maintaining security where most needed.
Solution Approach 2:
The patent segments the program into different control flow types (forward edge and backward edge) and applies CFI differently to each segment. Forward edge control flows receive one type of CFI protection while backward edge control flows receive another type, allowing optimization of protection strategies for different execution paths and reducing unnecessary overhead in less critical segments.
2Reliability
If CFI is applied to all functions in the program, then security against buffer overflow attacks is improved, but device complexity increases
Solution Approach 1:
The patent implements CFI with different levels of complexity tailored to specific control flow types. Forward edge control flows use simpler verification mechanisms while backward edge control flows use more sophisticated techniques, allowing the system to achieve comprehensive security without uniformly high complexity across all functions.
Solution Approach 2:
The patent divides the CFI implementation into distinct segments based on control flow type, with separate handling for forward edge and backward edge cases. This segmentation allows each segment to be optimized independently, reducing overall implementation complexity by avoiding the need to apply the most complex solution uniformly throughout the entire program.
3Reliability
If CFI scope is expanded to protect more functions, then security is improved, but execution time increases
Solution Approach 1:
The patent identifies and protects only those functions with high tampering likelihood based on control flow analysis, rather than expanding CFI to all functions. This targeted approach achieves adequate security coverage by focusing on critical functions while avoiding the time overhead of protecting less vulnerable functions.
Solution Approach 2:
The patent applies CFI partially to only the necessary control flow paths (forward and backward edges with high tampering likelihood) rather than excessively applying it to all possible functions. This partial application achieves sufficient security coverage while minimizing execution time loss.
Data Source
AI summary
A program generation method includes acquiring a program, extracting functions within program code included in the program and a control flow, which is a call/return relationship of the functions, identifying a first function among the functions that has a high tampering likelihood in the control flow, identifying a second function among the functions that is reachable to the first function, determining a scope of application of control flow integrity (CFI) including the first function and the second function according to a type of the control flow, and inserting a processing instruction into the program code to execute the control flow correctly within the scope of application.


