IP Library Granted Patent US 10,268,601
Granted Patent B2
US 10,268,601 · App. 15/185,370 · Granted Apr 23, 2019

Timely randomized memory protection

Inventors: Hamed Okhravi (Billerica, MA); Thomas R. Hobson (Belmont, MA); David O. Bigelow (Maynard, MA); Robert Rudd (Cambridge, MA); David M. Perry (Eddyville, KY); Kristin S. Dahl (Cambridge, MA); William W. Streilein (Sudbury, MA)
Assignee: Massachusetts Institute of Technology
G06F12/1466G06F11/1004G06F21/52H04L9/0894G06F2212/1052G06F2212/402G06F2221/033
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 10,268,601
App. No.
15/185,370
Granted
Apr 23, 2019
Kind
B2
Abstract

In a system executing a program, a method comprises detecting one or more input/output calls associated with the program and re-randomizing memory associated with the program in response to the one or more input/output calls. A related system is also described.

Claims (46)

1. In a system executing a program, a method of protecting the program against information leakage attacks, the method comprising:

detecting at runtime one or more input/output calls associated with the program; and

re-randomizing memory associated with the program in response to the one or more input/output calls, wherein re-randomizing the memory comprises generating random stack cookies.

2. The method of claim 1 wherein generating the random stack cookies comprises:

generating a random master cookie;

storing the master cookie in the memory;

obtaining a stack trace for the program, the stack trace including information about one or more stack frames;

for each of the stack frames, generating a random stack cookie using the master stack cookie; and

for each of the stack frames, storing the stack cookie in the memory.

3. The method of claim 2 further comprising:

verifying the random stack cookie for each of the stack frames using the master stack cookie.

4. The method of claim 2 wherein the stack trace includes a memory address for each of the stack frames, and wherein generating a random stack cookie for each of the stack frames comprises performing a logical exclusive disjunction operation (XOR) between the master stack cookie and the corresponding memory address.

5. The method of claim 2 wherein the program comprises a plurality of modules, and wherein generating the random master cookie comprises generating a random master cookie for each of the modules.

6. The method of claim 5 further comprising, for each of the modules:

detecting the module being loaded;

determining a memory location of a master cookie associated with the module; and

in response to generating the random master cookie for the module, storing the generated master cookie at the determined memory location.

7. In a system executing a program, a method of protecting the program against information leakage attacks, the method comprising:

detecting at runtime one or more input/output calls associated with the program; and

re-randomizing memory associated with the program in response to the one or more input/output calls, wherein re-randomizing memory associated with the program comprises re-randomizing heap integrity data by:

generating a random secret key;

storing the random secret key in the memory;

determining a memory location for one or more heap allocations stored in the memory;

for each of the heap allocations, encrypting header information associated with the heap allocation using the secret key; and

for each of the heap allocations, storing the encrypted header information in the memory.

8. The method of claim 7 further comprising:

verifying the encrypted header information for each of the heap allocations using the secret key.

9. The method of claim 8 further comprising:

verifying a error-detecting code value for each of the heap allocations.

10. The method of claim 7 further comprising, for each of the heap allocations:

generating a random heap cookie;

calculating an error-detecting code value using at least the random heap cookie; and

storing the error-detecting code value in the memory.

11. In a system executing a program, a method of protecting the program against information leakage attacks, the method comprising:

detecting at runtime one or more input/output calls associated with the program; and

re-randomizing memory associated with the program in response to the one or more input/output calls, wherein re-randomizing memory associated with the program comprises re-randomizing an encrypted function lookup table (FLT).

12. The method of claim 11 further comprising:

generating the encrypted FLT based on an existing FLT associated with the program, the encrypted FLT having a plurality of code snippets; and

rewriting program code to replace indirect calls to the existing FLT with direct calls to the code snippets.

13. The method of claim 12 wherein each of the code snippets includes instructions to decrypt an encrypted address associated with the code snippet using a secret key and to call a function at the decrypted address associated with the code snippet, and wherein re-randomizing the encrypted FLT comprises:

generating a new secret key;

storing the new secret key in memory; and

updating each of the code snippets to use the new secret key.

14. The method of claim 12 wherein re-randomizing the encrypted FLT comprises:

changing a memory location of one or more of the code snippets with the encrypted FLT; and

rewriting the program code to call the one or more code snippets at the corresponding changed memory location.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 23, 2016
From: OKHRAVI, HAMED; HOBSON, THOMAS R.; BIGELOW, DAVID O.; RUDD, ROBERT; STREILEIN, WILLIAM W.; DAHL, KRISTIN S.; PERRY, DAVID M.
To: MASSACHUSETTS INSTITUTE OF TECHNOLOGY
Reel/Frame 038997/0105 →
Continuity (1)
Related Publication 20170364452A1 · Dec 21, 2017
Cited By (3)
US 12,273,385 US 12,639,476 US 12,717,960