IP Library Granted Patent US 10,284,591
Granted Patent B2
US 10,284,591 · App. 14/606,604 · Granted May 7, 2019

Detecting and preventing execution of software exploits

Inventors: Marco Giuliani (Bastia Umbra, IT); Marco Bizzarri (Sassoferrato, IT); Benedetto Voltattorni (San Benedetto del Tronto, IT); Johannes Mayr (Linz, AT)
Assignee: WEBROOT INC.
H04L63/1441G06F21/52G06F21/554H04L63/1408
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,284,591
App. No.
14/606,604
Granted
May 7, 2019
Kind
B2
Abstract

In non-limiting examples, anti-exploit systems and methods described herein monitor a memory space of a process for execution of functions. Stack walk processing is executed upon invocation of one of the functions in the monitored memory space. During execution of the stack walk processing, at least one memory check is performed to detect suspicious behavior. An alert of suspicious behavior is triggered when the performing of the memory check detects at least one of: code execution attempted from non-executable memory, identification of an invalid base pointer, identification of an invalid stack return address, attempted execution of a return-oriented programming technique, the base pointer is outside a current thread stack, and a return address is detected as being inside a virtual memory area. If an alert of suspicious behavior is triggered, execution of a payload is prevented for the invoked function.

Claims (57)

1. A computer-implemented method comprising:

monitoring a memory space of a process for execution of at least one monitored function of a plurality of functions, wherein monitoring the memory space comprises loading a component for evaluating the at least one monitored function in the memory space;

invoking one of the plurality of functions as a result of receiving a call from an application programming instance;

executing stack walk processing upon the invocation of one of the plurality of functions in the monitored memory space; and

performing, during the executing of the stack walk processing before an address of an originating caller function is reached, a memory check for a plurality of stack entries identified during the stack walk processing to detect suspicious behavior, wherein an alert of suspicious behavior is triggered when the performing of the memory check detects at least one of the following:

code execution is attempted from non-executable memory,

a base pointer is identified as being invalid,

an invalid stack return address is identified,

attempted execution of a return-oriented programming technique is detected,

the base pointer is detected as being outside a current thread stack, and

a return address is detected as being inside a virtual memory area,

wherein when an alert of suspicious behavior is triggered, preventing execution of a payload for the invoked function from operating.

2. The method according to claim 1 , further comprising:

identifying an address associated with the invoked function; and

when the address of the invoked function address is found in a cache, preventing execution of a payload for the invoked function.

3. The method according to claim 1 , wherein executing of the stack walk processing further comprises walking a stack frame associated with the invoked function from a low level user mode function to the originating address of the invoked function.

4. The method according to claim 1 , wherein the monitoring further comprises monitoring functions associated with memory management in the memory space by a user mode function.

5. The method according to claim 1 , wherein the monitoring further comprises applying, upon detecting a function call of one of the plurality of functions in the monitored memory space, a hooking technique to hook a lowest level user mode function of the invoked function, wherein the executing of the stack walk processing executes a reverse stack walk from the lowest level user mode function of the invoked function.

6. The method according to claim 1 , wherein the plurality of functions comprises an NtAllocateVirtualMemory function, an NtProtectVirtualMemory function, an NtCreateProcess function, an NtCreateProcessEX function, an NtCreateUserIProcess function, and an LdrLoadDll function.

7. The method according to claim 5 , wherein performing the memory check comprises evaluating state information associated with a cache entry for the hooked function.

8. The method according to claim 7 , wherein when an address of the invoked function is found in a cache, preventing execution of a payload for the invoked function.

9. A system comprising:

at least one memory; and

at least one processor connected with the memory configured to perform operation of:

monitoring a memory space of a process for execution of at least one monitored function of a plurality of functions, wherein monitoring the memory space comprises loading a component for evaluating the at least one monitored function in the memory space;

invoking one of the plurality of functions as a result of receiving a call from an application programming instance;

executing stack walk processing upon the invocation of one of the plurality of functions in the monitored memory space; and

performing, during the executing of the stack walk processing before an address of an originating caller function is reached, a memory check for a plurality of stack entries identified during the stack walk processing to detect suspicious behavior, wherein an alert of suspicious behavior is triggered when the performing of the memory check detects at least one of the following:

code execution is attempted from non-executable memory,

a base pointer is identified as being invalid,

an invalid stack return address is identified,

attempted execution of a return-oriented programming technique is detected,

the base pointer is detected as being outside a current thread stack, and

a return address is detected as being inside a virtual memory area,

wherein when an alert of suspicious behavior is triggered, the method further comprising preventing execution of a payload for the invoked function.

10. The system according to claim 9 , further comprising identifying an address associated with the invoked function; and when the address of the invoked function is found in a cache, and wherein the processor further executing an operation of preventing execution of a payload for the invoked function.

11. The system according to claim 9 , wherein the executing of the stack walk processing further comprises walking a stack frame associated with the invoked function from a low level user mode function to the originating address of the invoked function.

