Capability-Based Forward-Edge Control-Flow Integrity Circuitry

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current Instruction Set Architectures (ISAs) lack effective solutions for comprehensive control-flow integrity and memory safety, particularly in preventing memory corruption and ensuring correct function calls, leading to vulnerabilities in foundational software layers like operating systems and web browsers.

Innovation Solution

The implementation of capability-based instructions and a capability management circuit that enforce forward-edge control-flow integrity (FECFI) by using capabilities to authorize memory accesses and enforce fine-grained access control, ensuring that only valid capabilities can access protected memory locations, thereby preventing out-of-bound accesses and dangling pointers.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If capability-based instructions are implemented to enforce forward-edge control-flow integrity, then security against memory corruption is improved, but device complexity increases

Engineering Contradiction:
Improvesecurity against memory corruptionVSAvoidprocessor complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The capability structure is segmented into distinct fields: address field for memory location, bounds field for access limits, and validity tag field for authorization. This segmentation allows the processor to enforce control-flow integrity through structured, modular capability checks rather than monolithic security logic, improving reliability while managing complexity through organized data structures.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Capabilities serve as intermediary tokens that mediate between the processor and memory access requests. Instead of direct memory access control, the system uses capability structures as intermediaries that encode authorization information, enabling fine-grained access control and control-flow integrity enforcement without requiring complex hardwired security circuits in the processor.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If fine-grained access control is enforced through capability checks, then memory safety is improved, but processing speed deteriorates

Engineering Contradiction:
Improvememory safetyVSAvoidprocessing speed
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

Authorization information is prepared in advance and embedded within capability structures before memory access occurs. The validity tag and bounds are pre-computed and stored in the capability, allowing the processor to perform rapid validation checks during execution rather than computing access permissions in real-time, thus maintaining memory safety while minimizing processing overhead.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The capability structure merges multiple security attributes (address, bounds, validity tag) into a single unified data structure that can be processed in one operation. By combining authorization checks and address validation into a single capability verification step, the system enforces memory safety without requiring multiple separate processing stages, thereby maintaining processing speed.

Inventive Principle:
Principle #5Merging (Combining)

Data Source

PatentUS20240330000A1Circuitry and methods for implementing forward-edge control-flow integrity (FECFI) using one or more capability-based instructions
Publication Date: 2024.10.03 INTEL CORP
  • US20240330000A1 patent drawing
  • US20240330000A1 patent drawing
  • US20240330000A1 patent drawing

AI summary

Techniques for implementing forward-edge control-flow integrity (FECFI) using capability instructions in a hardware processor are described. In certain examples, a hardware processor (e.g., core) includes a capability management circuit to check a capability for a memory access request for a memory, the capability comprising an address field and a bounds field that is to indicate a lower bound and an upper bound of an address space to which the capability authorizes access; a decoder circuit to decode a single instruction into a decoded single instruction, the single instruction comprising: a first capability to indicate a first call table comprising a respective entry for each of a plurality of functions of a first type, a field to indicate a first offset of a first entry for a first function requested for execution, and an opcode to indicate the capability management circuit is to perform a first check that the first offset is within a lower bound and an upper bound of the first capability and a second check that the first offset is a permitted offset for the entries in the first call table, and in response to the first check and the second check both passing, cause an execution circuit to execute the first function; and the execution circuit to execute the decoded single instruction according to the opcode.