IP Library Granted Patent US 11,556,645
Granted Patent B2
US 11,556,645 · App. 16/077,688 · Granted Jan 17, 2023

Monitoring control-flow integrity

Inventors: Ronny Chevalier (Meudon, FR); Guillaume Hiet (Cesson-Sevigne, FR); Maugan Villatel (Bristol, GB); David Plaquin (Bristol, GB)
Assignee: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
G06F21/566G06F17/18G06F21/554G06F21/563
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,556,645
App. No.
16/077,688
Granted
Jan 17, 2023
Kind
B2
Abstract

A method for monitoring control-flow integrity in a low-level execution environment, the method comprising receiving, at a monitor, a message from the execution environment indicating that the execution environment has entered a controlled mode of operation, receiving, at the monitor, a data packet representing execution of a selected portion of a control-flow process at the execution environment, identifying, using the data packet, a pathway corresponding to the selected portion of the control-flow process from a set of permissible control-flow pathways and determining whether the identified pathway corresponds to an expected control-flow behaviour.

Claims (58)

1. A method for monitoring control-flow integrity in a low-level execution environment in a system, the method comprising:

during compilation of target instructions to be executed;

deriving an expected control-flow behavior that comprises generating a graph that represents a set of permissible control-flow pathways executable by the low-level execution environment;

adding information sending instructions to the target instructions, to produce modified target instructions;

at boot time of the system, sending, by a Basic Input/Output System (BIOS) to a monitor, the graph;

at runtime of the system:

receiving, at the monitor, a message from the modified target instructions executing in the low-level execution environment, the message indicating that the low-level execution environment has entered a System Management Mode (SMM);

receiving, at the monitor, a data packet representing execution of a selected portion of a control-flow process at the low-level execution environment in the SMM, the data packet pushed into a queue by a target that executes the control-flow process, wherein a concurrent access of the queue is not performed in the SMM, and the target has exclusive access of the queue in the SMM;

identifying, using the data packet, a pathway corresponding to the selected portion of the control-flow process from the set of permissible control-flow pathways; and

determining whether the identified pathway corresponds to the expected control-flow behavior, based on comparing information derived from the data packet to the graph.

2. The method of claim 1 , wherein the adding of the information sending instructions to the target instructions comprises modifying the target instructions in binary form.

3. The method of claim 1 , wherein the adding of the information sending instructions to the target instructions comprises modifying the target instructions in source form.

4. The method of claim 1 , further comprising:

instrumenting a set of instructions for execution in the SMM; and

executing first and second instrumentation passes of the set of instructions to respectively administer backward-edge and forward-edge control-flow integrity.

5. The method of claim 1 , wherein the compilation of the target instructions is performed by a compiler that adds the information sending instructions to the target instructions.

6. A non-transitory machine-readable storage medium encoded with machine-readable instructions executable on a processor, the machine-readable instructions upon execution causing a system to:

during compilation of target instructions to be executed:

derive an expected control-flow behavior that comprises generating a graph that represents a set of permissible control-flow pathways executable by a low-level execution environment of the system;

add information sending instructions to the target instructions, to produce modified target instructions;

at boot time of the system, send the graph from a Basic Input/Output System (BIOS) to a monitor;

at runtime of the system:

receive, at the monitor, a message from the modified target instructions executing in the low-level execution environment, the message indicating that the low-level execution environment has entered a System Management Mode (SMM);

receive, at the monitor, a data packet representing execution of a selected portion of a control-flow process at the low-level execution environment in the SMM, the data packet pushed into a queue by a target that executes the control-flow process, wherein the data packet cannot be modified after being pushed into the queue, a concurrent access of the queue is not performed in the SMM, and the target has exclusive access of the queue in the SMM;

identify, using the data packet, a pathway corresponding to the selected portion of the control-flow process from the set of permissible control-flow pathways; and

determine whether the identified pathway corresponds to the expected control-flow behavior, based on comparing information derived from the data packet to the graph.

