IP Library Granted Patent US 7,650,640
Granted Patent B1
US 7,650,640 · App. 10/968,225 · Granted Jan 19, 2010

Method and system for detecting IA32 targeted buffer overflow attacks

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 7,650,640
App. No.
10/968,225
Granted
Jan 19, 2010
Kind
B1
Abstract

Data streams are scanned to detect malicious jump-call-pop shellcode constructs used in attacks against stack-based buffer overflow vulnerabilities on software executing in the IA32 architecture prior to execution. Upon a detection of a malicious jump-call-pop shellcode construct, protective action is taken, such as preventing the malicious shellcode from executing.

Claims (66)

1. A method comprising:

executing, with a processor, a detection application stored in a memory coupled to said processor to generate a method comprising:

receiving data from a data stream on a computer system;

stalling said data on said computer system prior to execution of said data;

determining whether a malicious jump-call-pop shellcode construct is detected in said data, wherein said determining whether a malicious jump-call-pop shellcode construct is detected in said data comprises:

determining whether a jump instruction is detected in said data, said jump instruction having an associated destination argument specifying a jump location;

upon a determination that said jump instruction is detected in said data, determining whether a call instruction is detected in said data at said jump location, said call instruction having an associated destination argument specifying a call location;

upon a determination that said call instruction is detected in said data at said jump location, determining whether a pop instruction is detected in said data at said call location; and

upon a determination that said pop instruction is detected in said data at said call location, determining that said malicious jump-call-pop shellcode construct is detected in said data, and

taking protective action.

2. The method of claim 1 , further comprising:

providing a notification.

3. The method of claim 1 , wherein said malicious jump-call-pop shellcode construct is used in stack-based buffer overflow attacks against software executing in an IA32 architecture.

4. The method of claim 1 , further comprising:

wherein upon a determination that said jump instruction is not detected in said data, determining that said malicious jump-call-pop shellcode construct is not detected in said data, and

releasing said data.

5. The method of claim 1 , further comprising:

wherein upon a determination that said call instruction is not detected in said data at said jump location, determining that said malicious jump-call-pop shellcode construct is not detected in said data, and

releasing said data.

6. The method of claim 1 , further comprising:

wherein upon a determination that said pop instruction is not detected in said data at said call location, determining that said malicious jump-call-pop shellcode construct is not detected in said data, and

releasing said data.

7. The method of claim 1 , wherein said determining whether a call instruction is detected in said data at said jump location comprises scanning said data only at or near said jump location for said call instruction, wherein said call instruction is detected at or near said jump location; and

further wherein said determining whether a pop instruction is detected in said data at said call location comprises scanning said data only at or near said call location for said pop instruction, wherein said pop instruction is detected at or near said call location.

8. The method of claim 1 , wherein said jump instruction is an opcode for a jump instruction.

9. The method of claim 1 , wherein said call instruction is an opcode for a call instruction.

10. The method of claim 1 , wherein said pop instruction is an opcode for a pop instruction.

11. A computer program product comprising a computer-readable storage medium configured to store computer program code comprising:

a detection application for detecting a malicious jump-call-pop shellcode construct, said detection application comprising:

means for receiving data from one or more data streams on a computer system;

means for stalling said data on said computer system prior to execution of said data;

means for determining whether said malicious jump-call-pop shellcode construct is detected in said data, wherein said means for determining whether a malicious jump-call-pop shellcode construct is detected in said data further comprises:

means for detecting a jump instruction, wherein the jump instruction has an associated destination argument specifying a jump location;

means for detecting a call instruction at said jump location upon a determination that said jump instruction is detected, wherein the call instruction has an associated destination argument specifying a call location; and

means for detecting a pop instruction at said call location upon a determination that said call instruction is detected, wherein upon a determination that said pop instruction is detected at said call location, determining that said malicious jump-call-pop shellcode construct is detected;

means for releasing said data upon a determination that said malicious jump-call-pop shellcode construct is not detected in said data; and

means for taking protective action upon a determination that said malicious jump-call-pop shellcode construct is detected in said data.

12. The computer program product of claim 11 , further comprising:

means for providing a notification.

13. The computer program product of claim 11 , wherein said detection application is a network-based intrusion detection application.

14. The computer program product of claim 11 , wherein said detection application is a host-based intrusion detection application.

15. A computer system comprising:

a memory having stored therein a detection application for detecting a malicious jump-call-pop shellcode construct; and

a processor coupled to said memory, wherein execution of said detection application generates a method comprising:

receiving data from a data stream on said computer system;

stalling said data on said computer system prior to execution of said data;

determining whether a malicious jump-call-pop shellcode construct is detected in said data, wherein said determining whether a malicious jump-call-pop shellcode construct is detected in said data comprises:

determining whether a jump instruction is detected in said data, said jump instruction having an associated destination argument specifying a jump location;

upon a determination that said jump instruction is detected in said data, determining whether a call instruction is detected in said data at said jump location, said call instruction having an associated destination argument specifying a call location;

upon a determination that said call instruction is detected in said data at said jump location, determining whether a pop instruction is detected in said data at said call location; and

upon a determination that said pop instruction is detected in said data at said call location, determining that said malicious jump-call-pop shellcode construct is detected in said data, and

taking protective action.

16. The computer system of claim 15 , the method further comprising:

providing a notification.

17. The computer system of claim 15 , the method further comprising:

wherein upon a determination that said jump instruction is not detected in said data, determining that said malicious jump-call-pop shellcode construct is not detected in said data, and

releasing said data.

18. The computer system of claim 15 , the method further comprising:

wherein upon a determination that said call instruction is not detected in said data at said jump location, determining that said malicious jump-call-pop shellcode construct is not detected in said data, and

releasing said data.

19. The computer system of claim 15 , the method further comprising:

wherein upon a determination that said pop instruction is not detected in said data at said call location, determining that said malicious jump-call-pop shellcode construct is not detected in said data, and

releasing said data.

20. The computer system of claim 15 , wherein said jump instruction is an opcode for a jump instruction;

wherein said call instruction is an opcode for a call instruction; and

further wherein said pop instruction is an opcode for a pop instruction.

Assignments (6)
CHANGE OF NAME Recorded May 18, 2023
From: NORTONLIFELOCK INC.
To: GEN DIGITAL INC.
Reel/Frame 063697/0493 →
NOTICE OF SUCCESSION OF AGENCY (REEL 050926 / FRAME 0560) Recorded Sep 13, 2022
From: JPMORGAN CHASE BANK, N.A.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 061422/0371 →
SECURITY AGREEMENT Recorded Sep 13, 2022
From: NORTONLIFELOCK INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062220/0001 →
CHANGE OF NAME Recorded Mar 5, 2020
From: SYMANTEC CORPORATION
To: NORTONLIFELOCK INC.
Reel/Frame 052109/0186 →
SECURITY AGREEMENT Recorded Nov 4, 2019
From: SYMANTEC CORPORATION; BLUE COAT LLC; LIFELOCK, INC,; SYMANTEC OPERATING CORPORATION
To: JPMORGAN, N.A.
Reel/Frame 050926/0560 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 18, 2004
From: LEVY, ELIAS
To: SYMANTEC CORPORATION
Reel/Frame 015912/0714 →