IP Library Granted Patent US 11,841,966
Granted Patent B2
US 11,841,966 · App. 17/550,559 · Granted Dec 12, 2023

Inhibiting memory disclosure attacks using destructive code reads

Inventors: Adrian Tang (New York, NY); Salvatore Stolfo (New York, NY); Lakshminarasimhan Sethumadhavan (New York, NY)
Assignee: The Trustees of Columbia University in the City of New York
G06F21/6218G06F9/45558G06F12/1009G06F12/1475G06F21/52G06F21/604G06F2009/45583G06F2009/45595
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,841,966
App. No.
17/550,559
Granted
Dec 12, 2023
Kind
B2
Abstract

Disclosed are devices, systems, apparatus, methods, products, and other implementations, including a method that includes determining whether an operation to access a memory location containing executable code comprises a general-purpose memory access operation, and changing content of the memory location in response to a determination that the operation to access the memory location containing the executable code comprises the general-purpose memory access operation to the memory location.

Claims (58)

1. A method comprising:

determining, by a processor-based device, whether an operation to access a memory location containing executable code representative of a decodable instruction executable on the processor-based device comprises one of a plurality of general-purpose memory access operations that do not cause execution of the decodable instruction on the processor-based device; and

performing, by the processor-based device, the operation to access the memory location to read from the memory location the executable code representative of the decodable instruction; and

overwriting the memory location by the processor-based device, in response to a determination that the operation to access the memory location containing the executable code representative of a decodable instruction is a general-purpose memory access operation from the plurality of general purpose memory access operations, with a new content different than the executable code after reading the executable code from the memory location.

2. The method of claim 1 , wherein determining whether the operation to access the memory location containing the executable code comprises the one of the plurality of general-purpose memory access operations comprises:

determining whether the operation to access the memory location comprises one or more of: a memory read operation, or a memory dereferencing operation.

3. The method of claim 1 , further comprising:

identifying at run-time one or more areas of memory of a computing system as containing portions of executable code; and

associating the one or more areas of the memory of the computing system with respective access permissions associated with the portions of executable code.

4. The method of claim 3 , wherein determining whether the operation to access the memory location containing the executable code comprises the one of the plurality of general-purpose memory access operations comprises:

determining whether the operation to access the memory location violates the respective access permission associated with an area of memory, from the one or more areas of memory, that includes the memory location containing the executable code.

5. The method of claim 3 , wherein associating the one or more areas of the memory of the computing system with the respective access permissions associated with the portions of executable code comprises:

maintaining in a hardware virtualization module, configured to map virtual memory addresses to physical host machine addresses, execution information identifying the one or more areas of the memory containing the portions of the executable code as being execute-only memory areas;

and wherein the method further comprises:

causing a hardware-virtualization violation in response to the determination that the operation to access the memory location is the general-purpose memory access operation and a further determination that the memory location being accessed is in a memory area from the one or more areas of the memory identified as the execute-only memory areas.

6. The method of claim 3 , further comprising:

generating a duplicate copy of the one or more areas of the memory, configured with the respective access permissions associated with the portions of executable code, in another one or more areas of the memory.

7. The method of claim 1 , wherein overwriting the memory location with the new content comprises:

replacing the content of the memory location with a random value in response to the determination that the operation to access the memory location containing the executable code comprises the general-purpose memory access operation to the memory location.

8. The method of claim 1 , wherein overwriting the memory location with the new content comprises:

replacing the content of the memory location with a selected one of one or more pre-determined values associated with respective one or more software interrupts or software traps.

9. The method of claim 8 , further comprising:

performing a software interrupt based on the replaced content of the memory location to cause a capture of data associated with one or more processes resulting in the software interrupt;

wherein the captured data associated with the one or more processes resulting in the software interrupt is used to perform one or more of: identifying a malware attack that caused the software interrupt, identifying vulnerabilities in a targeted program comprising the executable code in the memory location, repairing one or more of the identified vulnerabilities, or providing output information to a user regarding the software interrupt.

10. The method of claim 1 , further comprising:

identifying from received input data one or more executable code portions and one or more non-executable data portions; and

placing the one or more executable code portions in first areas of memory.

