IP Library Granted Patent US 7,797,747
Granted Patent B1
US 7,797,747 · App. 11/359,235 · Granted Sep 14, 2010

Detection of malicious code in non-paged pool unused pages

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,797,747
App. No.
11/359,235
Granted
Sep 14, 2010
Kind
B1
Abstract

Subsets of non-paged pool unused pages entries are flushed from a translation lookaside buffer (TLB). An attempt to access malicious code within a not present page within the non-paged pool unused pages is made, e.g., by malicious code. The attempt to access the page generates a page fault, which is detected. The page is scanned for malicious code and a determination is made that the page contains malicious code. Protective action is taken to protect a host computer system from the malicious code. Accordingly, malicious code in a page marked not present, i.e., in a page that ordinarily would not be scanned for malicious code, is detected and defeated.

Claims (45)

1. A computer-implemented method comprising:

executing, on a processor, a malicious code detection application wherein said executing comprises:

determining non-paged pool unused pages in a non-paged pool,

wherein non-paged pool pages in said non-paged pool are not swapped to and from pagefiles;

said non-paged pool pages are non-paged pool used pages and said non-paged pool unused pages;

selecting a subset of said non-paged pool unused pages;

flushing non-paged pool unused pages entries corresponding to said subset from a translation lookaside buffer (TLB);

detecting a page fault associated with an attempted access to a page

determining whether the page is within the non-paged pool unused pages in said non-paged pool;

determining whether said page contains malicious code upon finding that the page is within the non-paged pool unused pages in said non-paged pool; and

taking protective action, upon finding that the page contains malicious code, to protect a computer system from said malicious code.

2. The computer-implemented method of claim 1 further comprising determining whether additional flushes of said translation lookaside buffer are necessary.

3. The computer-implemented method of claim 1 further comprising repeatedly performing said determining, said selecting, and said flushing.

4. The computer-implemented method of claim 1 further comprising repeatedly performing said determining whether additional flushes of said translation lookaside buffer are necessary, said selecting, and said flushing until all entries in said translation lookaside buffer are flushed.

5. The computer-implemented method of claim 1 further comprising hooking a page fault handler to facilitate said detecting.

6. The computer-implemented method of claim 1 wherein an entry corresponding to said page has been flushed from said translation lookaside buffer in said flushing.

7. The computer-implemented method of claim 6 wherein said entry mapped a virtual address to a physical page address of said page.

8. The computer-implemented method of claim 1 wherein said determining whether said page is within said non-paged pool unused pages comprises determining whether a virtual address of said page matches any of virtual addresses of said non-paged pool unused pages.

9. The computer-implemented method of claim 1 wherein upon a determination that said page is within said non-paged pool unused pages, said determining whether said page contains malicious code further comprises determining whether said page is unassigned.

10. The computer-implemented method of claim 9 wherein said determining whether said page is unassigned comprises determining whether a virtual address of said page matches any of virtual addresses of unassigned pages of said non-paged pool unused pages.

11. The computer-implemented method of claim 9 wherein upon a determination that said page is not unassigned, said determining whether said page contains malicious code further comprises scanning said page for malicious code.

12. The computer-implemented method of claim 1 further comprising providing a notification that said protective action has been taken.

13. The computer-implemented method of claim 1 wherein a page table entry associated with said page comprises physical page address bits and a present bit, said physical page address bits comprising a valid physical page address, a value within said present bit indicating that said page is not present, said page being a not present page in said non-paged pool unused pages.

14. A computer system comprising:

a memory having stored therein a malicious code detection application; and

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

determining non-paged pool unused pages in a non-paged pool,

wherein non-paged pool pages in said non-paged pool are not swapped to and from pagefiles;

said non-paged pool pages are non-paged pool used pages and said non-paged pool unused pages;

selecting a subset of said non-paged pool unused pages;

flushing non-paged pool unused pages entries corresponding to said subset from a translation lookaside buffer (TLB);

detecting a page fault associated with an attempted access to a page

determining whether the page is within the non-paged pool unused pages in said non-paged pool;

determining whether said page contains malicious code upon finding that the page is within the non-paged pool unused pages in said non-paged pool; and

taking protective action, upon finding that the page contains malicious code, to protect a computer system from said malicious code.

15. A computer-program product comprising a computer readable medium containing computer program code comprising:

a malicious code detection application for determining non-paged pool unused pages in a non-paged pool,

wherein non-paged pool pages in said non-paged pool are not swapped to and from pagefiles;

said non-paged pool pages are non-paged pool used pages and said non-paged pool unused pages;

said malicious code detection application further for selecting a subset of said non-paged pool unused pages;

said malicious code detection application further for flushing non-paged pool unused pages entries corresponding to said subset from a translation lookaside buffer (TLB);

said malicious code detection application further for detecting a page fault associated with an attempted access to a page

said malicious code detection application further for determining whether the page is within the non-paged pool unused pages in said non-paged pool;

said malicious code detection application further for determining whether said page contains malicious code upon finding that the page is within the non-paged pool unused pages in said non-paged pool; and

said malicious code detection application further for taking protective action, upon finding that the page contains malicious code, to protect a computer system from said malicious code.

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 Feb 21, 2006
From: FERRIE, PETER
To: SYMANTEC CORPORATION
Reel/Frame 017857/0579 →