US20130117858A1 - Method and System for Ensuring a Sharing Violation Free Environment for a Trusted Software Agent - Google Patents
Method and System for Ensuring a Sharing Violation Free Environment for a Trusted Software Agent Download PDFInfo
- Publication number
- US20130117858A1 US20130117858A1 US13/731,373 US201213731373A US2013117858A1 US 20130117858 A1 US20130117858 A1 US 20130117858A1 US 201213731373 A US201213731373 A US 201213731373A US 2013117858 A1 US2013117858 A1 US 2013117858A1
- Authority
- US
- United States
- Prior art keywords
- file
- access
- trusted agent
- application
- request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
- 238000000034 method Methods 0.000 title claims abstract description 29
- 238000012958 reprocessing Methods 0.000 claims abstract description 7
- 230000001960 triggered effect Effects 0.000 claims description 9
- 230000004044 response Effects 0.000 claims description 5
- 230000011664 signaling Effects 0.000 claims description 3
- 238000004590 computer program Methods 0.000 claims 11
- 230000008569 process Effects 0.000 abstract description 9
- 239000003795 chemical substances by application Substances 0.000 description 85
- 238000012545 processing Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000002155 anti-virotic effect Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 230000002265 prevention Effects 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 235000003642 hunger Nutrition 0.000 description 1
- 230000001939 inductive effect Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000010223 real-time analysis Methods 0.000 description 1
- 230000037351 starvation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/52—Indexing scheme relating to G06F9/52
- G06F2209/522—Manager
Definitions
- the present invention relates to a method and system for providing a sharing violation free environment for a trusted software agent that monitors file I/O operations and file manipulations done by other applications.
- a trusted software agent component typically relies on I/O file operations of other applications and examines files written by these applications.
- Such an agent can be found in fields such as anti-virus applications or data loss prevention agents.
- the agent is triggered to scan files, usually as a result of a file operation executed on the same files by another arbitrary application.
- Such applications tend to perform a sequence of low level file operations, which can be regarded as a high level file save operation.
- Each low level operation may trigger the agent to examine the file, while the application may still request further access to the file. This situation may lead to sharing violations between the agent and the applications manipulating the files. While the agent can be designed to gracefully handle sharing violations, this situation can seriously damage the behavior of other applications in use.
- the problem may be caused when a user application requests exclusive rights to a file during the time that the agent is already holding the file.
- Some agent applications, especially anti-virus applications have a strict solution—when the agent identifies that another application requests a file that it is using, it will either immediately release the file (allowing the application to continue) or force the application to wait, by delaying the return of the file handle. This solution is possible since the agent installs a file filter driver that can track create file requests by both the agent and by other applications.
- the two main drawbacks of this traditional solution are that the agent and application will handle the requests in a sequential, non concurrent manner, even if a sharing violation is not inevitable, and that the agent's file filter driver is required to realize that the same file is in use by the agent and other applications.
- This requirement which may seem simple at first glance, is in fact very complicated. Files can be accessed using various file names due to symbolic links, shortcuts, relative paths, etc.
- the agent's file filter driver is required to resolve all requests in a manner which will ensure the recognition of different requests to the same files.
- the present invention provides a method and system by which an agent can perform in a sharing violation free environment, which reduces complexity and eliminates interference with applications.
- This solution allows concurrent access of both the agent and other applications to the same files as long as a sharing violation does not occur.
- the applications do not need to wait for the agent to complete examining the files unless a sharing violation actually occurs, and only if the sharing violation is indeed caused because the trusted agent is handling the same file as the application itself.
- this approach is simple, robust, does not require complex mapping of the file system and provides a much better throughput by reducing application waiting time.
- This solution is not restricted only to data loss prevention or antivirus applications; it can also benefit scanning/indexing applications and other applications that require real time analysis of files.
- a method for handling sharing violations in a computer system comprises intercepting a request by an application for access to a file, capturing a sharing violation raised by the operating system in response to the said request, determining whether the sharing violation occurred due to the trusted agent and in that case queuing the application file access request until the trusted agent completes processing the file and then reprocessing the application's file access request.
- a sharing violation occurs in response to an application's file access request, it can be determined if it has occurred due to the trusted agent. This is done by counting the agent file accesses triggered by applications and examining the appropriate counter at the time a sharing violation is raised. The agent maintains a counter per each application triggering the agent, which counts active file handles used by the agent and that are triggered by the application. When the counter is greater than zero it implies that the agent is handling files due to an operation previously performed by the application which the counter refers to. At such time, if a sharing violation is raised due to a file handle request by the same application if could be determined with high confidence that the sharing violation is caused by the trusted agent. The present invention will queue the application file access request and reprocess it later.
- the method may further comprise signaling the trusted agent that the file system has raised a sharing violation for an application file access request and that the violation is due to the trusted agent.
- the method may further comprise determining when the trusted agent no longer has access to the files requested the other application when the appropriate counter value is zero and reprocessing the application file access request previously queued.
- FIG. 1 is an exemplary block diagram of a software system, such as in a host computer system, in which the present invention may be implemented.
- FIG. 2 is an exemplary flow diagram of a process of monitoring agent file access.
- FIG. 3 is an exemplary flow diagram of a process of handling other application's file access requests.
- FIG. 4 is an exemplary flow diagram of a process of handling other application's file access requests using a potential violation request list.
- FIG. 5 is an exemplary block diagram of a computer system, in which the present invention may be implemented.
- System 100 includes trusted agent 101 , other applications 102 , file filter driver 103 for trusted agent 101 , file system 104 , pending sharing violation queues 105 , and pending violation requests lists 106 .
- Trusted agent 101 is a software component that tracks files written by other applications 102 .
- Agent 101 has sharing violation extensions 101 A, which are data structure that store information about file handles used by the agent and triggered by the application. The agent maintains an instance of this data structure per each application that triggers the agent file access requests.
- Sharing violation extensions 101 A interact with complementary sharing violation extensions 103 A installed with the agent's file filter driver 103 .
- the underlying file system 104 receives the access requests from the file filter driver 103 and may occasionally raise a sharing violation.
- File system 104 is software for storing and organizing computer files and the data they contain to provide the capability to find and access the files. Typically, file systems are considered part of the operating system of the computer. File systems may use a data storage device such as a hard disk or CD-ROM and involve maintaining the physical location of the files. More formally, a file system is a set of abstract data types that are implemented for the storage, hierarchical organization, manipulation, navigation, access, and retrieval of data.
- File filter driver 103 is a driver that adds value to or modifies the behavior of another driver—specifically, file system 104 . File filter driver 103 can filter I/O operations for one or more file systems or file system volumes. Depending on the nature of the driver, file filter driver 103 can log, observe, or modify file system events, or the filter can even prevent file system events from occurring.
- the agent's file filter driver 103 uses two types of data structures; pending sharing violation queues 105 and potential violating request lists 106 .
- the data structures including sharing violation queue 105 , potential violation request list 106 , sharing violation extension 101 A, and sharing violation extension 103 A are all implemented so that they have instances per each lock type.
- the data structures are replicated for each application (the application inducing the agent request is used as a representative to map the appropriate data structure), while other possible implementations can store these structures per file system mount or other lock types.
- a trusted agent's file access process 200 is shown in FIG. 2 . It is best viewed in conjunction with FIG. 1 .
- an application file access triggers the agent to also access the file.
- the agent 101 uses the appropriate sharing violation extension 101 A to acquire a sharing object lock.
- the sharing object increases a reference count, which holds the number of agent file access requests currently being processed and that were all triggered by the same application. This value is non negative, and can be greater than one if there are several agent threads.
- the agent's file filter driver 103 proceeds with the file access request 204 by sending the request to the underlying file system.
- This request may fail, resulting in a sharing violation 205 , if the other application has already acquired exclusive sharing access for the file.
- the file filter driver 103 propagates 208 the sharing violation to the agent which is responsible for gracefully handling this error. This type of failure is not a concern since it is not causing other applications to fail and may be handled by the trusted agent.
- the sharing extension's appropriate reference counter is decreased.
- FIG. 3 A process 300 of handling other application's file access requests is shown in FIG. 3 . It is best viewed in conjunction with FIG. 1 .
- the process begins with step 302 , in which, an arbitrary application requests access to a file.
- step 304 the request is passed 202 through the agent's file filter driver 103 , since the driver 103 is installed at the file filter driver stack.
- step 306 the agent's file filter driver 103 captures possible sharing violations 205 raised by the operating system (file system) 104 . If no sharing violation is raised, then, in step 308 , the access is allowed without interference and file filter driver passes the file handle 203 to the requesting application 102 .
- step 310 it is determined whether the application specific sharing object reference counter is zero at that time. If so, it means that the agent is not processing the same file, but rather another arbitrary application was causing the sharing violation. In this case, in step 312 , the file filter driver 103 will propagate the sharing violation to the requesting application, since the violation was not triggered by the trusted agent. However, in step 310 , if at the time the sharing violation was raised, the reference counter is greater than zero, the file filter driver must take action as this indicates with high probability a sharing violation caused by the trusted agent. In this case, in step 314 , the file filter driver 103 will insert the application request 206 to the appropriate pending sharing violation queue 105 .
- step 316 when the agent 101 finishes processing the file, it releases the sharing object lock, reducing the reference counter.
- step 316 when the reference counter is reduced to zero a de-queue is performed from the pending sharing violation queue 105 .
- a file access request, made earlier by an application and failed due to a sharing violation, is now resent 204 to the file system 104 . Since the agent is not processing the same file at this time, the request may either succeed and a file handle will be returned to the requesting application, or a sharing violation may be raised, but in this case it is definitely not caused by the trusted agent.
- the application eventually receives the requested file handle and cannot distinguish between the case where the file handle was gained immediately and the case where the request invoked a sharing violation, was queued and eventually reprocessed.
- the intercept/capture/determine/queue/reprocess sequence is masked from the requesting application. Consequently sharing violations induced by the trusted agent are never realized by other applications and does not interrupt with their work.
- a file handle request issued by an application causes a sharing violation, and the sharing violation is caused by the agent, the request is inserted 206 into the pending sharing violation queue 105 .
- the agent will be blocked from requesting additional file access requests that require the same sharing object and will only be allowed to release the sharing object lock. This mechanism is intended to reduce application waiting time by assuring that the agent minimizes file access requests once it is interfering with other applications.
- a possible race condition can be caused in the following scenario: An application requests access to a file which is used by the trusted agent. The operating system raises a sharing violation, but before the file filter driver 103 is able to establish that the sharing violation is induced by the trusted agent, a context switch allows the agent to reduce the sharing object reference count to zero. In this case the file filter driver will not realize that the sharing violation was caused because of the trusted agent, and therefore the application's request will fail, instead of being sent to the pending queue for reprocessing.
- the solution to the described scenario is the use of the potential violation request list 106 , as shown in FIG. 4 .
- potential violation request list 106 The purpose of potential violation request list 106 is to store the state of the sharing violation object at the time the request was passed to the file system (allowing the file filter driver to use this information later).
- the file filter driver checks if the appropriate sharing object reference count is non zero, step 402 . In this case, in step 404 , the request is added to the potential sharing violation list 207 before being sent to the file system in step 306 . If, in step 306 , the file system returns the request successfully, then in step 406 , it is removed from the list. However, if a sharing violation is returned, and the sharing object reference count is zero, the presence of the request in the list indicates that the sharing violation was probably caused by the trusted agent.
- step 314 the file filter driver 103 will insert the application request 206 to the appropriate pending sharing violation queue 105 .
- the agent 101 finishes processing the file it releases the sharing object lock, reducing the reference counter.
- step 316 when the reference counter is reduced to zero a de-queue is performed from the pending sharing violation queue 105 .
- a file access request, made earlier by an application and failed due to a sharing violation, is now resent 204 to the file system 104 . If at step 310 the counter is zero, the pending request list is checked 311 to determine if the request was added to the list in step 404 . If so, then step 314 is followed as the sharing violation was probably due to the trusted agent and the request is removed from the list.
- Computer system 500 is typically a programmed general-purpose computer system, such as a personal computer, workstation, server system, and minicomputer or mainframe computer.
- Computer system 500 includes one or more processors (CPUs) 502 A- 502 N, input/output circuitry 540 , network adapter 506 , and memory 508 .
- CPUs 502 A- 502 N execute program instructions in order to carry out the functions of the present invention.
- CPUs 502 A- 502 N are one or more microprocessors, such as an INTEL PENTIUM® processor.
- FIG. 5 illustrates an embodiment in which computer system 500 is implemented as a single multi-processor computer system, in which multiple processors 502 A- 502 N share system resources, such as memory 508 , input/output circuitry 504 , and network adapter 506 .
- system resources such as memory 508 , input/output circuitry 504 , and network adapter 506 .
- the present invention also contemplates embodiments in which computer system 500 is implemented as a plurality of networked computer systems, which may be single-processor computer systems, multi-processor computer systems, or a mix thereof.
- Input/output circuitry 504 provides the capability to input data to, or output data from, computer system 500 .
- input/output circuitry may include input devices, such as keyboards, mice, touchpads, trackballs, scanners, etc., output devices, such as video adapters, monitors, printers, etc., and input/output devices, such as, modems, etc.
- Network adapter 506 interfaces computer system 500 with Internet/intranet 510 .
- Internet/intranet 510 may include one or more standard local area network (LAN) or wide area network (WAN), such as Ethernet, Token Ring, the Internet, or a private or proprietary LAN/WAN.
- LAN local area network
- WAN wide area network
- Memory 508 stores program instructions that are executed by, and data that are used and processed by, CPUs 502 A-N to perform the functions of computer system 500 .
- Memory 504 may include electronic memory devices, such as random-access memory, (RAM), read-only memory (ROM), programmable read-only memory (PROM), electrically erasable programmable read-only memory (EEPROM), flash memory, etc., and electromechanical memory, such as magnetic disk drives, tape drives, optical disk drives, etc., which may use an integrated drive electronics (IDE) interface, or a variation or enhancement thereof, such as enhanced IDE (BIDE) or ultra direct memory access (UDMA), or a small computer system interface (SCSI) based interface, or a variation or enhancement thereof, such as fast-SCSI, wide-SCSI, fast and wide-SCSI, etc., or a fiber channel-arbitrated loop (FC-AL) interface.
- IDE integrated drive electronics
- BIDE enhanced IDE
- UDMA ultra direct memory access
- SCSI small computer system interface
- memory 508 includes trusted agent 101 , sharing violation extension 101 A, other applications 102 , file filter driver 103 for trusted agent 101 , sharing violation extension 103 A, file system 104 , pending sharing violation queue 105 , pending violation requests lists 106 , and operating system 512 .
- Trusted agent 101 is a software component that tracks file 110 of other applications 102 .
- Agent 101 has a sharing violation extension 101 A, which is a data structure that stores information about to sharing violations relating to agent 101 . Sharing violation extension 101 A interacts with a complementary sharing violation extension 103 A installed with the agent's file filter driver 103 .
- Sharing violation extension 103 A is a data structure that stores information about to sharing violations relating to the agent's file filter driver 103 .
- File system 104 is software for storing and organizing computer files and the data they contain to provide the capability to find and access the files. Typically, file system 104 is part of operating system 512 .
- the agent's file filter driver 103 uses two data structures—a pending sharing violation queue 105 and a potential violating request list 106 .
- Operating system 512 provides overall system functionality.
- the present invention contemplates implementation on a system or systems that provide multi-processor, multi-tasking, multi-process, and/or multi-thread computing, as well as implementation on systems that provide only single processor, single thread computing.
- Multi-processor computing involves performing computing using more than one processor.
- Multi-tasking computing involves performing computing using more than one operating system task.
- a task is an operating system concept that refers to the combination of a program being executed and bookkeeping information used by the operating system. Whenever a program is executed, the operating system creates a new task for it. The task is like an envelope for the program in that it identifies the program with a task number and attaches other bookkeeping information to it.
- Multi-tasking is the ability of an operating system to execute more than one executable at the same time.
- Each executable is running in its own address space, meaning that the executables have no way to share any of their memory. This has advantages, because it is impossible for any program to damage the execution of any of the other programs running on the system. However, the programs have no way to exchange any information except through the operating system (or by reading files stored on the file system).
- Multi-process computing is similar to multi-tasking computing, as the terms task and process are often used interchangeably, although some operating systems make a distinction between the two.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Storage Device Security (AREA)
Abstract
A method and system is provided by which a trusted software agent can perform in a sharing violation free environment, which reduces complexity and eliminates interference with applications. A method for handling sharing violations in a computer system comprises intercepting a request by an application for access to a file, capturing a sharing violation raised by the operating system, determining whether the sharing violation is due to the trusted agent, and if so holding the request by the application for access to the file until the trusted agent no longer holds the file, and then reprocessing the request by the application for access to the file. The application is not aware that the sharing violation due to the trusted agent occurred, or that the request was pending and reprocessed because at the end of the process the application receives a file handle as if a sharing violation did not occur.
Description
- The present invention relates to a method and system for providing a sharing violation free environment for a trusted software agent that monitors file I/O operations and file manipulations done by other applications.
- A trusted software agent component typically relies on I/O file operations of other applications and examines files written by these applications. Such an agent can be found in fields such as anti-virus applications or data loss prevention agents. The agent is triggered to scan files, usually as a result of a file operation executed on the same files by another arbitrary application. Typically, such applications tend to perform a sequence of low level file operations, which can be regarded as a high level file save operation. Each low level operation may trigger the agent to examine the file, while the application may still request further access to the file. This situation may lead to sharing violations between the agent and the applications manipulating the files. While the agent can be designed to gracefully handle sharing violations, this situation can seriously damage the behavior of other applications in use.
- For example, the problem may be caused when a user application requests exclusive rights to a file during the time that the agent is already holding the file. Some agent applications, especially anti-virus applications, have a strict solution—when the agent identifies that another application requests a file that it is using, it will either immediately release the file (allowing the application to continue) or force the application to wait, by delaying the return of the file handle. This solution is possible since the agent installs a file filter driver that can track create file requests by both the agent and by other applications. The two main drawbacks of this traditional solution are that the agent and application will handle the requests in a sequential, non concurrent manner, even if a sharing violation is not inevitable, and that the agent's file filter driver is required to realize that the same file is in use by the agent and other applications. This requirement, which may seem simple at first glance, is in fact very complicated. Files can be accessed using various file names due to symbolic links, shortcuts, relative paths, etc. The agent's file filter driver is required to resolve all requests in a manner which will ensure the recognition of different requests to the same files.
- Thus, the traditional approach is complex and can interfere with the normal operation of applications. A need arises for a technique by which an agent can perform in a sharing violation free environment, which reduces complexity and eliminates interference with applications.
- The present invention provides a method and system by which an agent can perform in a sharing violation free environment, which reduces complexity and eliminates interference with applications. This solution allows concurrent access of both the agent and other applications to the same files as long as a sharing violation does not occur. The applications do not need to wait for the agent to complete examining the files unless a sharing violation actually occurs, and only if the sharing violation is indeed caused because the trusted agent is handling the same file as the application itself. Furthermore this approach is simple, robust, does not require complex mapping of the file system and provides a much better throughput by reducing application waiting time. This solution is not restricted only to data loss prevention or antivirus applications; it can also benefit scanning/indexing applications and other applications that require real time analysis of files.
- A method for handling sharing violations in a computer system comprises intercepting a request by an application for access to a file, capturing a sharing violation raised by the operating system in response to the said request, determining whether the sharing violation occurred due to the trusted agent and in that case queuing the application file access request until the trusted agent completes processing the file and then reprocessing the application's file access request.
- When a sharing violation occurs in response to an application's file access request, it can be determined if it has occurred due to the trusted agent. This is done by counting the agent file accesses triggered by applications and examining the appropriate counter at the time a sharing violation is raised. The agent maintains a counter per each application triggering the agent, which counts active file handles used by the agent and that are triggered by the application. When the counter is greater than zero it implies that the agent is handling files due to an operation previously performed by the application which the counter refers to. At such time, if a sharing violation is raised due to a file handle request by the same application if could be determined with high confidence that the sharing violation is caused by the trusted agent. The present invention will queue the application file access request and reprocess it later. If an application file access request raises a sharing violation while the relevant agent counter is zero, it implies that the agent is not holding any files requested by the application and that the sharing violation was definitely not due to the trusted agent but rather due to a collision between two arbitrary applications, and in that case the sharing violation will be raised to the application requesting the file without any intervention. The method may further comprise signaling the trusted agent that the file system has raised a sharing violation for an application file access request and that the violation is due to the trusted agent. The method may further comprise determining when the trusted agent no longer has access to the files requested the other application when the appropriate counter value is zero and reprocessing the application file access request previously queued.
- The details of the present invention, both as to its structure and operation, can best be understood by referring to the accompanying drawings, in which like reference numbers and designations refer to like elements.
-
FIG. 1 is an exemplary block diagram of a software system, such as in a host computer system, in which the present invention may be implemented. -
FIG. 2 is an exemplary flow diagram of a process of monitoring agent file access. -
FIG. 3 is an exemplary flow diagram of a process of handling other application's file access requests. -
FIG. 4 is an exemplary flow diagram of a process of handling other application's file access requests using a potential violation request list. -
FIG. 5 is an exemplary block diagram of a computer system, in which the present invention may be implemented. - A
software system 100 in which the present invention may be implemented is shown inFIG. 1 .System 100 includes trustedagent 101,other applications 102,file filter driver 103 for trustedagent 101,file system 104, pendingsharing violation queues 105, and pending violation requests lists 106. Trustedagent 101 is a software component that tracks files written byother applications 102.Agent 101 has sharingviolation extensions 101A, which are data structure that store information about file handles used by the agent and triggered by the application. The agent maintains an instance of this data structure per each application that triggers the agent file access requests. Sharingviolation extensions 101A interact with complementarysharing violation extensions 103A installed with the agent'sfile filter driver 103. Theunderlying file system 104 receives the access requests from thefile filter driver 103 and may occasionally raise a sharing violation. -
File system 104 is software for storing and organizing computer files and the data they contain to provide the capability to find and access the files. Typically, file systems are considered part of the operating system of the computer. File systems may use a data storage device such as a hard disk or CD-ROM and involve maintaining the physical location of the files. More formally, a file system is a set of abstract data types that are implemented for the storage, hierarchical organization, manipulation, navigation, access, and retrieval of data.File filter driver 103 is a driver that adds value to or modifies the behavior of another driver—specifically,file system 104.File filter driver 103 can filter I/O operations for one or more file systems or file system volumes. Depending on the nature of the driver,file filter driver 103 can log, observe, or modify file system events, or the filter can even prevent file system events from occurring. - The agent's
file filter driver 103 uses two types of data structures; pendingsharing violation queues 105 and potentialviolating request lists 106. The data structures includingsharing violation queue 105, potentialviolation request list 106, sharingviolation extension 101A, and sharingviolation extension 103A are all implemented so that they have instances per each lock type. In a preferred embodiment, the data structures are replicated for each application (the application inducing the agent request is used as a representative to map the appropriate data structure), while other possible implementations can store these structures per file system mount or other lock types. - A trusted agent's
file access process 200 is shown inFIG. 2 . It is best viewed in conjunction withFIG. 1 . In step 209 an application file access triggers the agent to also access the file. Instep 210, when theagent 101 needs to open thefile 201, it uses the appropriatesharing violation extension 101A to acquire a sharing object lock. The sharing object increases a reference count, which holds the number of agent file access requests currently being processed and that were all triggered by the same application. This value is non negative, and can be greater than one if there are several agent threads. Instep 212, the agent'sfile filter driver 103 proceeds with thefile access request 204 by sending the request to the underlying file system. This request may fail, resulting in asharing violation 205, if the other application has already acquired exclusive sharing access for the file. In this case, instep 214, thefile filter driver 103 propagates 208 the sharing violation to the agent which is responsible for gracefully handling this error. This type of failure is not a concern since it is not causing other applications to fail and may be handled by the trusted agent. Instep 216, once the agent finishes processing the file and disposes the file handle, the sharing extension's appropriate reference counter is decreased. - A process 300 of handling other application's file access requests is shown in
FIG. 3 . It is best viewed in conjunction withFIG. 1 . The process begins withstep 302, in which, an arbitrary application requests access to a file. Instep 304, the request is passed 202 through the agent'sfile filter driver 103, since thedriver 103 is installed at the file filter driver stack. Instep 306, the agent'sfile filter driver 103 capturespossible sharing violations 205 raised by the operating system (file system) 104. If no sharing violation is raised, then, instep 308, the access is allowed without interference and file filter driver passes thefile handle 203 to the requestingapplication 102. - If, in
step 306, a sharing violation is raised, then instep 310, it is determined whether the application specific sharing object reference counter is zero at that time. If so, it means that the agent is not processing the same file, but rather another arbitrary application was causing the sharing violation. In this case, instep 312, thefile filter driver 103 will propagate the sharing violation to the requesting application, since the violation was not triggered by the trusted agent. However, instep 310, if at the time the sharing violation was raised, the reference counter is greater than zero, the file filter driver must take action as this indicates with high probability a sharing violation caused by the trusted agent. In this case, instep 314, thefile filter driver 103 will insert theapplication request 206 to the appropriate pendingsharing violation queue 105. Once theagent 101 finishes processing the file, it releases the sharing object lock, reducing the reference counter. Instep 316, when the reference counter is reduced to zero a de-queue is performed from the pendingsharing violation queue 105. A file access request, made earlier by an application and failed due to a sharing violation, is now resent 204 to thefile system 104. Since the agent is not processing the same file at this time, the request may either succeed and a file handle will be returned to the requesting application, or a sharing violation may be raised, but in this case it is definitely not caused by the trusted agent. The application eventually receives the requested file handle and cannot distinguish between the case where the file handle was gained immediately and the case where the request invoked a sharing violation, was queued and eventually reprocessed. The intercept/capture/determine/queue/reprocess sequence is masked from the requesting application. Consequently sharing violations induced by the trusted agent are never realized by other applications and does not interrupt with their work. - Preventing Starvation.
- Once a file handle request issued by an application causes a sharing violation, and the sharing violation is caused by the agent, the request is inserted 206 into the pending
sharing violation queue 105. At this time it is important to signal the agent that it is causing a sharing violation. This is done, instep 314, by raising a sharing violation event using the file filter driver and agent's sharing violation extensions. Once a sharing violation event is raised, the agent will be blocked from requesting additional file access requests that require the same sharing object and will only be allowed to release the sharing object lock. This mechanism is intended to reduce application waiting time by assuring that the agent minimizes file access requests once it is interfering with other applications. - Race Condition.
- A possible race condition can be caused in the following scenario: An application requests access to a file which is used by the trusted agent. The operating system raises a sharing violation, but before the
file filter driver 103 is able to establish that the sharing violation is induced by the trusted agent, a context switch allows the agent to reduce the sharing object reference count to zero. In this case the file filter driver will not realize that the sharing violation was caused because of the trusted agent, and therefore the application's request will fail, instead of being sent to the pending queue for reprocessing. The solution to the described scenario is the use of the potentialviolation request list 106, as shown inFIG. 4 . The purpose of potentialviolation request list 106 is to store the state of the sharing violation object at the time the request was passed to the file system (allowing the file filter driver to use this information later). When an application requests access to a file,step 302, the file filter driver checks if the appropriate sharing object reference count is non zero,step 402. In this case, instep 404, the request is added to the potentialsharing violation list 207 before being sent to the file system instep 306. If, instep 306, the file system returns the request successfully, then instep 406, it is removed from the list. However, if a sharing violation is returned, and the sharing object reference count is zero, the presence of the request in the list indicates that the sharing violation was probably caused by the trusted agent. In this case, instep 314, thefile filter driver 103 will insert theapplication request 206 to the appropriate pendingsharing violation queue 105. Once theagent 101 finishes processing the file, it releases the sharing object lock, reducing the reference counter. Instep 316, when the reference counter is reduced to zero a de-queue is performed from the pendingsharing violation queue 105. A file access request, made earlier by an application and failed due to a sharing violation, is now resent 204 to thefile system 104. If atstep 310 the counter is zero, the pending request list is checked 311 to determine if the request was added to the list instep 404. If so, then step 314 is followed as the sharing violation was probably due to the trusted agent and the request is removed from the list. If the request is not in the list, the sharing violation is sent to the application instep 312 as the sharing violation was not caused by the agent. An exemplary block diagram of acomputer system 500, in which the present invention may be implemented. is shown inFIG. 5 .Computer system 500 is typically a programmed general-purpose computer system, such as a personal computer, workstation, server system, and minicomputer or mainframe computer.Computer system 500 includes one or more processors (CPUs) 502A-502N, input/output circuitry 540, network adapter 506, andmemory 508. CPUs 502A-502N execute program instructions in order to carry out the functions of the present invention. Typically, CPUs 502A-502N are one or more microprocessors, such as an INTEL PENTIUM® processor.FIG. 5 illustrates an embodiment in whichcomputer system 500 is implemented as a single multi-processor computer system, in which multiple processors 502A-502N share system resources, such asmemory 508, input/output circuitry 504, and network adapter 506. However, the present invention also contemplates embodiments in whichcomputer system 500 is implemented as a plurality of networked computer systems, which may be single-processor computer systems, multi-processor computer systems, or a mix thereof. - Input/
output circuitry 504 provides the capability to input data to, or output data from,computer system 500. For example, input/output circuitry may include input devices, such as keyboards, mice, touchpads, trackballs, scanners, etc., output devices, such as video adapters, monitors, printers, etc., and input/output devices, such as, modems, etc. Network adapter 506interfaces computer system 500 with Internet/intranet 510. Internet/intranet 510 may include one or more standard local area network (LAN) or wide area network (WAN), such as Ethernet, Token Ring, the Internet, or a private or proprietary LAN/WAN. -
Memory 508 stores program instructions that are executed by, and data that are used and processed by, CPUs 502A-N to perform the functions ofcomputer system 500.Memory 504 may include electronic memory devices, such as random-access memory, (RAM), read-only memory (ROM), programmable read-only memory (PROM), electrically erasable programmable read-only memory (EEPROM), flash memory, etc., and electromechanical memory, such as magnetic disk drives, tape drives, optical disk drives, etc., which may use an integrated drive electronics (IDE) interface, or a variation or enhancement thereof, such as enhanced IDE (BIDE) or ultra direct memory access (UDMA), or a small computer system interface (SCSI) based interface, or a variation or enhancement thereof, such as fast-SCSI, wide-SCSI, fast and wide-SCSI, etc., or a fiber channel-arbitrated loop (FC-AL) interface. - The contents of
memory 508 varies depending upon the function thatcomputer system 500 is programmed to perform. In the example shown inFIG. 5 ,memory 508 includes trustedagent 101, sharingviolation extension 101A,other applications 102,file filter driver 103 for trustedagent 101, sharingviolation extension 103A,file system 104, pendingsharing violation queue 105, pending violation requests lists 106, and operating system 512.Trusted agent 101 is a software component that tracks file 110 ofother applications 102.Agent 101 has asharing violation extension 101A, which is a data structure that stores information about to sharing violations relating toagent 101.Sharing violation extension 101A interacts with a complementarysharing violation extension 103A installed with the agent'sfile filter driver 103.Sharing violation extension 103A is a data structure that stores information about to sharing violations relating to the agent'sfile filter driver 103.File system 104 is software for storing and organizing computer files and the data they contain to provide the capability to find and access the files. Typically,file system 104 is part of operating system 512. The agent'sfile filter driver 103 uses two data structures—a pendingsharing violation queue 105 and a potential violatingrequest list 106. Operating system 512 provides overall system functionality. - As shown in
FIG. 5 , the present invention contemplates implementation on a system or systems that provide multi-processor, multi-tasking, multi-process, and/or multi-thread computing, as well as implementation on systems that provide only single processor, single thread computing. Multi-processor computing involves performing computing using more than one processor. Multi-tasking computing involves performing computing using more than one operating system task. A task is an operating system concept that refers to the combination of a program being executed and bookkeeping information used by the operating system. Whenever a program is executed, the operating system creates a new task for it. The task is like an envelope for the program in that it identifies the program with a task number and attaches other bookkeeping information to it. Many operating systems, including UNIX®, OS/2®, and WINDOWS®, are capable of running many tasks at the same time and are called multitasking operating systems. Multi-tasking is the ability of an operating system to execute more than one executable at the same time. Each executable is running in its own address space, meaning that the executables have no way to share any of their memory. This has advantages, because it is impossible for any program to damage the execution of any of the other programs running on the system. However, the programs have no way to exchange any information except through the operating system (or by reading files stored on the file system). Multi-process computing is similar to multi-tasking computing, as the terms task and process are often used interchangeably, although some operating systems make a distinction between the two. - It is important to note that while the present invention has been described in the context of a fully functioning data processing system, those of ordinary skill in the art will appreciate that the processes of the present invention are capable of being distributed in the form of a computer readable medium of instructions and a variety of forms and that the present invention applies equally regardless of the particular type of signal bearing media actually used to carry out the distribution. Examples of computer readable media include storage media, examples of which include, but are not limited to, floppy disks, hard disk drives, CD-ROMs, DVD-ROMs, RAM, and, flash memory, as well as transmission media, examples of which include, but are not limited to, digital and analog communications links.
- Although specific embodiments of the present invention have been described, it will be understood by those of skill in the art that there are other embodiments that are equivalent to the described embodiments. Accordingly, it is to be understood that the invention is not to be limited by the specific illustrated embodiments, but only by the scope of the appended claims.
Claims (25)
1. A method for handling sharing violations in a computer system comprising:
intercepting a request by an application directed to a file in a file system of an operating system for access to the file;
capturing a sharing violation issued by the operating system in response to the request;
determining whether the sharing violation was due to a trusted agent, wherein the trusted agent is a software agent configured to monitor file operations performed on the computer system;
storing one or more file access requests from the application in a queue if the sharing violation was due to the trusted agent; and
reprocessing the one or more requests by the application for access to the file after the trusted agent releases the file.
2. The method of claim 1 , wherein the act of determining whether the sharing violation was due to the trusted agent comprises determining that a count of the file access requests by the trusted agent triggered by the application is greater than zero.
3. The method of claim 2 , further comprising signaling the trusted agent that the sharing violation due to the trusted agent has occurred.
4. The method of claim 2 , further comprising determining that the trusted agent no longer has access to the file when the count equals zero.
5. The method of claim 4 , wherein the act of reprocessing the request by the application for access to the file comprises:
removing the request by the application for access to the file from the queue; and
resending the request by the application for access to the file.
6. The method of claim 1 , wherein the act of determining whether the sharing violation was due to the trusted agent comprises:
making a first determination, prior to capturing the sharing violation issued by the operating system, of whether a count of requests for access by the trusted agent to the file is greater than zero and when the count is greater than zero adding the request by the application for access to the file to a list;
making a second determination, after capturing the sharing violation issued by the operating system, of whether the count of requests for access by the trusted agent to the file is greater than zero; and
determining that the sharing violation is due to the trusted agent when the request is in the list or the count is greater than zero after the second determination is made.
7. The method of claim 6 , further comprising signaling the trusted agent that the sharing violation due to the trusted agent has occurred.
8. The method of claim 6 , further comprising determining that the trusted agent no longer has access to the file when the count equals zero.
9. The method of claim 8 , wherein the act of reprocessing the request by the application for access to the file comprises:
removing the request by the application for access to the file from the queue and from the list; and
resending the request by the application for access to the file.
10. A system for handling sharing violations in a computer system comprising:
a processor operable to execute computer program instructions;
a memory operable to store computer program instructions executable by the processor; and
computer program instructions stored in the memory and executable to cause the processor to:
intercept a request by an application directed to a file in a file system of an operating system for access to the file;
capture a sharing violation issued by the operating system in response to the request;
determine whether the sharing violation was due to a trusted agent, wherein the trusted agent is a software agent configured to monitor file operations performed on the computer system;
store one or more file access requests from the application in a queue if the sharing violation was due to the trusted agent; and
reprocess the one or more requests by the application for access to the file after the trusted agent releases the file.
11. The system of claim 10 , wherein the instructions to cause the processor to determine whether the sharing violation was due to the trusted agent comprise instructions to cause the processor to determine that a count of the file access requests by the trusted agent triggered by the application is greater than zero.
12. The system of claim 11 , further comprising instructions to cause the processor to signal the trusted agent that the sharing violation due to the trusted agent has occurred.
13. The system of claim 11 , further comprising instructions to cause the processor to determine that the trusted agent no longer has access to the file when the count equals zero.
14. The system of claim 13 , wherein the instructions to cause the processor to reprocess the request by the application for access to the file comprise instructions to cause the processor to:
remove the request by the application for access to the file from the queue; and
resend the request by the application for access to the file.
15. The system of claim 10 , wherein the instructions to cause the processor to determine whether the sharing violation was due to the trusted agent comprise instructions to cause the processor to:
make a first determination, prior to capturing the sharing violation issued by the operating system, of whether a count of requests for access by the trusted agent to the file is greater than zero and when the count is greater than zero adding the request by the application for access to the file to a list;
make a second determination, after capturing the sharing violation issued by the operating system, of whether the count of requests for access by the trusted agent to the file is greater than zero; and
determine that the sharing violation is due to the trusted agent when the request is in the list or the count is greater than zero after the second determination is made.
16. The system of claim 15 , further comprising instructions to cause the processor to signal the trusted agent that the sharing violation due to the trusted agent has occurred.
17. The system of claim 15 , further comprising instructions to cause the processor to determine that the trusted agent no longer has access to the file when the count equals zero.
18. The system of claim 17 , wherein the instructions to cause the processor to reprocess the request by the application for access to the file comprise instructions to cause the processor to:
remove the request by the application for access to the file from the queue; and
resend the request by the application for access to the file.
19. A computer program product for handling sharing violations in a computer system comprising:
a non-transitory computer readable storage medium;
computer program instructions, recorded on the computer readable storage medium and executable by a processor, to cause the processor to:
intercept a request by an application directed to a file in a file system of an operating system for access to the file;
capture a sharing violation issued by the operating system in response to the request;
determine whether the sharing violation was due to a trusted agent, wherein the trusted agent is a software agent configured to monitor file operations performed on the computer system;
store one or more file access requests from the application in a queue if the sharing violation was due to the trusted agent; and
reprocess the one or more requests by the application for access to the file after the trusted agent releases the file.
20. The computer program product of claim 19 , wherein the instructions to cause the processor to determine whether the sharing violation was due to the trusted agent comprise instructions to cause the processor to determine that a count of the file access requests by the trusted agent triggered by the application is greater than zero.
21. The computer program product of claim 20 , further comprising instructions to cause the processor to signal the trusted agent that the sharing violation due to the trusted agent has occurred.
22. The computer program product of claim 20 , further comprising instructions to cause the processor to determine that the trusted agent no longer has access to the file when the count equals zero.
23. The computer program product of claim 22 , wherein the instructions to cause the processor to reprocess the request by the application for access to the file comprise instructions to cause the processor to:
remove the request by the application for access to the file from the queue; and
resend the request by the application for access to the file.
24. The computer program product of claim 19 , wherein the instructions to cause the processor to determine whether the sharing violation was due to the trusted agent comprise instructions to cause the processor to:
make a first determination, prior to capturing the sharing violation issued by the operating system, of whether a count of requests for access by the trusted agent to the file is greater than zero and when the count is greater than zero adding the request by the application for access to the file to a list;
make a second determination, after capturing the sharing violation issued by the operating system, of whether the count of requests for access by the trusted agent to the file is greater than zero; and
determine that the sharing violation is due to the trusted agent when the request is in the list or the count is greater than zero after the second determination is made.
25. The computer program product of claim 24 , further comprising instructions to cause the processor to signal the trusted agent that the sharing violation due to the trusted agent has occurred.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/731,373 US20130117858A1 (en) | 2007-10-24 | 2012-12-31 | Method and System for Ensuring a Sharing Violation Free Environment for a Trusted Software Agent |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/976,399 US8347401B2 (en) | 2007-10-24 | 2007-10-24 | Method and system for ensuring a sharing violation free environment for a trusted software agent |
US13/731,373 US20130117858A1 (en) | 2007-10-24 | 2012-12-31 | Method and System for Ensuring a Sharing Violation Free Environment for a Trusted Software Agent |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/976,399 Continuation US8347401B2 (en) | 2007-10-24 | 2007-10-24 | Method and system for ensuring a sharing violation free environment for a trusted software agent |
Publications (1)
Publication Number | Publication Date |
---|---|
US20130117858A1 true US20130117858A1 (en) | 2013-05-09 |
Family
ID=40584653
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/976,399 Active 2030-05-12 US8347401B2 (en) | 2007-10-24 | 2007-10-24 | Method and system for ensuring a sharing violation free environment for a trusted software agent |
US13/731,373 Abandoned US20130117858A1 (en) | 2007-10-24 | 2012-12-31 | Method and System for Ensuring a Sharing Violation Free Environment for a Trusted Software Agent |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/976,399 Active 2030-05-12 US8347401B2 (en) | 2007-10-24 | 2007-10-24 | Method and system for ensuring a sharing violation free environment for a trusted software agent |
Country Status (1)
Country | Link |
---|---|
US (2) | US8347401B2 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8887291B1 (en) * | 2013-03-01 | 2014-11-11 | Symantec Corporation | Systems and methods for data loss prevention for text fields |
WO2016028381A1 (en) * | 2014-08-20 | 2016-02-25 | Mcafee, Inc. | Zero day threat detection using host application/program to user agent mapping |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8347401B2 (en) * | 2007-10-24 | 2013-01-01 | Mcafee, Inc. | Method and system for ensuring a sharing violation free environment for a trusted software agent |
US8826443B1 (en) * | 2008-09-18 | 2014-09-02 | Symantec Corporation | Selective removal of protected content from web requests sent to an interactive website |
US8626917B2 (en) * | 2012-03-16 | 2014-01-07 | Sap Ag | File access using counter locking mechanism |
CN104267971A (en) * | 2014-10-20 | 2015-01-07 | 张璇 | Aspect-oriented trusted software process modeling method |
CN104866376A (en) * | 2015-05-29 | 2015-08-26 | 单岩 | Virtual prototype based on editable text driving and method therefor |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4435766A (en) * | 1981-06-16 | 1984-03-06 | International Business Machines Corporation | Nested resource control using locking and unlocking routines with use counter for plural processes |
US5161227A (en) * | 1989-11-13 | 1992-11-03 | International Business Machines Corporation | Multilevel locking system and method |
US5933825A (en) * | 1997-07-21 | 1999-08-03 | Apple Computer, Inc. | Arbitrating concurrent access to file system objects |
US20010039548A1 (en) * | 2000-04-27 | 2001-11-08 | Yoshitake Shinkai | File replication system, replication control method, and storage medium |
US6985914B2 (en) * | 2002-02-20 | 2006-01-10 | Emc Corporation | Cluster meta file system of file system cells managed by respective data movers of a network file server |
US7237123B2 (en) * | 2000-09-22 | 2007-06-26 | Ecd Systems, Inc. | Systems and methods for preventing unauthorized use of digital content |
US7363657B2 (en) * | 2001-03-12 | 2008-04-22 | Emc Corporation | Using a virus checker in one file server to check for viruses in another file server |
US7444349B1 (en) * | 2003-05-23 | 2008-10-28 | Xilinx, Inc. | Control of concurrent access to a partitioned data file |
US7523343B2 (en) * | 2004-04-30 | 2009-04-21 | Microsoft Corporation | Real-time file system repairs |
US7681237B1 (en) * | 2004-05-13 | 2010-03-16 | Symantec Corporation | Semi-synchronous scanning of modified files in real time |
US8347401B2 (en) * | 2007-10-24 | 2013-01-01 | Mcafee, Inc. | Method and system for ensuring a sharing violation free environment for a trusted software agent |
-
2007
- 2007-10-24 US US11/976,399 patent/US8347401B2/en active Active
-
2012
- 2012-12-31 US US13/731,373 patent/US20130117858A1/en not_active Abandoned
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4435766A (en) * | 1981-06-16 | 1984-03-06 | International Business Machines Corporation | Nested resource control using locking and unlocking routines with use counter for plural processes |
US5161227A (en) * | 1989-11-13 | 1992-11-03 | International Business Machines Corporation | Multilevel locking system and method |
US5933825A (en) * | 1997-07-21 | 1999-08-03 | Apple Computer, Inc. | Arbitrating concurrent access to file system objects |
US20010039548A1 (en) * | 2000-04-27 | 2001-11-08 | Yoshitake Shinkai | File replication system, replication control method, and storage medium |
US7237123B2 (en) * | 2000-09-22 | 2007-06-26 | Ecd Systems, Inc. | Systems and methods for preventing unauthorized use of digital content |
US7363657B2 (en) * | 2001-03-12 | 2008-04-22 | Emc Corporation | Using a virus checker in one file server to check for viruses in another file server |
US6985914B2 (en) * | 2002-02-20 | 2006-01-10 | Emc Corporation | Cluster meta file system of file system cells managed by respective data movers of a network file server |
US7444349B1 (en) * | 2003-05-23 | 2008-10-28 | Xilinx, Inc. | Control of concurrent access to a partitioned data file |
US7523343B2 (en) * | 2004-04-30 | 2009-04-21 | Microsoft Corporation | Real-time file system repairs |
US7681237B1 (en) * | 2004-05-13 | 2010-03-16 | Symantec Corporation | Semi-synchronous scanning of modified files in real time |
US8347401B2 (en) * | 2007-10-24 | 2013-01-01 | Mcafee, Inc. | Method and system for ensuring a sharing violation free environment for a trusted software agent |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8887291B1 (en) * | 2013-03-01 | 2014-11-11 | Symantec Corporation | Systems and methods for data loss prevention for text fields |
WO2016028381A1 (en) * | 2014-08-20 | 2016-02-25 | Mcafee, Inc. | Zero day threat detection using host application/program to user agent mapping |
US9591021B2 (en) | 2014-08-20 | 2017-03-07 | Mcafee, Inc. | Zero day threat detection using host application/program to user agent mapping |
US10129286B2 (en) | 2014-08-20 | 2018-11-13 | Mcafee, Llc | Zero day threat detection using host application/program to user agent mapping |
Also Published As
Publication number | Publication date |
---|---|
US8347401B2 (en) | 2013-01-01 |
US20090113526A1 (en) | 2009-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20130117858A1 (en) | Method and System for Ensuring a Sharing Violation Free Environment for a Trusted Software Agent | |
US8893285B2 (en) | Securing data using integrated host-based data loss agent with encryption detection | |
Russinovich et al. | Windows internals, part 2 | |
US6418542B1 (en) | Critical signal thread | |
US10460099B2 (en) | System and method of detecting malicious code in files | |
US7302613B2 (en) | System and method for capturing kernel-resident information | |
US8484327B2 (en) | Method and system for generic real time management of devices on computers connected to a network | |
US7249211B2 (en) | System and method for interrupt handling | |
RU2335796C2 (en) | File system controlled filter model and architecture | |
US6886081B2 (en) | Method and tool for determining ownership of a multiple owner lock in multithreading environments | |
US8510738B2 (en) | Preventing unnecessary context switching by employing an indicator associated with a lock on a resource | |
US8196140B2 (en) | Service function redirection for avoiding function evaluation blockages | |
KR20080072699A (en) | System priority management method and computer readable media | |
US8127413B2 (en) | System and method for preventing race condition vulnerability | |
US11423186B2 (en) | Verified inter-module communications interface | |
US11977494B2 (en) | Providing a secure communication channel between kernel and user mode components | |
US8806449B2 (en) | Holding threads in a software debugger | |
US20060149877A1 (en) | Interrupt management for digital media processor | |
US7657936B2 (en) | Method for preventing time of check to time of use exploits | |
CN102841785A (en) | File handle closuring operation method and device | |
CN100583026C (en) | Method and apparatus of resource access synchronization in a basic input and output system of a computer system | |
EP3293660A1 (en) | System and method of detecting malicious code in files | |
RU2730116C2 (en) | Method of transmitting data between interfaces of data processing modules of a computer system | |
Chang et al. | LWRM: A lightweight response mechanism for TCG TOCTOU attack | |
WO2021187996A1 (en) | Method and system for blocking potentially unwanted software |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |