Corralled Control Flow Integrity via Wrapper Functions

Resolve Bottlenecks,
Find Innovative Solutions
Generate 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

VSEngineering 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

Engineering Contradiction:
Improvecontrol flow flexibilityVSAvoidsecurity
Core Design Contradiction:
Adaptability or versatilityVSReliability

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.

Inventive Principle:
Principle #24Intermediary (Mediator)

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

Engineering Contradiction:
ImprovesecurityVSAvoidsystem complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

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.

Inventive Principle:
Principle #10Preliminary action

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

Engineering Contradiction:
ImprovesecurityVSAvoidexecution time
Core Design Contradiction:
ReliabilityVSLoss of time

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.

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

Data Source

PatentUS20240403411A1Methods For Improving Security In Computing Devices Implementing Control Flow Integrity
Publication Date: 2024.12.05 QUALCOMM INC
  • US20240403411A1 patent drawing
  • US20240403411A1 patent drawing
  • US20240403411A1 patent drawing

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.