computer-implemented methods, apparati, and computer-readable media for detecting malicious computer code in a file (2) associated with a computer (10). A method of the present invention comprises the steps of determining whether there is more than one hard link (1) to the file (2); and when there is more than one hard link (1), ascertaining the identities of all the hard links (1), and performing an antivirus scan on the file (2) based upon the hard link(s) (1) having the most restrictive scanning criteria of all the hard links (1), or upon the union of scanning criteria amongst all the hard links (1).
|
1. A computer-implemented method for detecting malicious computer code in a file associated with a computer, said method comprising the steps of:
determining whether there is more than one hard link to the file; and
when there is more than one hard link:
ascertaining the identities of all the hard links; and
performing an antivirus scan on the file based upon the hard link(s) having the most restrictive scanning criteria of all the hard links to detect malicious computer code.
19. A computer-readable medium containing computer program instructions for detecting malicious computer code in a file associated with a computer, said instructions performing the steps of:
determining whether there is more than one hard link to the file; and when there is more than one hard link:
ascertaining the identities of all the hard links; and
performing an antivirus scan on the file based upon the hard link(s) having the most restrictive scanning criteria of all the hard links to detect malicious computer code.
18. A computer-readable medium containing computer program instructions for detecting malicious computer code in a file associated with a computer, comprising:
a backpointer table construction module coupled to the file, said module adapted to construct a backpointer table for the file when the file has more than one hard link;
an antivirus scanner coupled to the file and adapted to scan the file for the presence of malicious computer code; and
a file system filter driver coupled to the file and to the antivirus scanner, said driver instructing the antivirus scanner to examine the backpointer table when the file has more than one hard link.
35. A computer-implemented method for detecting malicious computer code in a computer, the method comprising:
identifying a file on a storage device associated with the computer, the file having a plurality of hard links, each hard link associated with a file name;
determining a plurality of file names associated with the plurality of hard links;
ascertaining a set of scanning criteria responsive at least in part to the plurality of file names, where ascertaining the set of scanning criteria comprises:
ascertaining scanning criteria for each of the plurality of file names, and
forming the set of scanning criteria from the most restrictive scanning criteria of the scanning criteria for each of the plurality of file names; and
scanning the file responsive to the set of scanning criteria to detect the presence of malicious computer code in the file.
4. The method of
5. The method of
6. The method of
7. The method of
8. The method of
9. The method of
10. The method of
11. The method of
12. The method of
13. The method of
14. The method of
performing an integrity check on the backpointer table.
15. The method of
for each file on the computer, determining whether a first value stored within the file representative of a number of hard links associated with the file is equal to a second value representative of the number of entries in the backpointer table associated with the file; and
when the first value is unequal to the second value, updating the backpointer table.
17. The method of
21. The computer-readable medium of
22. The computer-readable medium of
23. The computer-readable medium of
24. The computer-readable medium of
25. The computer-readable medium of
26. The computer-readable medium of
27. The computer-readable medium of
28. The computer-readable medium of
29. The computer-readable medium of
30. The computer-readable medium of
31. The computer-readable medium of
performing an integrity check on the backpointer table.
32. The computer-readable medium of
for each file on the computer, determining whether a first value stored within the file representative of a number of hard links associated with the file is equal to a second value representative of the number of entries in the backpointer table associated with the file; and
when the first value is unequal to the second value, updating the backpointer table.
33. The computer-readable medium of
34. The computer-readable medium of
36. The method of
|
This invention pertains to the field of detecting malicious computer code in a computer file, particularly a file having multiple hard links (file names).
The invention will be illustrated in conjunction with NTFS (New Technology File System). NTFS is present in every NT and higher operating system manufactured by Microsoft Corporation. In NTFS, the attributes of a file 2 within a computer 10 (see
NTFS 5.0 (and above) supports multiple hard links 1. A “hard link 1” is a pointer to the file 2 that comprises, at a minimum, the file name. The hard link may comprise the full path name including the file name. Since there can be multiple hard links 1, any file 2 can have multiple file names, even though there is but one physical version of the file 2. Two or more of the file names can point to the same file 2 data, but be located in the same or different directories.
NTFS considers all file names to be hard links 1 to the file in question, but most files 2 have just one hard link 1 associated with that file 2. An NTFS file 2 is deleted when all hard links 1 to it are removed, i.e., when the last hard link 1 is removed. This means that a first hard link 1 (1) could be created for file 2 in a first directory, a second hard link 1 (2) could be created for the file 2 in another directory, the first hard link 1 (1) could be deleted, and the second hard link 1 (2) would still exist.
Other operating systems also support hard links, e.g., UNIX (in which they are called hard links) and OS2 (in which they are called shadows).
Antivirus scanners often make optimization decisions based upon the path or extension of a file 2. For example, if an ostensibly temporary file having the extension .tmp is opened, the antivirus scanner may decline to scan the contents of the file 2, because a .tmp file is not deemed by the antivirus scanner to be executable. However, if that .tmp file name is actually a hard link 1 (2) to an existing .exe file 2, modifying the .tmp file actually modifies the .exe file as well. In this scenario, the antivirus scanner could be lulled into not scanning a file 2 for the presence of malicious code when it should be scanning the file 2. This can result in computer 10 being harmed by the malicious code. As used herein, “malicious code” means any computer code that enters the computer 10 without an authorized user's knowledge and/or without an authorized user's consent. Thus, “malicious code” can include viruses, worms, and Trojan horses. As used herein, the term “antivirus scanner” is used in the broad sense, so that such scanner can detect all types of malicious code, including worms and Trojan horses as well as viruses.
An NTFS file 2 contains the number of hard links 1 to the file 2, but it does not identify the hard links 1 any further. Thus, when a user accesses file 2 via the second hard link 1 (2), this user knows that there are two other hard links 1 (1) and 1 (3), but is not told what they are. The only way for the user to find the other hard links 1 (1) and 1 (3) is to note the serial number that is included in each NTFS file 2, and then to do a search for all of the files 2 in the computer 10 matching that serial number. That is an extremely time consuming and cumbersome operation, and is the problem addressed by the present invention.
Bolosky et al., “Single Instance Storage in Windows 2000”, downloaded from the Internet on Oct. 11, 2002 at http://research.Microsoft.com/sn/Farsite/WSS2000.pdf, discloses the creation of backpointer tables in cases where a single file has multiple hard or symbolic links pointing to the file. Unlike the present invention, where the contents of file 2 do not change, an attempt to modify the contents of the target file in the reference results in a new version of the target file being created.
Computer-implemented methods, apparati, and computer-readable media for detecting malicious computer code in a file (2) associated with a computer (10). A method of the present invention comprises the steps of determining whether there is more than one hard link (1) to the file (2); and when there is more than one hard link (1), ascertaining the identities of all the hard links (1), and performing an antivirus scan on the file (2) based upon the hard link(s) (1) having the most restrictive scanning criteria of all the hard links (1), or upon the union of scanning criteria amongst all the hard links (1).
These and other more detailed and specific objects and features of the present invention are more fully disclosed in the following specification, reference being had to the accompanying drawings, in which:
A backpointer table construction module 6 has access to each file 2 and to the file's accompanying backpointer table 3. Modules 3, 4, 5, and 6 can be implemented in hardware, firmware, and/or software, or any combination thereof, and are normally implemented in software.
The initialization of table 3 begins at step 31. At step 32, construction module 6 asks whether there are any more files 2 to be subjected to the initialization routine. If not, the method ends at step 33. If there are more files 2 to be processed, the method proceeds to step 34, where construction module 6 selects the next file 2 to be processed. At step 35, construction module 6 asks whether there is more than one hard link 1 to file 2. This determination is made by construction module 6 examining the section of the file 2 that contains the number of hard links 1. If this section divulges that there is just one hard link 1, the method reverts to step 32. If, on the other hand, there is more than one hard link 1, the method proceeds to step 36, where construction module 6 creates a backpointer table 3, and links table 3 to file 2. Construction module 6 can create table 3 by means of determining the serial number of file 2 and searching through all the files 2 on the computer for entries having the same serial number. Each entry of table 3 should preferably contain the full path name for each hard link 1. This is useful, because decisions made by antivirus scanner 4 might require knowledge of the directory path and/or extension. The method then reverts to step 32.
Table 3 should be updated by construction module 6 each time a hard link 1 to file 2 is added, deleted, or renamed. File system filter driver 5 (or a client of driver 5) can be programmed to monitor when a hard link 1 is added, deleted, or renamed; and inform construction module 6 accordingly.
If step 43 discloses that there is more than one hard link 1 to the file 2, driver 5 examines (at step 44) table 3 to determine the identity of the hard link 1 or hard links 1 having the most (in relation to all the hard links 1 associated with that file 2) restrictive scanning criteria associated therewith. This determination is made on the basis of a set of preselected rules. For example, one such rule may be that a file 2 having an extension of .tmp does not have to be scanned by antivirus scanner 4, whereas a file 2 having an extension .exe does have to be scanned. In an alternative embodiment, antivirus scanner 4, rather than driver 5, performs step 44.
Finally, at step 45, antivirus scanner 4 performs the scan based upon said most restrictive criteria, based upon instructions issued by driver 5.
In an alternative embodiment, instead of performing steps 44 and 45, when the answer to the question posed in step 43 is “yes”, antivirus module 4 scans file 2 based upon the union of scanning criteria amongst all the hard links 1. The union of scanning criteria can be determined by antivirus scanner 4 or by driver 5.
The method begins at step 51. At step 52, construction module 6 asks whether there are any more files 2 to be checked. If there aren't any, the method ends at step 53. If there are files 2 still to be checked, the method proceeds to step 54, where construction module 6 selects the next file 2. At step 55, module 6 determines whether the stated (in the section of file 2 that gives the number of hard links 1) number of hard links 1 is equal to the number of entries in table 3 associated with that particular file 2. If these numbers are the same, the method reverts to step 52. If, on the other hand, these numbers are different, the method proceeds to step 56, where module 6 updates table 3. This updating can be performed in the same way that module 6 performs step 36 of
In an alternative embodiment of the present invention, any search module associated with the computer 10 that searches for files 2 by file name or portion of file name can be modified to look for not just the normal items that the search module has been programmed to look for, but also the information contained in backpointer table 3. This can enhance the usability of the search module. An example of such a search module is the search module known as Explorer, which is present on Windows operating systems. Say, for example, that the user asks Explorer to look for all files having extension .exe. If Explorer has been enhanced as described herein, Explorer will give the user citations to not just links from .exe but from other hard links 1 to the file 2 that don't have an extension of .exe.
The above description is included to illustrate the operation of the preferred embodiments and is not meant to limit the scope of the invention. The scope of the invention is to be limited only by the following claims. From the above discussion, many variations will be apparent to one skilled in the art that would yet be encompassed by the spirit and scope of the present invention.
McCorkendale, Bruce, Sobel, William
Patent | Priority | Assignee | Title |
10579798, | Dec 13 2016 | Acer Cyber Security Incorporated | Electronic device and method for detecting malicious file |
10891376, | Jun 21 2004 | PAYPAL, INC. | Render engine, and method of using the same, to verify data for access and/or publication via a computer system |
7526810, | Jun 21 2004 | PayPal, Inc | Method and system to verify data received, at a server system, for access and/or publication via the server system |
7971245, | Jun 21 2004 | PayPal, Inc | Method and system to detect externally-referenced malicious data for access and/or publication via a computer system |
8032938, | Mar 30 2009 | PayPal, Inc | Method and system to verify data received, at a server system, for access and/or publication via the server system |
8091115, | Oct 03 2008 | Microsoft Technology Licensing, LLC | Device-side inline pattern matching and policy enforcement |
8452093, | Nov 24 2007 | International Business Machines Corporation | Efficient histogram storage |
8453242, | Aug 12 2005 | CA, INC | System and method for scanning handles |
8756282, | Nov 19 2007 | MasterCard International Incorporated | Interpersonal communication enhancer |
9501642, | Jun 21 2004 | PayPal, Inc | Render engine, and method of using the same, to verify data for access and/or publication via a computer system |
9734331, | Jun 21 2004 | PAYPAL, INC. | Render engine, and method of using the same, to verify data for access and/or publication via a computer system |
Patent | Priority | Assignee | Title |
5398196, | Jul 29 1993 | NORTONLIFELOCK INC | Method and apparatus for detection of computer viruses |
5452442, | Jan 19 1993 | TREND MICRO INCORPORATED | Methods and apparatus for evaluating and extracting signatures of computer viruses and other undesirable software entities |
5495607, | Nov 15 1993 | CLOUDING CORP | Network management system having virtual catalog overview of files distributively stored across network domain |
5572590, | Apr 12 1994 | International Business Machines Corporation; IBM Corporation | Discrimination of malicious changes to digital information using multiple signatures |
5675710, | Jun 07 1995 | Alcatel-Lucent USA Inc | Method and apparatus for training a text classifier |
5694569, | Nov 19 1993 | Method for protecting a volatile file using a single hash | |
5826249, | Aug 03 1990 | ROCKWELL AUTOMATION TECHNOLOGIES, INC | Historical database training method for neural networks |
5832208, | Sep 05 1996 | GOOGLE LLC | Anti-virus agent for use with databases and mail servers |
5832527, | Sep 08 1993 | Fujitsu Limited | File management system incorporating soft link data to access stored objects |
5854916, | Feb 09 1996 | Symantec Corporation | State-based cache for antivirus software |
5884033, | May 15 1996 | OPENTV, INC | Internet filtering system for filtering data transferred over the internet utilizing immediate and deferred filtering actions |
5944821, | Jul 11 1996 | HEWLETT-PACKARD DEVELOPMENT COMPANY, L P | Secure software registration and integrity assessment in a computer system |
5974549, | Mar 27 1997 | Microsoft Technology Licensing, LLC | Security monitor |
6006242, | Apr 05 1996 | WOLTERS KLUWER FINANCIAL SERVICES, INC | Apparatus and method for dynamically creating a document |
6021510, | Nov 24 1997 | POWER MANAGEMENT ENTERPRISES, LLC | Antivirus accelerator |
6023723, | Dec 22 1997 | Comcast IP Holdings I, LLC | Method and system for filtering unwanted junk e-mail utilizing a plurality of filtering mechanisms |
6052709, | Dec 23 1997 | Symantec Corporation | Apparatus and method for controlling delivery of unsolicited electronic mail |
6072942, | Sep 18 1996 | McAfee, LLC | System and method of electronic mail filtering using interconnected nodes |
6088803, | Mar 27 1997 | Intel Corporation | System for virus-checking network data during download to a client device |
6092194, | Nov 06 1997 | FINJAN LLC | System and method for protecting a computer and a network from hostile downloadables |
6094731, | Nov 24 1997 | POWER MANAGEMENT ENTERPRISES, LLC | Antivirus accelerator for computer networks |
6125459, | Jan 24 1997 | International Business Machines Company | Information storing method, information storing unit, and disk drive |
6161130, | Jun 23 1998 | Microsoft Technology Licensing, LLC | Technique which utilizes a probabilistic classifier to detect "junk" e-mail by automatically updating a training and re-training the classifier based on the updated training set |
6253169, | May 28 1998 | Nuance Communications, Inc | Method for improvement accuracy of decision tree based text categorization |
6298351, | Apr 11 1997 | International Business Machines Corporation; IBM Corporation | Modifying an unreliable training set for supervised classification |
6347310, | May 11 1998 | International Business Machines Corporation | Computer system and process for training of analytical models using large data sets |
6370526, | May 18 1999 | IBM Corporation | Self-adaptive method and system for providing a user-preferred ranking order of object sets |
6397200, | Mar 18 1999 | The United States of America as represented by the Secretary of the Navy; NAVY, UNITED STATES OF AMERICA, THE, AS REPRESENTED BY THE SECRETARY OF THE | Data reduction system for improving classifier performance |
6397215, | Oct 29 1999 | International Business Machines Corporation | Method and system for automatic comparison of text classifications |
6401122, | Jul 19 1996 | Fujitsu Limited | Communication management apparatus |
6421709, | Dec 22 1997 | Comcast IP Holdings I, LLC | E-mail filter and method thereof |
6424960, | Oct 14 1999 | SALK INSTITUTE, THE | Unsupervised adaptation and classification of multiple classes and sources in blind signal separation |
6442606, | Aug 12 1999 | R2 SOLUTIONS LLC | Method and apparatus for identifying spoof documents |
6456991, | Sep 01 1999 | HRL Laboratories, LLC | Classification method and apparatus based on boosting and pruning of multiple classifiers |
6502082, | Jun 01 1999 | Microsoft Technology Licensing, LLC | Modality fusion for object tracking with training system and method |
6505167, | Apr 20 1999 | Microsoft Technology Licensing, LLC | Systems and methods for directing automated services for messaging and scheduling |
6546416, | Dec 09 1998 | GOOGLE LLC | Method and system for selectively blocking delivery of bulk electronic mail |
6721721, | Jun 15 2000 | TREND MICRO INCORPORATED | Virus checking and reporting for computer database search results |
6751789, | Dec 12 1997 | International Business Machines Corporation | Method and system for periodic trace sampling for real-time generation of segments of call stack trees augmented with call stack position determination |
6772346, | Jul 16 1999 | TREND MICRO INCORPORATED | System and method for managing files in a distributed system using filtering |
6842861, | Mar 24 2000 | McAfee, Inc | Method and system for detecting viruses on handheld computers |
6886099, | Sep 12 2000 | JPMORGAN CHASE BANK, N A ; MORGAN STANLEY SENIOR FUNDING, INC | Computer virus detection |
6944555, | Dec 30 1994 | POWER MEASUREMENT LTD | Communications architecture for intelligent electronic devices |
6952779, | Oct 01 2002 | SKYBOX SECURITY, INC | System and method for risk detection and analysis in a computer network |
6973578, | May 31 2000 | JPMORGAN CHASE BANK, N A ; MORGAN STANLEY SENIOR FUNDING, INC | System, method and computer program product for process-based selection of virus detection actions |
7024403, | Apr 27 2001 | ARCTERA US LLC | Filter driver for identifying disk files by analysis of content |
20020035693, | |||
20020038308, | |||
20020046207, | |||
20020073046, | |||
20020087649, | |||
20020138525, | |||
20020147694, | |||
20020147782, | |||
20020178375, | |||
20020194488, | |||
20020194489, | |||
20020199186, | |||
20020199194, | |||
20030023875, | |||
20030033587, | |||
20030061287, | |||
20030065926, | |||
20030110280, | |||
20030110393, | |||
20030110395, | |||
20030115458, | |||
20030115479, | |||
20030154394, | |||
20030167402, | |||
20030233352, | |||
20040015554, | |||
20040039921, | |||
20040103310, | |||
20040117401, | |||
20040117641, | |||
20040220975, | |||
EP636977, | |||
EP1408393, | |||
WO9915966, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Oct 23 2002 | SOBEL, WILLIAM E | Symantec Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 013432 | /0001 | |
Oct 23 2002 | MCCORKENDALE, BRUCE | Symantec Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 013432 | /0001 | |
Oct 24 2002 | Symantec Corporation | (assignment on the face of the patent) | / | |||
Nov 04 2019 | Symantec Corporation | CA, INC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 051144 | /0918 |
Date | Maintenance Fee Events |
Feb 22 2011 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Jan 28 2015 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Jan 28 2019 | M1553: Payment of Maintenance Fee, 12th Year, Large Entity. |
Date | Maintenance Schedule |
Aug 21 2010 | 4 years fee payment window open |
Feb 21 2011 | 6 months grace period start (w surcharge) |
Aug 21 2011 | patent expiry (for year 4) |
Aug 21 2013 | 2 years to revive unintentionally abandoned end. (for year 4) |
Aug 21 2014 | 8 years fee payment window open |
Feb 21 2015 | 6 months grace period start (w surcharge) |
Aug 21 2015 | patent expiry (for year 8) |
Aug 21 2017 | 2 years to revive unintentionally abandoned end. (for year 8) |
Aug 21 2018 | 12 years fee payment window open |
Feb 21 2019 | 6 months grace period start (w surcharge) |
Aug 21 2019 | patent expiry (for year 12) |
Aug 21 2021 | 2 years to revive unintentionally abandoned end. (for year 12) |