IP Library › Granted Patent US 11,327,755
Granted Patent B2
US 11,327,755 · App. 16/946,545 · Granted May 10, 2022

Fine grained control flow enforcement to mitigate malicious call/jump oriented programming

Inventors: Kekai Hu (Portland, OR); Ke Sun (Portland, OR); Rodrigo Branco (Hillsboro, OR)
Assignee: Intel Corporation
G06F9/30058G06F9/30079G06F9/30185G06F9/35G06F9/384
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,327,755
App. No.
16/946,545
Granted
May 10, 2022
Kind
B2
Abstract

In one embodiment, a processor comprises a decoder to decode a first instruction, the first instruction comprising an opcode and at least one parameter, the opcode to identify the first instruction as an instruction associated with an indirect branch, the at least one parameter indicative of whether the indirect branch is allowed; and circuitry to generate an error message based on the at least one parameter.

Claims (43)

1. A processor comprising:

a decoder to decode a first instruction, the first instruction comprising an opcode and at least one parameter, the opcode to identify the first instruction as an instruction associated with an indirect branch, the at least one parameter comprising information associated with a hash of a source instruction authorized for the indirect branch; and

circuitry to generate an error message based on the at least one parameter in the event of an unauthorized indirect branch.

2. The processor of claim 1 , wherein the at least one parameter comprises a set of bits that each correspond to a distinct hash value.

3. The processor of claim 2 , wherein the at least one parameter comprises 16 bits, wherein each bit of the 16 bits corresponds to a distinct value of a 4-bit output of a hash function.

4. The processor of claim 1 , wherein the circuitry is to:

hash a second instruction to generate a first hash value;

determine a bit of the at least one parameter that corresponds to the first hash value; and

generate the error message based on a value of the bit.

5. The processor of claim 1 , wherein:

the decoder is to decode a second instruction, the second instruction comprising a second opcode, the second opcode to identify the first instruction as an instruction associated with a second indirect branch, the second instruction not comprising information associated with a hash of a source instruction authorized for the second indirect branch; and

the circuitry to allow the second indirect branch based on the second opcode.

6. The processor of claim 1 , wherein a first portion of the opcode identifies the first instruction as an endbranch instruction and a second portion of the opcode distinguishes between a 32-bit mode and a 64-bit mode of the processor.

7. The processor of claim 1 , wherein the processor is communicatively coupled to at least one of a battery, a display, or a network interface.

8. A system comprising:

a system memory to store a first instruction, the first instruction comprising an opcode and at least one parameter, the opcode to identify the first instruction as an instruction associated with an indirect branch, the at least one parameter comprising information associated with a hash of a source instruction authorized for the indirect branch; and

a processor coupled to the system memory, the processor comprising:

a decoder to decode the first instruction; and

circuitry to generate an error message based on the at least one parameter in the event of an unauthorized indirect branch.

9. The system of claim 8 , further comprising a memory controller to request the first instruction from the system memory.

10. The system of claim 8 , further comprising a network interface controller to receive the first instruction over a network.

11. The system of claim 8 , further comprising:

a network interface controller to receive software code; and

a compiler to compile the software code to generate the first instruction.

12. The system of claim 8 , wherein the at least one parameter comprises a set of bits that each correspond to a distinct hash value.

13. The system of claim 8 , wherein the circuitry is to:

hash a second instruction to generate a first hash value;

determine a bit of the at least one parameter that corresponds to the first hash value; and

generate the error message based on a value of the bit.

14. A non-transitory machine readable storage medium having instructions stored thereon, the instructions when executed by a machine to cause the machine to:

generate a first instruction to specify an indirect branch; and

generate a second instruction to be the target of the indirect branch, the second instruction comprising an opcode and at least one parameter, the opcode to identify the second instruction as a target of an indirect branch, the at least one parameter comprising information associated with a hash of the first instruction.

15. The medium of claim 14 , the instructions when executed by a machine to cause the machine to:

calculate a hash of the first instruction; and

set a bit of the at least one parameter of the second instruction, the bit corresponding to the calculated hash.

16. The medium of claim 14 , the instructions when executed by a machine to cause the machine to:

generate a third instruction to specify a second indirect branch, wherein the second instruction is the target of the second indirect branch and the at least one parameter comprises information associated with a hash of the third instruction.

17. The medium of claim 14 , wherein the at least one parameter comprises a set of bits that each correspond to a distinct hash value.

18. The medium of claim 17 , wherein the at least one parameter comprises 16 bits, wherein each bit of the 16 bits corresponds to a distinct value of a 4-bit output of a hash function.

19. The medium of claim 14 , wherein a first portion of the opcode identifies the first instruction as an endbranch instruction.

20. The medium of claim 14 , the instructions when executed by a machine to cause the machine to:

generate a third instruction to specify a second indirect branch; and

responsive to determining that the second indirect branch is an inter-module indirect branch, generate a fourth instruction to be the target of the second indirect branch, the second instruction comprising an opcode, the second instruction not including information associated with a hash of the first instruction.

Continuity (2)
Continuation 15858479 · Dec 29, 2017
Related Publication 20200326945A1 · Oct 15, 2020