Return oriented programming (ROP) attack protection

US9646154B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9646154-B2
Application numberUS-201514601122-A
CountryUS
Kind codeB2
Filing dateJan 20, 2015
Priority dateDec 12, 2014
Publication dateMay 9, 2017
Grant dateMay 9, 2017

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

Return oriented programming (ROP) attack prevention techniques are described. In one or more examples, a method is described of protecting against return oriented programming attacks. The method includes initiating a compute signature hardware instruction of a computing device to compute a signature for a return address and the associated location on the stack the return address is stored and causing storage of the computed signature along with the return address in the stack. The method also includes enforcing that before executing the return instruction using the return address on the stack, initiating a verify signature hardware instruction of the computing device to verify the signature matches the target return address on the stack and responding to successful verification of the signature through execution of the verify signature hardware instruction by the computing device, executing the return instruction to the return address.

First claim

Opening claim text (preview).

What is claimed is: 1. A method of protecting against return oriented programming attacks, the method comprising: initiating a compute signature hardware instruction of a computing device to compute a signature for a return address and an associated location on a stack at which the return address is stored, wherein the signature is computed using a one-time pad that is combined with a hash of the return address and the return address position of the return address in the stack, and wherein the one time pad value is stored in at least two separate hardware caches, one cache for use during compute signature as a call cache and one cache for use during verify signature as a return cache; enforcing that before executing the return instruction using the return address on the stack, initiating a verify signature hardware instruction of the computing device to verify the signature matches the target return address; and responding to successful verification of the signature through execution of the verify signature hardware instruction by the computing device, executing the return instruction to the return address. 2. A method as described in claim 1 , wherein the signature is utilized to sign the return address and a combination of the return address and the associated location. 3. A method as described in claim 1 , further comprising responding to unsuccessful verification of the signature through execution of the hardware instruction by the computing device by blocking execution of the return instruction to the return address. 4. A method as described in claim 1 , wherein the compute signature hardware instruction causes the signature to be computed using a secure keyed MAC algorithm where a cryptographic key is randomly generated per boot and stored in hardware of the computing device and not exposed to software executed by the computing device. 5. A method as described in claim 1 , wherein the hash is universal hash and the combination is formed using an exclusive OR (XOR) operation. 6. A method as described in claim 1 , wherein the one-time pad is generated using a counter value and a block cipher operating in counter mode using the counter value as input. 7. A method as described in claim 6 , wherein the block cipher is based on the Advanced Encryption Standard (AES). 8. A method as described in claim 6 , wherein the counter value is included as a portion of the signature. 9. A method as described in claim 1 , wherein entries in the call cache are moved to the return cache upon successful usage to compute the signature. 10. A method as described in claim 1 , wherein entries in the return cache are removed upon successful usage to verify the signature. 11. A method as described in claim 1 , wherein the call cache is a LIFO queue and the return cache is a FIFO stack. 12. A computing device configured to protect against return oriented programming (ROP) attacks, the computing device comprising: a processing system having hardware configured to execute instructions stored in memory and having hardware configured to perform: a compute signature hardware instruction to compute a signature for a return address and an associated location on a stack at which the return address is stored, wherein the signature is computed using a one-time pad that is combined with a hash of the return address and the return address position of the return address in the stack, and wherein the one time pad value is stored in at least two separate hardware caches, one cache for use during compute signature as a call cache and one cache for use during verify signature as a return cache; and a verify signature hardware instruction to verify the signature; and the memory configured to maintain an operating system that is executable by the processing system as the instructions, the operating system configured to protect against return oriented programming (ROP) attacks through functionality to initiate the compute signature hardware instruction to compute the signature for the return address and the associated location on the stack the return address is stored and initiate the verify signature hardware instruction to verify the signature before executing the return instruction using the return address on the stack. 13. A computing device as described in claim 12 , wherein the compute signature hardware instruction causes the signature to be computed using a secure keyed MAC algorithm where a cryptographic key is randomly generated per boot and stored in hardware of the computing device and not exposed to software executed by the computing device. 14. A computing device as described in claim 12 , wherein the signature is computed using the one-time pad value that is combined with a hash of the return address and the return address position of the return address in the stack. 15. One or more computer-readable storage devices having instructions stored thereon that, responsive to execution by one or more computing devices, causes the one or more computing devices to: initiate a compute signature hardware instruction of a computing device to compute a signature for a return address and an associated location on a stack at which the return address is stored, wherein the signature is computed using a one-time pad that is combined with a hash of the return address and the return address position of the return address in the stack, and wherein the one time pad value is stored in at least two separate hardware caches, one cache for use during compute signature as a call cache and one cache for use during verify signature as a return cache; enforce that before executing the return instruction using the return address on the stack, initiating a verify signature hardware instruction of the computing device to verify the signature matches the target return address; and respond to successful verification of the signature through execution of the verify signature hardware instruction by the computing device, executing the return instruction to the return address. 16. One or more computer-readable storage devices as described in claim 15 , wherein the compute signature hardware instruction causes the signature to be computed using a secure keyed MAC algorithm where a cryptographic key is randomly generated per boot and stored in hardware of the computing device and not exposed to software executed by the computing device. 17. One or more computer-readable storage devices as described in claim 15 , wherein the signature is computed using the one-time pad value that is combined with a hash of the return address and the return address position of the return address in the stack.

Assignees

Inventors

Classifications

  • by using cryptography (for digital transmission H04L9/00) · CPC title

  • Test or assess software · CPC title

  • Security improvement · CPC title

  • G06F21/52Primary

    during program execution, e.g. stack integrity {; Preventing unwanted data erasure; Buffer overflow} · CPC title

  • by adding security routines or objects to programs · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9646154B2 cover?
Return oriented programming (ROP) attack prevention techniques are described. In one or more examples, a method is described of protecting against return oriented programming attacks. The method includes initiating a compute signature hardware instruction of a computing device to compute a signature for a return address and the associated location on the stack the return address is stored and c…
Who is the assignee on this patent?
Microsoft Technology Licensing Llc
What technology area does this patent fall under?
Primary CPC classification G06F21/52. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue May 09 2017 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 3 related publications on this page (citations in our corpus or others sharing the same primary CPC).