Corralled Control Flow Integrity via Wrapper Functions
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Control flow integrity in computing devices, particularly through indirect call flows, is vulnerable to attacks that manipulate memory addresses, leading to unauthorized execution paths.
Innovation Solution
Implementing a corralled control flow integrity system by replacing indirect function calls with wrapper functions that determine whether memory addresses are within valid ranges, using techniques such as bloom filters and hardware bits to validate addresses, thereby preventing unauthorized jumps.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Adaptability or versatility
If indirect function calls use configurable memory addresses to branch to targeted information, then the system achieves flexibility in control flow, but the system becomes vulnerable to attacks by changing the configurable memory addresses to branch to other information
Solution Approach 1:
The patent introduces a wrapper function as an intermediary between the indirect function call and the actual function execution. This wrapper function validates the target address against a predefined set of acceptable addresses (stored in a table or data structure), allowing legitimate indirect calls while blocking malicious ones. The intermediary checks whether the target address matches any entry in the acceptable addresses table before permitting the jump, thus maintaining control flow flexibility while ensuring security.
2Reliability
If the system implements address validation to prevent unauthorized jumps, then security is improved, but the complexity of the system increases due to additional validation mechanisms
Solution Approach 1:
The patent implements preliminary action by pre-computing and storing the set of acceptable function addresses in a table during program compilation or initialization. This table of acceptable addresses is prepared in advance, allowing the runtime validation to simply compare the indirect call target against this pre-prepared list rather than performing complex analysis at call time. The wrapper function checks whether the target address exists in this pre-computed table, significantly reducing the computational complexity of runtime validation.
3Reliability
If the system uses wrapper functions to validate addresses, then unauthorized jumps are prevented, but the execution time increases due to additional validation steps
Solution Approach 1:
The patent replaces complex runtime address validation mechanics with a simpler lookup operation. Instead of performing intricate checks to verify whether an indirect call target is legitimate, the system uses the wrapper function to perform a direct table lookup of the target address against the pre-computed acceptable addresses table. This substitution of complex validation mechanics with a simple existence check in a data structure significantly reduces the time overhead of address validation while maintaining security.
Data Source
AI summary
Various embodiments include methods and devices for maintaining control flow integrity in computing devices. Embodiments may include identifying indirect function call candidate functions from a source code by a compiler, replacing, by the compiler, an indirect function call from the source code with a call to a wrapper function, and collocating the indirect function call candidate functions in at least one range of addresses of memory by a linker. The wrapper function may be configured to determine whether an address to be passed to the indirect function call is within the at least one range of addresses of memory.