12. The system according to claim 9 , wherein the monitoring further comprises monitoring functions associated with memory management in the memory space by a user mode function.

13. The system according to claim 9 , wherein the monitoring further comprises applying, upon detecting a function call of one of the plurality of functions in the monitored memory space, a hooking technique to hook a lowest level user mode function of the invoked function, and wherein the executing of the stack walk processing executes a reverse stack walk from the lowest level user mode function of the invoked function.

14. The system according to claim 9 , wherein the plurality of functions comprises an NtAllocateVirtualMemory function, an NtProtectVirtualMemory function, an NtCreateProcess function, an NtCreateProcessEX function, an NtCreateUserIProcess function, and an LdrLoadDll function.

15. The system according to claim 13 , wherein performing of the memory check comprises evaluating state information associated with a cache entry for the hooked function.

16. The system according to claim 15 , wherein when an address of the invoked function is found in a cache, and wherein the processor further executing an operation of preventing execution of a payload for the invoked function.

17. A computer-readable storage device containing instructions, that when executed on at least one processor, causing the processor to execute a process comprising:

monitoring a memory space of a process for execution of at least one monitored function of a plurality of functions, wherein monitoring the memory space comprises loading a component for evaluating the at least one monitored function in the memory space;

invoking one of the plurality of functions as a result of receiving a call from an application programming instance;

executing stack walk processing upon the invocation of one of the plurality of functions in the monitored memory space; and

performing, during the executing of the stack walk processing before an address of an originating caller function is reached, a memory check for a plurality of stack entries identified during the stack walk processing to detect suspicious behavior, wherein an alert of suspicious behavior is triggered when the performing of the memory check detects at least one of the following:

code execution is attempted from non-executable memory,

a base pointer is identified as being invalid,

an invalid stack return address is identified,

attempted execution of a return-oriented programming technique is detected,

the base pointer is detected as being outside a current thread stack,

a return address is detected as being inside a virtual memory area, and

a low level user mode function is attempted to be executed in a cache, wherein the cache is evaluated for an address of the invoked function, and

wherein when an alert of suspicious behavior is triggered, preventing execution of a payload for the invoked function.

18. The computer-readable storage device according to claim 17 , wherein performing of the memory check to determine if code execution is attempted from non-executable memory, the base pointer is identified as being invalid, an invalid stack return address is identified, execution of a return-oriented programming technique is attempted, the base pointer is detected as being outside a current thread stack, and the return address is detected as being inside a virtual memory area, occurs before an address of the invoked function is reached, and

wherein the performing of the memory check to determine whether the low level user mode function is attempted to be executed in the cache occurs upon reaching the address of the invoked function in the execution of the stack walk processing.

Assignments (6)
ASSIGNMENT AND ASSUMPTION AGREEMENT Recorded Jul 6, 2023
From: CARBONITE, LLC
To: OPEN TEXT INC.
Reel/Frame 064351/0178 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 29, 2023
From: WEBROOT LLC
To: CARBONITE, LLC
Reel/Frame 064167/0129 →
CERTIFICATE OF CONVERSION Recorded Jun 29, 2023
From: WEBROOT INC.
To: WEBROOT LLC
Reel/Frame 064176/0622 →
RELEASE OF SECURITY INTEREST IN PATENT RIGHTS RECORDED AT R/F 048723/0612 Recorded Dec 26, 2019
From: BARCLAYS BANK PLC, AS COLLATERAL AGENT
To: WEBROOT INC.
Reel/Frame 051418/0714 →
SECURITY INTEREST Recorded Mar 28, 2019
From: WEBROOT INC.
To: BARCLAYS BANK PLC, AS COLLATERAL AGENT
Reel/Frame 048723/0612 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 27, 2015
From: GIULIANI, MARCO; BIZZARRI, MARCO; VOLTATTORNI, BENEDETTO; MAYR, JOHANNES
To: WEBROOT INC.
Reel/Frame 034823/0021 →
Continuity (2)
Provisional Application 61931772 · Jan 27, 2014
Related Publication 20150215335A1 · Jul 30, 2015
Cited By (40)
US 12,189,780 US 12,197,383 US 12,204,870 US 12,206,698 US 12,210,479 US 12,210,617 US 12,235,960 US 12,235,962 US 12,244,626 US 12,259,967 US 12,261,822 US 12,261,884 US 12,265,526 US 12,282,549 US 12,301,539 US 12,341,814 US 12,354,043 US 12,361,358 US 12,363,151 US 12,380,212 US 12,388,795 US 12,412,413 US 12,418,565 US 12,423,078 US 12,432,253 US 12,437,068 US 12,450,351 US 12,452,273 US 12,468,810 US 12,481,777 US 12,488,127 US 12,489,763 US 12,500,905 US 12,526,289 US 12,536,280 US 12,579,268 US 12,598,206 US 12,664,258 US 12,670,455 US 12,719,891