11. The method of claim 10 , wherein identifying from the received input data the one or more executable code portions and the one or more non-executable data portions comprises:

performing disassembly processing on the received input data to generate resultant disassembled data; and

identifying from the resultant disassembled data the one or more executable code portions and the one or more non-executable data portions.

12. The method of claim 10 , wherein identifying from the received input data the one or more executable code portions and the one or more non-executable data portions comprises:

determining whether portions of the received input data match one or more pre-defined data structures to identify the one or more non-executable data portions; and

placing the identified non-executable data portions into second areas of the memory, separate from the first areas in which the executable code portions are placed.

13. A computing system comprising:

at least one processor; and

memory comprising computer instructions that, when executed on the at least one processor, cause operations comprising:

determining whether an operation to access a memory location containing executable code representative of a decodable instruction executable on the at least one processor comprises one of a plurality of general-purpose memory access operations that do not cause execution of the decodable instruction on the at least one processor;

performing the operation to access the memory location to read from the memory location the executable code representative of the decodable instruction; and

overwriting the memory location, in response to a determination that the operation to access the memory location containing the executable code representative of a decodable instruction is a general-purpose memory access operation from the plurality of general purpose memory access operations, with a new content different than the executable code after reading the executable code from the memory location.

14. The computing system of claim 13 , wherein the memory comprises further instructions to cause further operations comprising:

identifying at run-time one or more areas of the memory of the computing system as containing portions of executable code; and

associating the one or more areas of the memory of the computing system with respective access permissions associated with the portions of executable code.

15. The computing system of claim 14 , wherein associating the one or more areas of the memory of the computing system with the respective access permissions associated with the portions of executable code comprises:

maintaining in a hardware virtualization module, configured to map virtual memory addresses to physical host machine addresses, execution information identifying the one or more areas of the memory containing the portions of the executable code as being execute-only memory areas;

and wherein the memory comprises additional instructions to cause additional operations comprising:

causing a hardware-virtualization violation in response to the determination that the operation to access the memory location is the general-purpose memory access operation and a further determination that the memory location being accessed is in a memory area from the one or more areas of the memory identified as the execute-only memory areas.

16. The computing system of claim 14 , wherein the memory comprises additional instructions to cause additional operations comprising:

generating a duplicate copy of the one or more areas of the memory, configured with the respective access permissions associated with the portions of executable code, in another one or more areas of the memory.

17. The computing system of claim 13 , wherein overwriting the memory location with the new content comprises:

replacing the content of the memory location with a random value in response to the determination that the operation to access the memory location containing the executable code comprises the general-purpose memory access operation to the memory location.

18. The computing system of claim 13 , wherein overwriting the memory location with the new content comprises:

replacing the content of the memory location with a selected one of one or more pre-determined values associated with respective one or more software interrupts or software traps.

19. A non-transitory computer readable media storing a set of instructions executable on at least one programmable device that, when executed, cause operations comprising:

determining whether an operation to access a memory location containing executable code representative of a decodable instruction executable on the at least one programmable device comprises one of a plurality of general-purpose memory access operations that do not cause execution of the decodable instruction on the at least one programmable device;

performing the operation to access the memory location to read from the memory location the executable code representative of the decodable instruction; and

overwriting the memory location, in response to a determination that the operation to access the memory location containing the executable code representative of a decodable instruction is a general-purpose memory access operation from the plurality of general purpose memory access operation, with a new content different than the executable code after reading the executable code from the memory location.

20. The method of claim 1 , wherein overwriting the memory location with the new content comprises:

overwriting the memory location with the new content to corrupt the memory location so as to prevent subsequent execution of the executable code that was stored in the memory location.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 14, 2021
From: TANG, ADRIAN; STOLFO, SALVATORE; SETHUMADHAVAN, LAKSHMINARASIMHAN
To: THE TRUSTEES OF COLUMBIA UNIVERSITY IN THE CITY OF NEW YORK
Reel/Frame 058387/0516 →
Continuity (4)
Continuation 15753270
Provisional Application 62236257 · Oct 2, 2015
Provisional Application 62206411 · Aug 18, 2015
Related Publication 20220284115A1 · Sep 8, 2022