IP Library › Granted Patent US 10,489,592
Granted Patent B1
US 10,489,592 · App. 15/465,157 · Granted Nov 26, 2019

Creating an execution safety container for unreliable exploits

Inventors: Bahaa Naamneh (Oslo, NO); Felix Leder (Tårnåsen, NO)
Assignee: Symantec Corporation
G06F21/566G06F12/1441G06F2212/1052G06F2221/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,489,592
App. No.
15/465,157
Granted
Nov 26, 2019
Kind
B1
Abstract

The present disclosure relates to executing software within an execution safety container. An example method generally includes detecting that a memory address referenced by a stack pointer has changed from a first memory address to a second memory address. An execution safety container compares the referenced memory address to a memory address range associated with an application, and upon determining that the referenced memory address is not within the memory address range associated with the application, takes one or more actions to avoid occurrences of unhandled exceptions caused by the referenced memory address being outside of a memory address range associated with an application.

Claims (57)

1. A method for testing applications having exploit computer code within execution safety containers, the method being performed by a computing device having at least one processor, the method comprising:

executing an application within an execution safety container on the computing device, the application having exploit computer code therein;

during execution of the application, monitoring a stack pointer of the computing device for changes in a memory address referenced by the stack pointer;

detecting that the memory address referenced by the stack pointer has changed from a first memory address to a second memory address;

determining that the second memory address is outside of a memory address range associated with the application in the execution safety container by determining that the second memory address is higher than an upper bound of the memory address range or the second memory address is lower than a lower bound of the memory address range; and

in response to determining that the second memory address is outside of the memory address range:

taking one or more actions to avoid occurrences of unhandled exceptions caused by the referenced memory address being outside of the memory address range associated with the application, and

continuing execution of the application.

2. The method of claim 1 , wherein the one or more actions comprise:

adjusting the memory address range to include the referenced memory address.

3. The method of claim 1 , wherein the one or more actions comprise:

invoking an exception handler that does not check the referenced memory address against the memory address range associated with the application to process one or more exceptions generated during code execution.

4. The method of claim 1 , wherein detecting that the memory address referenced by the stack pointer has changed from the first memory address to the second memory address is performed upon detecting that an exception has been thrown during application runtime.

5. The method of claim 1 , wherein the memory address range comprises a range defined by a stack base address and a stack limit address.

6. The method of claim 5 , wherein the one or more actions comprise adjusting the memory address range by:

determining that the referenced memory address is greater than the stack base address; and

setting the stack base address to a memory address greater than the referenced memory address.

7. The method of claim 5 , wherein the one or more actions comprise adjusting the memory address range by:

determining that the referenced memory address is less than the stack limit address; and

setting the stack limit address to a memory address less than the referenced memory address.

8. The method of claim 1 , wherein the one or more actions comprise adjusting the memory address range to include a number of addresses in excess of a difference between a boundary of the memory address range and the referenced memory address.

9. A system, comprising:

a processor; and

a memory storing instructions which, when executed by the processor, perform an operation for testing applications having exploit computer code within execution safety containers, the operation comprising:

executing an application within an execution safety container on a computing device, the application having exploit computer code therein;

during execution of the application, monitoring a stack pointer of the computing device for changes in a memory address referenced by the stack pointer;

detecting that the memory address referenced by the stack pointer has changed from a first memory address to a second memory address;

determining that the second memory address is outside of a memory address range associated with the application in the execution safety container by determining that the second memory address is higher than an upper bound of the memory address range or the second memory address is lower than a lower bound of the memory address range; and

in response to determining that the second memory address is outside of the memory address range:

taking one or more actions to avoid occurrences of unhandled exceptions caused by the referenced memory address being outside of the memory address range associated with the application, and

continuing execution of the application.

10. The system of claim 9 , wherein the one or more actions comprise:

adjusting the memory address range to include the referenced memory address.

11. The system of claim 9 , wherein the one or more actions comprise:

invoking an exception handler that does not check the referenced memory address against the memory address range associated with the application to process one or more exceptions generated during code execution.

12. The system of claim 9 , wherein detecting that the memory address referenced by the stack pointer has changed from the first memory address to the second memory address is performed upon detecting that an exception has been thrown during application runtime.

13. The system of claim 9 , wherein the memory address range comprises a range defined by a stack base address and a stack limit address.

14. The system of claim 13 , wherein the one or more actions comprise adjusting the memory address range by:

determining that the referenced memory address is greater than the stack base address; and

setting the stack base address to a memory address greater than the referenced memory address.

15. The system of claim 13 , wherein the one or more actions comprise adjusting the memory address range by:

determining that the referenced memory address is less than the stack limit address; and

setting the stack limit address to a memory address less than the referenced memory address.

16. The system of claim 9 , wherein the one or more actions comprise adjusting the memory address range to include a number of addresses in excess of a difference between a boundary of the memory address range and the referenced memory address.

17. A non-transitory computer-readable medium having instructions stored thereon which, when executed by one or more processors, perform an operation for testing applications having exploit computer code within execution safety containers, the operation comprising:

executing an application within an execution safety container on a computing device, the application having exploit computer code therein;

during execution of the application, monitoring a stack pointer of the computing device for changes in a memory address referenced by the stack pointer;

detecting that the memory address referenced by the stack pointer has changed from a first memory address to a second memory address;

determining that the second memory address is outside of a memory address range associated with the application in the execution safety container by determining that the second memory address is higher than an upper bound of the memory address range or the second memory address is lower than a lower bound of the memory address range; and

in response to determining that the second memory address is outside of the memory address range:

taking one or more actions to avoid occurrences of unhandled exceptions caused by the referenced memory address being outside of the memory address range associated with the application, and

continuing execution of the application.

18. The non-transitory computer-readable medium of claim 17 , wherein detecting that the memory address referenced by the stack pointer has changed from the first memory address to the second memory address is performed upon detecting that an exception has been thrown during application runtime.

19. The non-transitory computer-readable medium of claim 17 , wherein the one or more actions comprise:

upon determining that the referenced memory address is not within the memory address range associated with the application, adjusting the memory address range to include the referenced memory address.

20. The non-transitory computer-readable medium of claim 17 , wherein the one or more actions comprise:

invoking an exception handler that does not check the referenced memory address against the memory address range associated with the application to process one or more exceptions generated during code execution.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 21, 2019
From: SYMANTEC CORPORATION
To: CA, INC.
Reel/Frame 051144/0918 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 21, 2017
From: NAAMNEH, BAHAA; LEDER, FELIX
To: SYMANTEC CORPORATION
Reel/Frame 041667/0779 →
Cited By (2)
US 12,437,055 US 12,602,398