Methods, devices, and systems for detecting return oriented programming exploits
First Claim
1. A method, comprising:
- executing a sequence of code snippets in a processing circuit, each code snippet including at least one executable instruction including a control transfer instruction, wherein one or more of the code snippets includes a modified control transfer instruction different from an unmodified control transfer instruction and at least one code snippet of the sequence is a non-cached code snippet not found in a cache memory;
detecting one or more instruction fetch cache misses in response to instruction fetches performed during execution of the sequence of code snippets, where an individual instruction fetch cache miss represents a fetched instruction absent from the cache memory for a corresponding instruction fetch of an executable code sequence;
developing an instruction loading profile by monitoring instruction fetches relative to instruction fetch cache misses; and
controlling an execution of at least one instruction based on the instruction loading profile.
1 Assignment
0 Petitions
Accused Products
Abstract
Methods, devices, and systems for detecting return-oriented programming (ROP) exploits are disclosed. A system includes a processor, a main memory, and a cache memory. A cache monitor develops an instruction loading profile by monitoring accesses to cached instructions found in the cache memory and misses to instructions not currently in the cache memory. A remedial action unit terminates execution of one or more of the valid code sequences if the instruction loading profile is indicative of execution of an ROP exploit involving one or more valid code sequences. The instruction loading profile may be a hit/miss ratio derived from monitoring cache hits relative to cache misses. The ROP exploits may include code snippets that each include an executable instruction and a return instruction from valid code sequences.
22 Citations
20 Claims
-
1. A method, comprising:
-
executing a sequence of code snippets in a processing circuit, each code snippet including at least one executable instruction including a control transfer instruction, wherein one or more of the code snippets includes a modified control transfer instruction different from an unmodified control transfer instruction and at least one code snippet of the sequence is a non-cached code snippet not found in a cache memory; detecting one or more instruction fetch cache misses in response to instruction fetches performed during execution of the sequence of code snippets, where an individual instruction fetch cache miss represents a fetched instruction absent from the cache memory for a corresponding instruction fetch of an executable code sequence; developing an instruction loading profile by monitoring instruction fetches relative to instruction fetch cache misses; and controlling an execution of at least one instruction based on the instruction loading profile. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A processing device, comprising:
-
a processing circuit configured to fetch and execute executable code sequences, the executable code sequences including a sequence of code snippets, each code snippet including at least one executable instruction including a control transfer instruction, wherein one or more of the code snippets includes a modified control transfer instruction different from an unmodified control transfer instruction; a cache memory system operably coupled to the processing circuit and including a cache memory wherein at least one code snippet of the sequence is a non-cached code snippet not found in the cache memory; a cache monitor configured to detect one or more instruction fetch cache misses in response to instruction fetches performed during execution of the sequence of code snippets, where an individual instruction fetch cache miss represents a fetched instruction absent from the cache memory for a corresponding instruction fetch of an executable code sequence, the cache monitor further configured to develop an instruction loading profile by monitoring the instruction fetches relative to instruction fetch cache misses; and a remedial action unit configured to control an execution of at least one instruction based on the instruction loading profile. - View Dependent Claims (8, 9, 10, 11, 12, 13)
-
-
14. A processing device, comprising:
-
means for executing a sequence of code snippets in a processing circuit, each code snippet including at least one executable instruction including a control transfer instruction, wherein one or more of the code snippets includes a modified control transfer instruction different from an unmodified control transfer instruction and at least one code snippet of the sequence is a non-cached code snippet not found in a cache memory; means for detecting one or more instruction fetch cache misses in response to instruction fetches performed during execution of the sequence of code snippets, where an individual instruction fetch cache miss represents a fetched instruction absent from the cache memory for a corresponding instruction fetch of an executable code sequence; and means for developing an instruction loading profile by monitoring instruction fetches relative to instruction fetch cache misses; and means for controlling an execution of at least one instruction based on the instruction loading profile. - View Dependent Claims (15, 16, 17)
-
-
18. A non-transitory machine-readable medium having instructions stored thereon, which when executed by a processing circuit cause the processing circuit to:
-
execute a sequence of code snippets, each code snippet including at least one executable instruction including a control transfer instruction, wherein one or more of the code snippets includes a modified control transfer instruction different from an unmodified control transfer instruction and at least one code snippet of the sequence is a non-cached code snippet not found in a cache memory; detect one or more instruction fetch cache misses in response to instruction fetches performed during execution of the sequence of code snippets, where an individual instruction fetch cache miss represents a fetched instruction absent from the cache memory for a corresponding instruction fetch of an executable code sequence; and develop an instruction loading profile by monitoring instruction fetches relative to instruction fetch cache misses; and control an execution of at least one instruction based on the instruction loading profile. - View Dependent Claims (19, 20)
-
Specification