7. The non-transitory machine-readable storage medium of claim 6 , wherein the machine-readable instructions upon execution cause the system to detect a compromise in the low-level execution environment by determining a presence of a discrepancy between the expected control-flow behavior and a monitored control-flow behavior.

8. The non-transitory machine-readable storage medium of claim 6 , wherein the machine-readable instructions upon execution cause the system to:

receive, at the monitor during the boot time of the system, expected location information of a System Management RAM (SMRAM);

receive, at the monitor in association with a System Management Interrupt (SMI), location information of the SMRAM; and

compare, by the monitor, the location information of the SMRAM to the expected location information of the SMRAM received by the monitor during the boot time of the system, to detect malicious modification of the location information of the SMRAM.

9. The non-transitory machine-readable storage medium of claim 6 , wherein the low-level execution environment comprises a hypervisor.

10. The non-transitory machine-readable storage medium of claim 6 , wherein the machine-readable instructions upon execution cause the system to compare a return address of a function call when the target enters a function and a return address when the target leaves the function to determine whether there is a tampering of a return address on a system stack.

11. The non-transitory machine-readable storage medium of claim 10 , wherein the machine-readable instructions upon execution cause the system to:

receive a message before an indirect call containing an address of the function being called; and

verify that the address of the function being called corresponds to a valid function and has a type consistent with the expected control-flow behavior.

12. A system comprising:

a processor;

a non-transitory storage medium storing instructions executable on the processor to:

during compilation of target instructions to be executed:

derive an expected control-flow behavior that comprises generating a graph that represents a set of permissible control-flow pathways executable by a low-level execution environment of the system;

add, information sending instructions to the target instructions, to produce modified target instructions;

at boot time of the system, send the graph from a Basic Input/Output System (BIOS) to a monitor;

at runtime of the system:

receive, at the monitor, a message from the modified target instructions executing in the low-level execution environment, the message indicating that the low-level execution environment has entered a System Management Mode (SMM);

receive, at the monitor, a data packet representing execution of a selected portion of a control-flow process at the low-level execution environment in the SMM, the data packet pushed into a queue by a target that executes the control-flow process, wherein a concurrent access of the queue is not performed in the SMM, and the target has exclusive access of the queue in the SMM;

identify, using the data packet, a pathway corresponding to the selected portion of the control-flow process from the set of permissible control-flow pathways; and

determine whether the identified pathway corresponds to the expected control-flow behavior, based on comparing information derived from the data packet to the graph.

13. The system of claim 12 , wherein the low-level execution environment comprises a hypervisor.

14. The method of claim 1 , wherein the low-level execution environment comprises a hypervisor.

15. The method of claim 1 , further comprising:

receiving, at the monitor during the boot time of the system, expected location information of a System Management RAM (SMRAM);

receiving, at the monitor in association with a System Management Interrupt (SMI), location information of the SMRAM; and

comparing, by the monitor, the location information of the SMRAM to the expected location information of the SMRAM received by the monitor during the boot time of the system, to detect malicious modification of the location information of the SMRAM.

16. The system of claim 12 , wherein the instructions are executable on the processor to:

receive, at the monitor during the boot time of the system, an expected location information of a System Management RAM (SMRAM);

receive, at the monitor in association with a System Management Interrupt (SMI), location information of the SMRAM; and

compare, by the monitor, the location information of the SMRAM to the expected location information of the SMRAM received by the monitor during the boot time of the system, to detect malicious modification of the location information of the SMRAM.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 6, 2019
From: HIET, GUILLAUME
To: CENTRALE SUPELEC
Reel/Frame 048250/0189 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 6, 2019
From: CENTRALE SUPELEC
To: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
Reel/Frame 048250/0256 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 29, 2018
From: PLAQUIN, DAVID; HIET, GUILLAUME; VILLATEL, MAUGAN; CHEVALIER, RONNY
To: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
Reel/Frame 047335/0706 →
Priority Claims (1)
EP 17305674 · Jun 7, 2017 · regional
Continuity (1)
Related Publication 20210182393A1 · Jun 17, 2021