WO2002103498A2 - Stateful reference monitor - Google Patents

Stateful reference monitor Download PDF

Info

Publication number
WO2002103498A2
WO2002103498A2 PCT/US2002/019070 US0219070W WO02103498A2 WO 2002103498 A2 WO2002103498 A2 WO 2002103498A2 US 0219070 W US0219070 W US 0219070W WO 02103498 A2 WO02103498 A2 WO 02103498A2
Authority
WO
WIPO (PCT)
Prior art keywords
event
information
computer
reference monitor
rules
Prior art date
Application number
PCT/US2002/019070
Other languages
French (fr)
Other versions
WO2002103498A3 (en
Inventor
Philip J. S. Gladstone
Jeffrey A. Kraemer
Original Assignee
Okena, Inc.
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Okena, Inc. filed Critical Okena, Inc.
Priority to EP02756206A priority Critical patent/EP1435030B1/en
Priority to JP2003505751A priority patent/JP4629332B2/en
Priority to DE60227087T priority patent/DE60227087D1/en
Publication of WO2002103498A2 publication Critical patent/WO2002103498A2/en
Publication of WO2002103498A3 publication Critical patent/WO2002103498A3/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/468Specific access rights for resources, e.g. using capability register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/552Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2101Auditing as a secondary aspect
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2105Dual mode as a secondary aspect
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2113Multi-level security, e.g. mandatory access control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices

Definitions

  • the present invention related generally to software that controls an operating policy of a computer system. For example, access to various system resources, such as files and network connections may be so controlled.
  • Modern computer systems are controlled by two levels of software: an operating system and application software.
  • the operating system maintains a separation in the memory of the computer between the operating system, said to execute in operating system space, and the applications, said to execute in applications space.
  • Applications are the software that provides solutions to business problem, such as processing e-mail messages. Applications perform their work by communicating requests for access to resources such as network connections or files stored on a storage medium to the operating system, which then fills these requests. It may be desired to control any one or more of a wide variety of operating policies.
  • One common scenario is to control access to various system resources, as mentioned above, for purposes of securing a system against deliberate and malicious attack or for purposes of ensuring correct and non-interfering operation of various processes.
  • access control for security purposes is discussed. However, the skilled artist will understand that the discussion has wider implications, as explicitly pointed out and as implied in the following discussion.
  • access is conventionally controlled by one or more real-time processes, while policy is independently established with the assistance of one or more non-real-time processes.
  • a real-time process is one whose action is sufficiently immediate as to imperceptibly affect the speed at which transactions with which the real-time process is connected are processed.
  • a non-real-time process is one that processes transactions at a speed substantially slower than the instantaneous rate at which transactions naturally occur.
  • Real-time access control processes and data structures include, but are not limited to reference monitors, access control lists, permissions flags, access tokens and process ID checking.
  • a reference monitor is a component of a computer system that determines whether an access by one component, for example a user process, of another component, for example, a file is permitted.
  • dynamic state is a collection of information, that is collected in real-time, indicative of a condition of a machine or process as a result of a particular sequence of events leading to the condition.
  • a stateless system or component is one, which does not collect such data.
  • stateless reference monitors are found in the kernels of various Operating Systems, including, for example, Microsoft® WindowsTM 2000 OR UNIX. They are used to determine whether a particular access to a file or other resource is permitted.
  • Some operating systems give finer control by associating individual permissions with each user, and then checking those permissions against the static access control list of the resource. This is an improvement, but typically there are only a limited number of permission flags.
  • Security-Enhanced Linux is an example of such an operating system.
  • Non-real-time processes are conventionally employed to collect date and analyze past events in order to establish or modify effective policies, for example security policies.
  • Typical, conventional non-real-time processes include intrusion detection systems, for example.
  • intrusion detection system is an autonomous agent that polls, monitors and/or periodically mines log files for data indicative of an intrusion.
  • a drawback of such non-real-time systems is that intrusions are only detected "after the fact.” The intruder leaves an audit trail of actions recorded in log files and elsewhere for which the only reasonable explanation is an intrusion.
  • the intruder is long gone and damage done.
  • NUDES Next-generation Intrusion Detection Expert System
  • a real-time reference monitor software produce comprises, on a machine-readable medium, a sequence of instructions defining a storage area where real-time state information is stored and from which the state information is restored; a plurality of rules defining allowable activity based on a pattern of activity; and plural interceptors identifying and governing the activity based on an application of the rules to the activity.
  • the software product may include a process, which correlates the state information across different ones of the plural interceptors. At least one of the plural interceptors can be a preexisting element of a conventional computer operating system.
  • the process which correlates the state information can include a rule which defines permissible resource references in view of activity identified by the interceptors resource reference and the state information; and a rule interpreter which applies the rule to the activity identified and the state information.
  • the rule can be modified without restarting the real-time reference monitor.
  • the plural reference interceptors can correspond to more than one resource type and wherein the storage area is a single storage area. The storage area contents can be preserved when the rules are modified.
  • the software product can further include an application program interface that can send messages to application programs on the same system.
  • the software product can also further include an application program interface that can send messages to application programs on other systems.
  • a computer- implemented reference monitor includes a monitoring process, executing on a computer, which detects plural defined events and generate event messages; a storage device, on the computer, in which is stored information related to the event messages generated by the monitoring process; and a rule interpreting process, executing on the computer, which responds to characteristics of an event message the information stored in the storage device and a set of rules by modifying operation of the computer.
  • the set of rules can be modified in response to the information stored in the storage device.
  • a method of implementing a processing policy on a computer includes detecting first and second events, each having one of a plurality of defined event types; generating first and second event messages, each containing information about a corresponding one of the first and second events; storing the information about the first event; and enforcing the policy responsive to the stored information about the first event and the information about the second event.
  • the method may further include applying one of a set of rules to the stored information about the first event and the information about the second event to determine the nature of enforcing the policy.
  • the method may yet further include executing an operating system on the computer; changing the set of rules without restarting the operating system and without losing the stored information.
  • the method may include changing the set of rules without intemrpting the detecting, generating, storing and enforcing.
  • FIG. 1 is a functional block diagram of a software system embodying aspect of the invention
  • Fig. 2 is a detailed functional block diagram of the software system of Fig. 1;
  • Fig. 3 is a functional block diagram of a hardware system on which the software system of Figs. 1 and 2 can execute; and
  • Fig. 4 is a functional block diagram of the storage system component of the system of Fig. 3.
  • Fig. 1 The exemplary embodiment is in the computer system security field, but the invention can readily be embodied in systems in other fields of endeavor, as will be evident to the skilled artisan.
  • interceptors 101 are inserted in the control or communication paths 102 traversed by those events. For example, if an event monitored is a network access request, the interceptor 101 is inserted in the operating system at a point where the network access request is communicated from one portion of the operating system to another. The interceptor 101 generates an event message 103 for each event 100 intercepted. Event messages 103 are communicated to a stateful reference monitor 104, which returns a policy message 105 to the interceptor 101.
  • the policy message 105 may be an action for the interceptor 101 to take, such as allowing an access request event 100 to continue along the control or communication path 102 to have its intended effect, or not allowing the event 100 to pass along path 102.
  • External event messages 106 generated by other, unspecified event monitors can also be processed by the stateful reference monitor 104.
  • the stateful reference monitor 104 also communicates with a user console 107 and log files 108.
  • the stateful reference monitor 104 of Fig. 1 is now explained in further detail, in connection with Fig. 2.
  • An exemplary reference monitor 104 is designed to run as part of the operating system, as a driver.
  • the exemplary reference monitor 104 is referred to herein as a stateful reference monitor because it retains and relies on changing system state information in implementing decision policies, as explained below.
  • the stateful reference 104 monitor communicates with other parts of the operating system and with applications through communication channels.
  • One channel 201 carries event messages 103 and policy messages 105, as discussed above.
  • the other channel 202 carries external event messages 106, as well as other messages to and from application space 203, including but not limited to messages to and from the user console 107 and logs 108.
  • Communication channel 201 transfers messages into and out of the stateful reference monitor 104 through a rule application programming interface (API) 211.
  • Communication channel 202 transfers messages into and out of the stateful reference monitor 104 through a user API 204.
  • API application programming interface
  • event router 205 is the communication center of the stateful reference monitor 104, directing and controlling all internal communication.
  • the primary operational logic of the stateful reference monitor 104 is contained in the rule interpreter 206, which also makes use of the contents of a state database 207 and of compiled rule byte-code 208.
  • the rule interpreter 206 can be a small, straightforward piece of logic that can be made extremely bug-proof by design.
  • the state database 207 is simply a repository of dynamic state information, and thus also easily bug-proofed.
  • the state database 207 may reside at least in part in a persistent memory or storage location so that it survives an operating system reboot.
  • the compiled rule byte-code 208 represents the operational policies to be enforced and against which activities and state in the system are checked. As such, much of the complexity of the system can reside in the byte-code 208. Although the byte-code 208 also should yield to design techniques that reduce or eliminate bugs, it is worth noting that bugs in the byte-code 208 cannot cause the operating system to crash, but can merely result in improper policy decisions. Thus, a more robust system results from the partitioning of the rules into the byte-code 208 and the interpretive logic into the rules interpreter 206.
  • State information can be, but is not limited to, information that a certain event occurred within a certain time of the present time.
  • a prohibited combination of events is denoted X- Y-Z. That is, Event X, Event Y and Event Z must occur within a certain timeframe to produce a bad result.
  • a rule in byte-code 208 will prohibit Z.
  • another rule in byte-code 208 will cause event X and/or event Y to be purged from state database 207 after a suitable time.
  • Events X, Y and Z need not be associated with the same user or process, or may be so associated, depending upon the type of behavior to be controlled.
  • the stateful reference monitor 104 includes mappable memory 209, to aid with communication between the stateful reference monitor 104 and applications in application space 203 or accessible through a network 210.
  • Mappable memory 209 is simply a portion of system memory addressable by both the stateful reference monitor 104 and other applications, such that data transfer may be easily accomplished by writing to and reading from a predetermined location, without requiring special communication apparatus, mechanisms or protocols.
  • Interceptors 101 are also implemented in the exemplary embodiment as drivers loaded with, but independent of, the operating system kernel. Interceptors 101 interact with the operating system at a very low level, by intercepting various types of operating system requests, etc., referred to herein as events, for example requests for access to operating system resources such as a file or network connection. When an interceptor 101 intercepts an event, it generates an event message 103, as discussed above. Each intercepted event is treated by the stateful reference monitor 104 as a request for an interpretation of the event in light of the rules represented by the rules byte-code 208 and the contents of the state database 207.
  • the result of the stateful reference monitor 104 applying the rules contained in the byte-code 208 to the event message 103 and the contents of the state database 207 is a policy message 105, which is sent to the interceptor 101.
  • the interceptor 101 then implements the contents of the policy message 105, for example blocking or allowing a resource access.
  • Interceptors 101 can take other forms, as well. They may simply be APIs allowing the stateful reference monitor 104 to observe some aspect of operating system behavior and to modify that behavior accordingly. For example, with suitable modification, an interceptor 101 can detect an operating system performance characteristic and tune a related parameter, in response.
  • Interceptors 101 need be inserted only in paths affecting resources important to the purpose for which the stateful reference monitor 104 is intended.
  • resources may include but are not limited to, one or more of: Windows Registry access requests, network access request, windows ⁇ system ⁇ 32 directory access requests and Outlook personal address books access requests.
  • Interceptors 101 can also extract inputs from other sources, such as a virus scanner log file.
  • a graphical user interface (GUI) running on a user console 107 may give the user access to the stateful reference monitor 104, for example to monitor performance, to view logs and to adjust operational parameters and policies.
  • the GUI accessed through the user console 107 may be a conventional browser, for example, or may be a proprietary software program designed for the purpose.
  • a database or file system holding operational logs, error logs and the like 108, is also accessible through application space 203. The use of logs and the specific types of logs used will be defined by the skilled artisan based upon specific individual requirements.
  • Network connections 210 are also accessed by the stateful reference monitor 104 through application space 203. These network connections 210 are those over which external event messages 106 arrive. Now, the detailed operation of the stateful reference monitor 104 is described.
  • Operations may be divided into two classes, normal operations and boot-time operations.
  • an event is intercepted by an interceptor 101, and an event message 103 transmitted to the stateful reference monitor 104.
  • Events which are normally passed on to other parts of the operating system, such as file access requests and network connection requests are temporarily held up by the interceptor 101, so that they do not have their ordinary, immediate effect, while the stateful reference monitor 104 makes a decision based on the processing policy then in effect as to whether to block or allow the event to be transmitted.
  • Event messages 103 from the interceptors 101 are received in the stateful reference monitor 104 by the rule API 211.
  • the rule API 211 is a simple interface for receiving and transmitting messages to interceptors 101, which may be specially written for compatibility with the stateful reference monitor 104 or may be a packaged component of the operating system or may be provided by any party as an add-on component.
  • the rule API 211 simply passes event messages 103 on to the event router 205. As will be seen below, the rule API 211 also passes messages out from the event router 205 to the interceptors 101, when required.
  • the event router 205 is the communication nerve center of the stateful reference monitor 104. Any type of message that must be moved from one component to another component of the stateful reference monitor 104 is transferred by the event router 205. Other than moving messages as directed, the event router 205 need not perform any other processing of messages, although the slcilled artisan may incorporate other processing in the event router 205 as required by a particular application.
  • the event router 205 queues messages for the receiving components of the stateful reference monitor 104 according to priority.
  • priority may be based on event type, for example.
  • a network access event that may be time sensitive may be processed ahead of a file access event that has no such time sensitivity.
  • Events are identified in the event messages 103 to the application which produced the event, rather than the user, as is customary in conventional systems, which allows policies to be set and executed orthogonal to the user community. This is in contrast to those conventional systems, in which processing policies such as security and access - 10/1 -
  • control policies operate on the basis of the user generating an event, and the rights and privileges attributed to that user.
  • Queued events are picked up in priority order by the rule interpreter 206 for processing.
  • the rale interpreter 206 determines whether the event described by the event message is of a type designated as part of the dynamic state information to be stored in the state database 207. If so, then information about the event is stored in the state database 207.
  • the information stored may include some or all of, but not necessarily limited to, time of the event, type of event, application generating the event, user owning the application and the like.
  • the type of the event determines which segment of the compiled rules byte- code 208 will be addressed by the rule interpreter 206.
  • the rule interpreter 206 executes a switch function based on the opcode.
  • Switch statements are most efficient when the expected cases are consecutive integers beginning with 1. Therefore, in order to manage the values of opcodes that must be handled by the switch function in the rule interpreter 206, the opcodes are translated by the following pseudo-code before the byte-code is first used: - 12 -
  • Boot-time operation is similar to normal operation, except that different rules may be followed, especially in security applications, in order to specialize policies for what could be a particularly vulnerable process. Moreover, specialized boot-time rules can be extremely simple and tightly written because the boot-time operating system environment is highly controlled.
  • the compiled rule byte-code 208 is stored in a data structure that permits selection between an active rule set and inactive rule sets by use of a software switch, as is l ⁇ iown in the art.
  • the system is assured to be running only one set of rules at a time, not a mixture of rules.
  • various processes, such as rule checks can be performed. This arrangement is particularly advantageous for having different sets of rules operative during boot-time than other times.
  • the rules need not all be stored and loaded at boot up, thus saving space and time. Boot-time rales can be stored in and loaded from the Windows-based system. Later, the rules for use when boot-up is done can be loaded from a network resource or from a file.
  • rules byte-code 208 is a downloadable program and rules interpreter 206 is a virtual machine.
  • the rules can be changed at any time without shutting down or restarting the operating system.
  • the compiled rule byte-code 208 can be stored in a fixed location that can be overwritten easily without shutting down the stateful reference monitor 104 or rebooting the operating system.
  • rules byte-code 208 various types can be programmed into the rules byte-code 208, for detection and action.
  • the rules can also identify as a prohibited pattern, any pattern not seen before. This type of rule is useful in an environment where the system can first be "profiled," i.e., operated in a state collection mode, wherein normal - 13 -
  • state database 207 Such a system is subsequently placed into a "lockdown" mode, wherein both pre-programmed patterns and unusual patterns are detected and acted upon. This type of profiling is preferably done in the environment in which the system will be operated, so as to capture the true range of behavior. Rules can also be tightened or relaxed dynamically through user manipulation of the bye-code 208 through a suitable program interface at the user console 107.
  • the stateful reference monitor can generate a variety of levels of warning and alarm, at least some of which permit the user to select whether to allow a questionable action or not. This feature is generally useful, but has particular use in a system, which was profiled as, described above. Once in lockdown, there may still be unseen, but nominally safe, behaviors that the user can pass judgment on.
  • the stateful reference monitor 104 alerts the user as to the condition and can record the behavior as permissible or not depending on the rules defined in byte-code 208.
  • the illustrative stateful reference monitor integrates and correlates the access requests for a number of different resource types - files, system configuration information, network access, system calls, local or remote object invocation, etc. This comprehensive view into the operating environment enables the stateful reference monitor 104 to make better access control decisions than a conventional, single resource type stateless reference monitor.
  • the stateful reference monitor detects anomalous behavior and prevent further accesses. For example, if an e-commerce server has once been subverted, it will subsequently behave differently, and tins can be detected as a departure from normal.
  • the stateful reference monitor 104 uses a state database 207 to hold information for periods of time, and uses this information to improve the quality of its decisions. As described above, the stateful reference monitor 104 intercepts the access requests using interceptors 101 inserted into the request path. These interceptors 101 are - 14 - implemented using a variety of mechanisms, depending on the resource type and operating system. For example, under Windows NT:
  • File requests are intercepted using a Microsoft provided file system filter API.
  • the interceptor 101 is in the path of all requests. It extracts the filename from the available information and normalizes the request before submitting it to the stateful reference monitor 104.
  • the stateful reference monitor 104 response determines whether the request is allowed to proceed, or whether an error code is returned to the operating system.
  • Registry requests are intercepted by replacing the registry system call functions with functions that extract the relevant information and then invoke the stateful reference monitor 104.
  • the stateful reference monitor 104 response determines whether the request is passed to the original system call function, or whether an error code is returned to the user application.
  • Network requests are intercepted in two places. One is between the application and the Transport Data Interface - this uses a Microsoft provided API. The other intercept is performed by replacing functions in the Network Device layer. In the latter case, if the stateful reference monitor 104 wants to deny the action, then the packet is discarded as there is no application to notify.
  • the stateful reference monitor 104 acts as an additional processing step over and above any existing stateless reference monitor in the operating system. Thus, it cannot grant access when the standard stateless reference monitor would have denied access.
  • the rules which control the actions of the stateful reference monitor 104 can be modified and take instant effect.
  • the contents of the storage area can be modified as part of this process.
  • the stateful reference monitor 104 can prompt the user when marginal situations occur. This provides valuable additional information to make correct decisions.
  • Other events can be received from local and remote sources, including: control servers, local operating system logs, application logs, application monitors, and other system monitors. These events can then modify the contents of the state database 207, which has the effect of potentially changing future access control decisions.
  • the state database 207 can be used to hold information about such items as:
  • Application behavior for example, if an application accesses a resource, then this fact is remembered and can be used to modify future access decisions;
  • User Input for example, a user may be prompted to provide specific information, and this information can be used to modify future access decisions;
  • the locations within the storage area can hold various different types of object, including:
  • Range trees these are useful data structures when dealing with problems involving 'is a data item in a list of ranges?' For example, is an IP address in the range '10.0.0.0-10.255.255.255 or 192.168.0.0-192.168.255.255'.
  • the stateful reference monitor 104 receives a request, for example from one of the following sources: an interceptor, a user prompt response, a regular timer, a user-space daemon, or the central server. This request is broken down into fields, and each field is copied into a separate location in the state database 207. Additionally, the type of request is noted.
  • the stateful reference monitor then starts to execute the security policy.
  • One embodiment uses a byte-code interpreter to step through the security policy implementation.
  • the byte-code can perform simple actions such as examining a location in the storage area, and then performing arithmetic computations, or complex actions such as formatting and sending an event to another component. Other languages and methods of expressing security policy are possible.
  • An optimization is to split the byte-code program into a number of smaller, and simpler, byte-code programs, where each one handles a particular subset of requests. For example, each program might handle requests for a specific resource type. This reduces the number of byte-code instructions that need to be inspected for each request.
  • the byte-code can modify locations in the storage area to record results either temporarily or permanently for use by subsequent requests. Results may be recorded for
  • the byte-code can indicate whether the request is to be allowed, denied or queued. Once the byte-code is complete, and the request is to either allowed or denied, the stateful reference monitor responds to the interceptor and passes back the access determination.
  • the request is to be queued, then it is placed in a queue for subsequent analysis. This can happen when the user needs to be prompted for some information, or when an operation needs to be performed by a user daemon before the final result of the request can be determined. In these cases, the stateful reference monitor will be triggered again by the user response, or by a user daemon with additional information. The byte-code will be invoked, and it will detect that this request is associated with a previously queued request. The information received as part of the request is saved in the storage area. The previously queued request is then woken up, and is resubmitted to the byte- code portion of the stateful reference monitor.
  • the byte-code processes the original request, but it now has the saved information in the storage area from the user response. This allows it to complete the processing of the request and return an allow or deny response.
  • the stateful reference monitor ensures that requests are ordered, i.e. a request either happens before or after another request. Further, a request is run through the byte- code completely, i.e. until the allow/deny/queue response is found, before the next request can start. This simplifies the implementation of both the stateful reference monitor and of the security policies.
  • the security policy may be written in a C-like language that is compiled into byte-code and loaded into the stateful reference monitor. Other embodiments could use a different source language, or could compile into different code formats, including machine code.
  • the security policy contains data about resource names, e.g. file names, network ports, object names, etc., that need to be protected.
  • An alternative would be to split the 'data' from the 'program' and load them independently.
  • the single program with embedded data approach is simpler. - 18 -
  • the security policy program contains handlers for all the possible events that it can receive. Some of these handlers just return an allow or deny response, while others just cause the storage area to be updated, and some are a mixture.
  • the security policy program can be reloaded while the system is operational. This does not cause the storage area to be modified, and so information that was saved before the policy program was reloaded continues to be available.
  • a special request is triggered as the first request after a reload, and this request can perform any storage area cleanup or modification that is required.
  • the security policy program contains three major sections: • Standard environmental instructions. These instructions perform actions such as determining the current application name, maintaining caches of information, and determining which file groups a file belongs to. These do not determine the allow/deny status, but may cause the request to be queued if required information is not available.
  • a filename can be presented in 8.3 notation, a holdover from MS/DOS, or as the full filename.
  • 8.3 filename might be 'statef ⁇ l.doc', where the full name might be 'stateful reference monitor.doc'.
  • the stateful reference monitor of the illustrative embodiment calls on a user daemon to perfonn various services that are either time consuming or difficult to perform in kernel space. These services are invoked by the stateful reference monitor sending a message to the user daemon, and queuing the request. The user daemon processes the message, performs the requested service and sends a message back to the stateful reference monitor, which then saves the result and wakes up the original request.
  • the services include:
  • the stateful reference monitor can be loaded with a set of rules that prevent incoming email messages from automatically sending out copies of them. This can be achieved by noting when an email client, detected by monitoring network accesses, writes out a file, detected by monitoring file accesses, while file is then read in by a scripting program, detected by monitoring file accesses, which then invokes an email sender, detected by object invocation or other means, which then reads in the original file, detected by file access. At this point the user can be queried, and the action allowed or denied. In order to detect this chain of events requires the maintenance of significant amounts of state.
  • this example does not prevent the script embedded within the email from causing damage to the host computer.
  • an additional step is performed.
  • a message is sent to a management server, which may then notify other stateful reference monitors that this script is to be blocked from access.
  • the security policy program that is in effect at each stateful reference - 20 - monitor decides how to handle the notification message. It may, for example, block all further writes to files once a process tries to write to a restricted file.
  • embodiments of aspects of the invention can also include the following.
  • Multiple stateful reference monitors may be instantiated on a single system, each with a Storage Area and a communications mechanism that permits the exchange of information, either directly or via another component.
  • the stateful reference monitors might be partitioned based on resource type, or based on kernel-space versus user-space.
  • a stateful reference monitor can send configuration information to an interceptor to increase or decrease the number and types of requests sent. For example, the stateful reference monitor be able to change dynamically whether the 'CreateProcess' system call under Windows NT is to be intercepted and whether requests to this system service are sent to the stateful reference monitor.
  • a stateful reference monitor may have its security policy program updated frequently to incorporate new dynamic rales, rather than having a relatively static policy program and frequently updated state database.
  • a stateful reference monitor may either replace or wrap the existing stateless reference monitors provided by the operating system.
  • a stateful reference monitor may be an integral part of the operating system.
  • a computer system 300 shown in Fig. 3, with which the various elements of the embodiments described above, either individually or in combination, may be implemented typically includes at least one main unit connected to both one or more output devices 301 which store information, transmit information or display information to one or more users or machines and one or more input devices 302 which receives input from one or more users or machines.
  • the main unit may include one or more processors 303 connected to a memory system 304 via one or more interconnection mechanisms 305, such as a bus or switch. Any input device 302 and output device 301 also are connected to the processor 303 and memory system 304 via the interconnection mechanism 305.
  • the computer system 300 may further include a storage system 306 in which information is held on or in a non- volatile medium. The medium may be fixed in the system or may be removable. - 21 -
  • the computer system 300 may be a general purpose computer system which is programmable using a computer programming language.
  • Computer programming languages suitable for implementing such a system include procedural programming languages, object-oriented programming languages, combinations of the two, or other languages.
  • the computer system may also be specially programmed, special purpose hardware, or an application specific integrated circuit (ASIC).
  • ASIC application specific integrated circuit
  • the processor In a general purpose computer system, the processor is typically a commercially available processor which executes a program called an operating system which controls the execution of other computer programs and provides scheduling, debugging, input/output control, accounting, compilation, storage assignment, data management and memory management, and communication control and related services.
  • the processor and operating system defines computer platform for which application programs in other computer programming languages are written. The invention is not limited to any particular processor, operating system or programming language.
  • the medium may, for example, be a disk or flash memory.
  • the processor causes data to be read from the nonvolatile recording medium 401 into another memory 402 that allows for faster access to the information by the processor than does the medium 401.
  • This memory 402 is typically a volatile, random access memory such as a dynamic random access memory (DRAM) or static memory (SRAM). It may be located in storage system 306, as shown, or in memory system 304, not shown.
  • the processor 303 generally manipulates the data within the integrated circuit memory 304, 402 and then copies the data to the medium 401 after processing is completed.
  • a variety of mechanisms are known for managing data movement between the medium 401 and the integrated circuit memory element 304, 402, and the invention is not limited thereto. The invention is not limited to a particular memory system 304 or storage system 306.
  • aspects of embodiments of the invention may be implemented in software or hardware or firmware, or any combination thereof.
  • the various elements of an embodiment, either individually or in combination, may be implemented as a computer - 22 - program product including a computer-readable medium on which instructions are stored for access and execution by a processor. When executed by the computer, the instructions instruct the computer to perform the various steps of the process.

Abstract

A Stateful Reference Monitor can be loaded into an existing commercial operating system, and then can regulate access to many different types of resources. The reference monitor maintains an updateable storage area whose contents can be used to affect access decisions, and access decisions can be based on arbitrary properties of the request.

Description

STATEFUL REFERENCE MONITOR
BACKGROUND OF THE INVENTION The present invention related generally to software that controls an operating policy of a computer system. For example, access to various system resources, such as files and network connections may be so controlled.
Modern computer systems are controlled by two levels of software: an operating system and application software. The operating system maintains a separation in the memory of the computer between the operating system, said to execute in operating system space, and the applications, said to execute in applications space.
Applications are the software that provides solutions to business problem, such as processing e-mail messages. Applications perform their work by communicating requests for access to resources such as network connections or files stored on a storage medium to the operating system, which then fills these requests. It may be desired to control any one or more of a wide variety of operating policies. One common scenario is to control access to various system resources, as mentioned above, for purposes of securing a system against deliberate and malicious attack or for purposes of ensuring correct and non-interfering operation of various processes. For purposes of illustration, access control for security purposes is discussed. However, the skilled artist will understand that the discussion has wider implications, as explicitly pointed out and as implied in the following discussion.
Referring to the example of security systems, access is conventionally controlled by one or more real-time processes, while policy is independently established with the assistance of one or more non-real-time processes. In the context of this description, a real-time process is one whose action is sufficiently immediate as to imperceptibly affect the speed at which transactions with which the real-time process is connected are processed. A non-real-time process is one that processes transactions at a speed substantially slower than the instantaneous rate at which transactions naturally occur.
Real-time access control processes and data structures include, but are not limited to reference monitors, access control lists, permissions flags, access tokens and process ID checking. A reference monitor is a component of a computer system that determines whether an access by one component, for example a user process, of another component, for example, a file is permitted.
As used hereinafter, dynamic state is a collection of information, that is collected in real-time, indicative of a condition of a machine or process as a result of a particular sequence of events leading to the condition. A stateless system or component is one, which does not collect such data.
Conventional reference monitors, herein referred to as stateless reference monitors, are found in the kernels of various Operating Systems, including, for example, Microsoft® Windows™ 2000 OR UNIX. They are used to determine whether a particular access to a file or other resource is permitted.
Conventional operating systems contain embedded stateless reference monitors to control access to resources. User processes are started and identified to users on the basis of the user supplying certain identity tokens. In most cases the access decision is made based on the identity of the user whose local program or process makes the request and one or more static permissions flags or an access control list associated with the resource. For examples, see Unix or Windows 2000. The contents of static permissions flags and access control lists do not include information representing the current state of the system, but rather include information that produces identical results regardless of the state of the system.
Most conventional reference monitors deals with a single resource type (such as files or network comiections). Some, such as eTrust Access Control v.5.1 from Computer Associates, protect multiple resource types.
Some operating systems give finer control by associating individual permissions with each user, and then checking those permissions against the static access control list of the resource. This is an improvement, but typically there are only a limited number of permission flags. Security-Enhanced Linux is an example of such an operating system.
There are operating systems that are even finer grained, and allow individual users to offer a set of tokens, and if any match those found in the access control list, then access is granted.
There are operating environments that can include the origin of the requesting program in their access control decision. For example, see Dan Wallach and Edward Felton, "Understanding Java Stack Inspection", IEEE Proceedings of Security & Privacy, May 1998.
Non-real-time processes are conventionally employed to collect date and analyze past events in order to establish or modify effective policies, for example security policies. Typical, conventional non-real-time processes include intrusion detection systems, for example.
One type of intrusion detection system is an autonomous agent that polls, monitors and/or periodically mines log files for data indicative of an intrusion. A drawback of such non-real-time systems is that intrusions are only detected "after the fact." The intruder leaves an audit trail of actions recorded in log files and elsewhere for which the only reasonable explanation is an intrusion. However, by the time such a non- real-time intrusion detection system identifies an intrusion, the intruder is long gone and damage done.
For examples, see Peter G. Neumann and Phillip A. Porras, "Experience with EMERALD to Date", 1 st USENIX Workshop on Intrusion Detection and Network Monitoring, April 1999; Eugene Spafford et al. "Intrusion detection using autonomous agents" Computer Networks 34 (2000); and Steven R. Snapp et al, "DIDS (Distributed Intrusion Detection System) — Motivation, Architecture, and An Early Prototype", Proceedings of the 14th National Computer Security Conference, October 1991. The analysis performed by intrusion detection systems such as have been described or referred to above is useful for developing policies to be enforced by realtime components, such as also described above. For example, there are reference monitors who can follow more complex rules based on patterns mined by an intrusion detector from past behavior, but they cannot update their state on each controlled request. For example, see Debra Anderson et al., "Next-generation Intrusion Detection Expert System (NUDES) A Summary", SRI International, May 1995.
The rise of network computing, with the attendant dangers of remote hackers, renders the access control decision more difficult. Most systems base their access control decisions on the identity of the local requesting program which is tied to a particular user, as noted above, and not on the presumably unknown identity of the remote hacker. Moreover, conventional systems constructed of obvious combinations of the foregoing do not detect or control access based on pattern of behavior that cross the lines between diverse users, processes, access types, etc. Conventional systems constructed of obvious combinations of the foregoing do not adjust policies dynamically, in real-time, in response to newly experienced threats.
Conventional systems suffer from a lack of dynamic state inherent to stateless reference monitors, and that they are not very resilient in the face of local application programming errors through which a remote attacker can subvert a trusted local program. Application programming errors, i.e., bugs, will always continue to exist as the programmers are fallible and the testing cannot reasonably anticipate all manner of malicious attacks.
When conventional reference monitors are used, once an attacker has managed to subvert a local application, the attacker typically has all the rights and privileges of that application. In the case of an e-commerce server, this may include the ability to look at transaction histories and the associated credit card information.
Finally, as already discussed above, conventional systems cannot detect and react to attacks in which diverse parts of the attack are performed by seemingly normal operations of diverse programs or processes, that only form the attack when taken in combination.
SUMMARY OF THE INVENTION The present invention provides an improved system, method and software product for controlling an operating policy of a computer system, such as a security policy. According to one aspect of an embodiment of the invention, a real-time reference monitor software produce comprises, on a machine-readable medium, a sequence of instructions defining a storage area where real-time state information is stored and from which the state information is restored; a plurality of rules defining allowable activity based on a pattern of activity; and plural interceptors identifying and governing the activity based on an application of the rules to the activity. The software product may include a process, which correlates the state information across different ones of the plural interceptors. At least one of the plural interceptors can be a preexisting element of a conventional computer operating system. The process which correlates the state information can include a rule which defines permissible resource references in view of activity identified by the interceptors resource reference and the state information; and a rule interpreter which applies the rule to the activity identified and the state information. The rule can be modified without restarting the real-time reference monitor. The plural reference interceptors can correspond to more than one resource type and wherein the storage area is a single storage area. The storage area contents can be preserved when the rules are modified. The software product can further include an application program interface that can send messages to application programs on the same system. The software product can also further include an application program interface that can send messages to application programs on other systems. The plural reference interceptors can monitor two or more of file access, registry access, network access, object access, system call access, keyboard access, external inputs and user input. According to another aspect of an embodiment of the invention, a computer- implemented reference monitor includes a monitoring process, executing on a computer, which detects plural defined events and generate event messages; a storage device, on the computer, in which is stored information related to the event messages generated by the monitoring process; and a rule interpreting process, executing on the computer, which responds to characteristics of an event message the information stored in the storage device and a set of rules by modifying operation of the computer. The set of rules can be modified in response to the information stored in the storage device. The set of rules can be modified and wherein information stored in the storage device is preserved when the set of rules is modified. Finally, an external event message generating process can execute on another computer and can communicate event messages to the rule interpreting process. According to yet another aspect of an embodiment of the invention, a method of implementing a processing policy on a computer includes detecting first and second events, each having one of a plurality of defined event types; generating first and second event messages, each containing information about a corresponding one of the first and second events; storing the information about the first event; and enforcing the policy responsive to the stored information about the first event and the information about the second event. The method may further include applying one of a set of rules to the stored information about the first event and the information about the second event to determine the nature of enforcing the policy. The method may yet further include executing an operating system on the computer; changing the set of rules without restarting the operating system and without losing the stored information. Finally, the method may include changing the set of rules without intemrpting the detecting, generating, storing and enforcing.
BRIEF DESCRIPTION OF THE DRAWINGS In the drawings, in which like reference designations indicate like elements: Fig. 1 is a functional block diagram of a software system embodying aspect of the invention;
Fig. 2 is a detailed functional block diagram of the software system of Fig. 1; Fig. 3 is a functional block diagram of a hardware system on which the software system of Figs. 1 and 2 can execute; and
Fig. 4 is a functional block diagram of the storage system component of the system of Fig. 3.
DETAILED DESCRIPTION The invention will be better understood upon reading the following detailed description of various aspects of embodiments thereof. Aspects of an embodiment of the invention are now illustrated in connection with
Fig. 1. The exemplary embodiment is in the computer system security field, but the invention can readily be embodied in systems in other fields of endeavor, as will be evident to the skilled artisan.
In computers, one important aspect of system security is monitoring system events 100, e.g. access requests to a resource, and controlling the effect of those events, e.g. blocking or allowing the requested access to a resource. In order to monitor events, interceptors 101 are inserted in the control or communication paths 102 traversed by those events. For example, if an event monitored is a network access request, the interceptor 101 is inserted in the operating system at a point where the network access request is communicated from one portion of the operating system to another. The interceptor 101 generates an event message 103 for each event 100 intercepted. Event messages 103 are communicated to a stateful reference monitor 104, which returns a policy message 105 to the interceptor 101. The policy message 105 may be an action for the interceptor 101 to take, such as allowing an access request event 100 to continue along the control or communication path 102 to have its intended effect, or not allowing the event 100 to pass along path 102. External event messages 106, generated by other, unspecified event monitors can also be processed by the stateful reference monitor 104. The stateful reference monitor 104 also communicates with a user console 107 and log files 108.
The stateful reference monitor 104 of Fig. 1 is now explained in further detail, in connection with Fig. 2. An exemplary reference monitor 104 is designed to run as part of the operating system, as a driver. The exemplary reference monitor 104 is referred to herein as a stateful reference monitor because it retains and relies on changing system state information in implementing decision policies, as explained below. The stateful reference 104 monitor communicates with other parts of the operating system and with applications through communication channels. One channel 201 carries event messages 103 and policy messages 105, as discussed above. The other channel 202 carries external event messages 106, as well as other messages to and from application space 203, including but not limited to messages to and from the user console 107 and logs 108.
Communication channel 201 transfers messages into and out of the stateful reference monitor 104 through a rule application programming interface (API) 211. Communication channel 202 transfers messages into and out of the stateful reference monitor 104 through a user API 204.
Within the stateful reference monitor 104, messages of all kinds, but particularly event messages 103 and external event messages 106 are routed and directed by an event router 205, between the rule API 211, the user API 204 and other components of the stateful reference monitor 104. The event router 205 is the communication center of the stateful reference monitor 104, directing and controlling all internal communication.
The primary operational logic of the stateful reference monitor 104 is contained in the rule interpreter 206, which also makes use of the contents of a state database 207 and of compiled rule byte-code 208. The rule interpreter 206 can be a small, straightforward piece of logic that can be made extremely bug-proof by design. The state database 207 is simply a repository of dynamic state information, and thus also easily bug-proofed. The state database 207 may reside at least in part in a persistent memory or storage location so that it survives an operating system reboot.
The compiled rule byte-code 208 represents the operational policies to be enforced and against which activities and state in the system are checked. As such, much of the complexity of the system can reside in the byte-code 208. Although the byte-code 208 also should yield to design techniques that reduce or eliminate bugs, it is worth noting that bugs in the byte-code 208 cannot cause the operating system to crash, but can merely result in improper policy decisions. Thus, a more robust system results from the partitioning of the rules into the byte-code 208 and the interpretive logic into the rules interpreter 206.
State information can be, but is not limited to, information that a certain event occurred within a certain time of the present time. Suppose a prohibited combination of events is denoted X- Y-Z. That is, Event X, Event Y and Event Z must occur within a certain timeframe to produce a bad result. Then, if the state database 207 holds information X-Y, a rule in byte-code 208 will prohibit Z. But, another rule in byte-code 208 will cause event X and/or event Y to be purged from state database 207 after a suitable time. Events X, Y and Z need not be associated with the same user or process, or may be so associated, depending upon the type of behavior to be controlled. Finally, the stateful reference monitor 104 includes mappable memory 209, to aid with communication between the stateful reference monitor 104 and applications in application space 203 or accessible through a network 210. Mappable memory 209 is simply a portion of system memory addressable by both the stateful reference monitor 104 and other applications, such that data transfer may be easily accomplished by writing to and reading from a predetermined location, without requiring special communication apparatus, mechanisms or protocols.
Interceptors 101, like the stateful reference monitor 104, are also implemented in the exemplary embodiment as drivers loaded with, but independent of, the operating system kernel. Interceptors 101 interact with the operating system at a very low level, by intercepting various types of operating system requests, etc., referred to herein as events, for example requests for access to operating system resources such as a file or network connection. When an interceptor 101 intercepts an event, it generates an event message 103, as discussed above. Each intercepted event is treated by the stateful reference monitor 104 as a request for an interpretation of the event in light of the rules represented by the rules byte-code 208 and the contents of the state database 207. The result of the stateful reference monitor 104 applying the rules contained in the byte-code 208 to the event message 103 and the contents of the state database 207 is a policy message 105, which is sent to the interceptor 101. The interceptor 101 then implements the contents of the policy message 105, for example blocking or allowing a resource access.
Interceptors 101 can take other forms, as well. They may simply be APIs allowing the stateful reference monitor 104 to observe some aspect of operating system behavior and to modify that behavior accordingly. For example, with suitable modification, an interceptor 101 can detect an operating system performance characteristic and tune a related parameter, in response.
Interceptors 101 need be inserted only in paths affecting resources important to the purpose for which the stateful reference monitor 104 is intended. In a security application, such resources may include but are not limited to, one or more of: Windows Registry access requests, network access request, windows\system\32 directory access requests and Outlook personal address books access requests. Interceptors 101 can also extract inputs from other sources, such as a virus scanner log file.
As indicated above, access to user-level applications or to the stateful reference monitor 104 through user-level applications is given through the application space 203. A graphical user interface (GUI) running on a user console 107 may give the user access to the stateful reference monitor 104, for example to monitor performance, to view logs and to adjust operational parameters and policies. The GUI accessed through the user console 107 may be a conventional browser, for example, or may be a proprietary software program designed for the purpose. A database or file system holding operational logs, error logs and the like 108, is also accessible through application space 203. The use of logs and the specific types of logs used will be defined by the skilled artisan based upon specific individual requirements. Network connections 210 are also accessed by the stateful reference monitor 104 through application space 203. These network connections 210 are those over which external event messages 106 arrive. Now, the detailed operation of the stateful reference monitor 104 is described.
Operations may be divided into two classes, normal operations and boot-time operations. During normal operations, an event is intercepted by an interceptor 101, and an event message 103 transmitted to the stateful reference monitor 104. Events which are normally passed on to other parts of the operating system, such as file access requests and network connection requests are temporarily held up by the interceptor 101, so that they do not have their ordinary, immediate effect, while the stateful reference monitor 104 makes a decision based on the processing policy then in effect as to whether to block or allow the event to be transmitted.
Event messages 103 from the interceptors 101 are received in the stateful reference monitor 104 by the rule API 211. The rule API 211 is a simple interface for receiving and transmitting messages to interceptors 101, which may be specially written for compatibility with the stateful reference monitor 104 or may be a packaged component of the operating system or may be provided by any party as an add-on component. The rule API 211 simply passes event messages 103 on to the event router 205. As will be seen below, the rule API 211 also passes messages out from the event router 205 to the interceptors 101, when required.
The event router 205 is the communication nerve center of the stateful reference monitor 104. Any type of message that must be moved from one component to another component of the stateful reference monitor 104 is transferred by the event router 205. Other than moving messages as directed, the event router 205 need not perform any other processing of messages, although the slcilled artisan may incorporate other processing in the event router 205 as required by a particular application.
The event router 205 queues messages for the receiving components of the stateful reference monitor 104 according to priority. In the case of event messages 103, priority may be based on event type, for example. Thus, a network access event that may be time sensitive may be processed ahead of a file access event that has no such time sensitivity.
Events are identified in the event messages 103 to the application which produced the event, rather than the user, as is customary in conventional systems, which allows policies to be set and executed orthogonal to the user community. This is in contrast to those conventional systems, in which processing policies such as security and access - 10/1 -
control policies operate on the basis of the user generating an event, and the rights and privileges attributed to that user.
- 11 -
Queued events are picked up in priority order by the rule interpreter 206 for processing. First, the rale interpreter 206 determines whether the event described by the event message is of a type designated as part of the dynamic state information to be stored in the state database 207. If so, then information about the event is stored in the state database 207. The information stored, may include some or all of, but not necessarily limited to, time of the event, type of event, application generating the event, user owning the application and the like.
Next, the type of the event determines which segment of the compiled rules byte- code 208 will be addressed by the rule interpreter 206. Within the segment of the compiled rules byte-code 208, the rule interpreter 206 executes a switch function based on the opcode.
Within a segment, a sequence of rules is executed by following this pseudo-code sequence:
While (!done) { get next instruction switch (Opcode) { case 1 : Action 1 case 2: Action 2 case 3 : Action 3 }
} A significant performance improvement may be obtained by optimizing the argument of the foregoing "switch (Opcode)" statement. Switch statements are most efficient when the expected cases are consecutive integers beginning with 1. Therefore, in order to manage the values of opcodes that must be handled by the switch function in the rule interpreter 206, the opcodes are translated by the following pseudo-code before the byte-code is first used: - 12 -
While (more byte-code instructions)
{ get next instruction switch (opcode)
{ case realOpcode 1 : replace opcode by integer = 1; case realOpcode 2: replace opcode by integer = 2;
}
Boot-time operation is similar to normal operation, except that different rules may be followed, especially in security applications, in order to specialize policies for what could be a particularly vulnerable process. Moreover, specialized boot-time rules can be extremely simple and tightly written because the boot-time operating system environment is highly controlled.
In order to provide different sets of rules at different times, the compiled rule byte-code 208 is stored in a data structure that permits selection between an active rule set and inactive rule sets by use of a software switch, as is lαiown in the art. Thus, the system is assured to be running only one set of rules at a time, not a mixture of rules. Moreover, when rules are loaded, various processes, such as rule checks can be performed. This arrangement is particularly advantageous for having different sets of rules operative during boot-time than other times. The rules need not all be stored and loaded at boot up, thus saving space and time. Boot-time rales can be stored in and loaded from the Windows-based system. Later, the rules for use when boot-up is done can be loaded from a network resource or from a file. In general, rules byte-code 208 is a downloadable program and rules interpreter 206 is a virtual machine. Thus, the rules can be changed at any time without shutting down or restarting the operating system. In an alternate arrangement, the compiled rule byte-code 208 can be stored in a fixed location that can be overwritten easily without shutting down the stateful reference monitor 104 or rebooting the operating system.
As indicated above, various types of patterns of events can be programmed into the rules byte-code 208, for detection and action. A simple combination, X-Y-Z, was given as an example, earlier. However, the rules can also identify as a prohibited pattern, any pattern not seen before. This type of rule is useful in an environment where the system can first be "profiled," i.e., operated in a state collection mode, wherein normal - 13 -
combinations and patterns of activity are stored in state database 207. Such a system is subsequently placed into a "lockdown" mode, wherein both pre-programmed patterns and unusual patterns are detected and acted upon. This type of profiling is preferably done in the environment in which the system will be operated, so as to capture the true range of behavior. Rules can also be tightened or relaxed dynamically through user manipulation of the bye-code 208 through a suitable program interface at the user console 107.
In addition to policy messages 105 and communication with the user console 107, the stateful reference monitor can generate a variety of levels of warning and alarm, at least some of which permit the user to select whether to allow a questionable action or not. This feature is generally useful, but has particular use in a system, which was profiled as, described above. Once in lockdown, there may still be unseen, but nominally safe, behaviors that the user can pass judgment on. The stateful reference monitor 104 alerts the user as to the condition and can record the behavior as permissible or not depending on the rules defined in byte-code 208. An embodiment of the invention is now described in connection with securing computer systems against malicious users and software.
Security of computer systems is enhanced by using a stateful reference monitor that can make use of saved state - including previous access control decisions — in making new decisions. The illustrative stateful reference monitor integrates and correlates the access requests for a number of different resource types - files, system configuration information, network access, system calls, local or remote object invocation, etc. This comprehensive view into the operating environment enables the stateful reference monitor 104 to make better access control decisions than a conventional, single resource type stateless reference monitor. The stateful reference monitor detects anomalous behavior and prevent further accesses. For example, if an e-commerce server has once been subverted, it will subsequently behave differently, and tins can be detected as a departure from normal.
The stateful reference monitor 104 uses a state database 207 to hold information for periods of time, and uses this information to improve the quality of its decisions. As described above, the stateful reference monitor 104 intercepts the access requests using interceptors 101 inserted into the request path. These interceptors 101 are - 14 - implemented using a variety of mechanisms, depending on the resource type and operating system. For example, under Windows NT:
• File requests are intercepted using a Microsoft provided file system filter API. The interceptor 101 is in the path of all requests. It extracts the filename from the available information and normalizes the request before submitting it to the stateful reference monitor 104. The stateful reference monitor 104 response determines whether the request is allowed to proceed, or whether an error code is returned to the operating system.
• Registry requests are intercepted by replacing the registry system call functions with functions that extract the relevant information and then invoke the stateful reference monitor 104. The stateful reference monitor 104 response determines whether the request is passed to the original system call function, or whether an error code is returned to the user application.
• Network requests are intercepted in two places. One is between the application and the Transport Data Interface - this uses a Microsoft provided API. The other intercept is performed by replacing functions in the Network Device layer. In the latter case, if the stateful reference monitor 104 wants to deny the action, then the packet is discarded as there is no application to notify.
• General system calls are intercepted by replacing functions at the entry point to the operating system kernel. The arguments are checked, and then the stateful reference monitor 104 is invoked. The stateful reference monitor 104 response determines whether the request is allowed to proceed to the original function, or whether an error code is returned to the application. Examples of system calls that are intercepted include keyboard hooking and modification of memory in other processes.
• COM Object invocation is intercepted by replacing functions in the standard DLL used in user applications. When a request is received, the stateful reference monitor 104 is invoked. The stateful reference monitor 104 response determines if the request is passed to the original function, or whether an error code is returned. -'15 -
On other operating systems, there may be other resources that need protecting, and some of the examples above may not be applicable. However, the general approaches of either using an operating system provided interception API, or replacing function pointers with alternative interception code, may be used. Other approaches can be used, for example that involve patching the actual function code to make callouts.
The stateful reference monitor 104 acts as an additional processing step over and above any existing stateless reference monitor in the operating system. Thus, it cannot grant access when the standard stateless reference monitor would have denied access.
The rules which control the actions of the stateful reference monitor 104 can be modified and take instant effect. The contents of the storage area can be modified as part of this process.
The stateful reference monitor 104 can prompt the user when marginal situations occur. This provides valuable additional information to make correct decisions.
Other events can be received from local and remote sources, including: control servers, local operating system logs, application logs, application monitors, and other system monitors. These events can then modify the contents of the state database 207, which has the effect of potentially changing future access control decisions.
The state database 207 can be used to hold information about such items as:
• Application behavior: for example, if an application accesses a resource, then this fact is remembered and can be used to modify future access decisions;
• User Input: for example, a user may be prompted to provide specific information, and this information can be used to modify future access decisions;
• External: for example, other systems may generate messages that can be sent to the stateful reference monitor 104, and this message information can be saved and used to modify future access decisions on this or other systems;
• Time: each item of saved information can be set to be erased after an individually specified time interval;
• Application inheritance: when one application starts another application, attributes associated with the parent can be transferred to the child. - 15/1 -
The locations within the storage area can hold various different types of object, including:
- 16 -
• Integers - often used as indicators to show if an event has occurred;
• Strings - used to hold application names, file names, etc.
• Arrays of Integers or Strings, can be indexed by Integers or Strings - these are useful for storing flags about resources when the resource name is used as the index.
• Range trees — these are useful data structures when dealing with problems involving 'is a data item in a list of ranges?' For example, is an IP address in the range '10.0.0.0-10.255.255.255 or 192.168.0.0-192.168.255.255'.
The stateful reference monitor of the security embodiment now described operates as described below.
The stateful reference monitor 104 receives a request, for example from one of the following sources: an interceptor, a user prompt response, a regular timer, a user-space daemon, or the central server. This request is broken down into fields, and each field is copied into a separate location in the state database 207. Additionally, the type of request is noted.
The stateful reference monitor then starts to execute the security policy. One embodiment uses a byte-code interpreter to step through the security policy implementation. The byte-code can perform simple actions such as examining a location in the storage area, and then performing arithmetic computations, or complex actions such as formatting and sending an event to another component. Other languages and methods of expressing security policy are possible.
An optimization is to split the byte-code program into a number of smaller, and simpler, byte-code programs, where each one handles a particular subset of requests. For example, each program might handle requests for a specific resource type. This reduces the number of byte-code instructions that need to be inspected for each request.
Alternative embodiments include directly executing machine level instructions, but while the performance of such an approach would be better than using byte-code, the disadvantage of complexity and the difficulty of adequately securing the machine code from attack make direct comparison difficult. - 16/1 -
The byte-code can modify locations in the storage area to record results either temporarily or permanently for use by subsequent requests. Results may be recorded for
- 17 - a period of time, after which the result will be erased. This is useful when trying to detect when a sequence of actions takes place within a specific period of time.
The byte-code can indicate whether the request is to be allowed, denied or queued. Once the byte-code is complete, and the request is to either allowed or denied, the stateful reference monitor responds to the interceptor and passes back the access determination.
If the request is to be queued, then it is placed in a queue for subsequent analysis. This can happen when the user needs to be prompted for some information, or when an operation needs to be performed by a user daemon before the final result of the request can be determined. In these cases, the stateful reference monitor will be triggered again by the user response, or by a user daemon with additional information. The byte-code will be invoked, and it will detect that this request is associated with a previously queued request. The information received as part of the request is saved in the storage area. The previously queued request is then woken up, and is resubmitted to the byte- code portion of the stateful reference monitor. The byte-code processes the original request, but it now has the saved information in the storage area from the user response. This allows it to complete the processing of the request and return an allow or deny response. The stateful reference monitor ensures that requests are ordered, i.e. a request either happens before or after another request. Further, a request is run through the byte- code completely, i.e. until the allow/deny/queue response is found, before the next request can start. This simplifies the implementation of both the stateful reference monitor and of the security policies. The security policy may be written in a C-like language that is compiled into byte-code and loaded into the stateful reference monitor. Other embodiments could use a different source language, or could compile into different code formats, including machine code.
The security policy contains data about resource names, e.g. file names, network ports, object names, etc., that need to be protected. An alternative would be to split the 'data' from the 'program' and load them independently. The single program with embedded data approach is simpler. - 18 -
The security policy program contains handlers for all the possible events that it can receive. Some of these handlers just return an allow or deny response, while others just cause the storage area to be updated, and some are a mixture.
The security policy program can be reloaded while the system is operational. This does not cause the storage area to be modified, and so information that was saved before the policy program was reloaded continues to be available. A special request is triggered as the first request after a reload, and this request can perform any storage area cleanup or modification that is required.
The security policy program contains three major sections: • Standard environmental instructions. These instructions perform actions such as determining the current application name, maintaining caches of information, and determining which file groups a file belongs to. These do not determine the allow/deny status, but may cause the request to be queued if required information is not available. For example, under Windows NT, a filename can be presented in 8.3 notation, a holdover from MS/DOS, or as the full filename. For access control purposes, a single form is desirable and so the 8.3 form must be converted into the full form. An 8.3 filename might be 'statef~l.doc', where the full name might be 'stateful reference monitor.doc'.
• Single request access control checks. These instructions perform access control checks for a single request. The information used for the check is the data from the request, e.g. for a file, this is the filename, the file extension, the type of disk (floppy, hard disk, network drive), the directory, the operation (read/write/create/delete), etc., and data configured by the system administrator. Extra constraints may arise from information in the storage area that was set as a result of an earlier received message, possibly from the central server.
• Multiple request heuristics. These instructions track a sequence of actions, possibly over a limited time interval, and can allow or deny subsequent requests. Alternatively, once the sequence is recognized, a message can be sent to the central server for further processing. Typically, these sequences are used for detecting malicious behavior, and then using the detection to limit the actions that the application can perform. In some cases, the detection may not be of malicious behavior but of specific normal behavior. For example, an application - 19 - that makes a network connection to TCP port 110 or TCP port 25 might be classified as an email application. This fact can then be used in subsequent access control checks, or multiple request heuristics.
The stateful reference monitor of the illustrative embodiment calls on a user daemon to perfonn various services that are either time consuming or difficult to perform in kernel space. These services are invoked by the stateful reference monitor sending a message to the user daemon, and queuing the request. The user daemon processes the message, performs the requested service and sends a message back to the stateful reference monitor, which then saves the result and wakes up the original request. The services include:
• Determining the application name that is running in a particular process;
• Posting a dialog box and requesting user input;
• Writing diagnostic data to a file; • Determining the version number of an executable;
• Converting an 8.3 format filename into a full filename.
An example of the operation of the illustrative stateful reference monitor is now given.
The stateful reference monitor can be loaded with a set of rules that prevent incoming email messages from automatically sending out copies of them. This can be achieved by noting when an email client, detected by monitoring network accesses, writes out a file, detected by monitoring file accesses, while file is then read in by a scripting program, detected by monitoring file accesses, which then invokes an email sender, detected by object invocation or other means, which then reads in the original file, detected by file access. At this point the user can be queried, and the action allowed or denied. In order to detect this chain of events requires the maintenance of significant amounts of state.
However, this example does not prevent the script embedded within the email from causing damage to the host computer. In order to prevent damage, an additional step is performed. At the final stage above, a message is sent to a management server, which may then notify other stateful reference monitors that this script is to be blocked from access. The security policy program that is in effect at each stateful reference - 20 - monitor decides how to handle the notification message. It may, for example, block all further writes to files once a process tries to write to a restricted file.
In addition to the variations and aspects described above, embodiments of aspects of the invention can also include the following. Multiple stateful reference monitors may be instantiated on a single system, each with a Storage Area and a communications mechanism that permits the exchange of information, either directly or via another component. The stateful reference monitors might be partitioned based on resource type, or based on kernel-space versus user-space. A stateful reference monitor can send configuration information to an interceptor to increase or decrease the number and types of requests sent. For example, the stateful reference monitor be able to change dynamically whether the 'CreateProcess' system call under Windows NT is to be intercepted and whether requests to this system service are sent to the stateful reference monitor.
A stateful reference monitor may have its security policy program updated frequently to incorporate new dynamic rales, rather than having a relatively static policy program and frequently updated state database.
A stateful reference monitor may either replace or wrap the existing stateless reference monitors provided by the operating system.
A stateful reference monitor may be an integral part of the operating system. A computer system 300, shown in Fig. 3, with which the various elements of the embodiments described above, either individually or in combination, may be implemented typically includes at least one main unit connected to both one or more output devices 301 which store information, transmit information or display information to one or more users or machines and one or more input devices 302 which receives input from one or more users or machines. The main unit may include one or more processors 303 connected to a memory system 304 via one or more interconnection mechanisms 305, such as a bus or switch. Any input device 302 and output device 301 also are connected to the processor 303 and memory system 304 via the interconnection mechanism 305. The computer system 300 may further include a storage system 306 in which information is held on or in a non- volatile medium. The medium may be fixed in the system or may be removable. - 21 -
The computer system 300 may be a general purpose computer system which is programmable using a computer programming language. Computer programming languages suitable for implementing such a system include procedural programming languages, object-oriented programming languages, combinations of the two, or other languages. The computer system may also be specially programmed, special purpose hardware, or an application specific integrated circuit (ASIC).
In a general purpose computer system, the processor is typically a commercially available processor which executes a program called an operating system which controls the execution of other computer programs and provides scheduling, debugging, input/output control, accounting, compilation, storage assignment, data management and memory management, and communication control and related services. The processor and operating system defines computer platform for which application programs in other computer programming languages are written. The invention is not limited to any particular processor, operating system or programming language. The storage system 306, shown in greater detail in Fig. 4, typically includes a computer readable and writeable nonvolatile recording medium 401 in which signals are stored that define a program to be executed by the processor or information stored on or in the medium 401 to be processed by the program. The medium may, for example, be a disk or flash memory. Typically, in operation, the processor causes data to be read from the nonvolatile recording medium 401 into another memory 402 that allows for faster access to the information by the processor than does the medium 401. This memory 402 is typically a volatile, random access memory such as a dynamic random access memory (DRAM) or static memory (SRAM). It may be located in storage system 306, as shown, or in memory system 304, not shown. The processor 303 generally manipulates the data within the integrated circuit memory 304, 402 and then copies the data to the medium 401 after processing is completed. A variety of mechanisms are known for managing data movement between the medium 401 and the integrated circuit memory element 304, 402, and the invention is not limited thereto. The invention is not limited to a particular memory system 304 or storage system 306. Aspects of embodiments of the invention may be implemented in software or hardware or firmware, or any combination thereof. The various elements of an embodiment, either individually or in combination, may be implemented as a computer - 22 - program product including a computer-readable medium on which instructions are stored for access and execution by a processor. When executed by the computer, the instructions instruct the computer to perform the various steps of the process.
The present invention has now been described in connection with a number of specific embodiments thereof. However, numerous modifications, which are contemplated as falling within the scope of the present invention, should now be apparent to those skilled in the art. Therefore, it is intended that the scope of the present invention be limited only by the scope of the claims appended hereto.

Claims

- 23 -
CLAIMS 1. A real-time reference monitor software product comprising, on a machine- readable medium, a sequence of instructions defining: a storage area where real-time state information is stored and from which the state information is restored; a plurality of rules defining allowable activity based on a pattern of activity; and plural interceptors identifying and governing the activity based on an application of the rules to the activity.
2. The software product of claim 1, further comprising: a process which correlates the state information across different ones of the plural interceptors.
3. The software product of claim 2, wherein at least one of the plural interceptors is a pre-existing element of a conventional computer operating system.
4. The software product of claim 2, wherein the process which correlates the state information further comprises: a rule which defines permissible resource references in view of activity identified by the interceptors and the state information; and a rule interpreter which applies the rule to the activity identified and the state information.
5. The software product of claim 4, wherein the rule can be modified without restarting the real-time reference monitor.
6. The software product of claim 5, wherein the storage area has contents which are preserved when the rule is modified.
7. The software product of claim 1 , wherein the plural reference interceptors correspond to more than one resource type and wherein the storage area is a single storage area. - 24 -
8. The software product of claim 1, further comprising: an application program interface that can send messages to application programs on the same system.
9. The software product of claim 8, further comprising: an application program interface that can send messages to application programs on other systems.
10. The software product of claim 1 , wherein the plural reference interceptors monitor two or more of file access, registry access, network access, object access, system call access, keyboard access, external inputs and user input.
11. A computer-implemented reference monitor, comprising: a monitoring process, executing on a computer, which detects plural defined events and generate event messages; a storage device, on the computer, in which is stored information related to the event messages generated by the monitoring process; and a rule interpreting process, executing on the computer, which responds to characteristics of an event message the information stored in the storage device and a set of rules by modifying operation of the computer.
12. The computer-implemented reference monitor of claim 11, wherein the set of rules is modified in response to the information stored in the storage device.
13. The computer-implemented reference monitor of claim 12, wherein the set of rales is modified and wherein the information stored in the storage device is preserved when the set of rules is modified.
14. The computer-implemented reference monitor of claim 11, further comprising: - 25 - an external event message generating process executing on another computer, wherein the external event message generating process communicates event messages to the rule interpreting process.
15. A method of implementing a processing policy on a computer, comprising: detecting first and second events, each having one of a plurality of defined event types; generating first and second event messages, each containing information about a corresponding one of the first and second events; storing the information about the first event; and enforcing the policy responsive to the stored information about the first event and the information about the second event.
16. The method of claim 15, further comprising: applying one of a set of rules to the stored information about the first event and the information about the second event to determine the nature of enforcing the policy.
17. The method of claim 16, further comprising: executing an operating system on the computer; changing the set of rules without restarting the operating system and without losing the stored information.
18. The method of claim 17, further comprising: changing the set of rules without interrupting the detecting, generating, storing and enforcing.
PCT/US2002/019070 2001-06-14 2002-06-14 Stateful reference monitor WO2002103498A2 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
EP02756206A EP1435030B1 (en) 2001-06-14 2002-06-14 Stateful reference monitor
JP2003505751A JP4629332B2 (en) 2001-06-14 2002-06-14 Status reference monitor
DE60227087T DE60227087D1 (en) 2001-06-14 2002-06-14 STATE RELATED REFERENCE MONITOR

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US29859001P 2001-06-14 2001-06-14
US60/298,590 2001-06-14
US10/071,328 US7290266B2 (en) 2001-06-14 2002-02-08 Access control by a real-time stateful reference monitor with a state collection training mode and a lockdown mode for detecting predetermined patterns of events indicative of requests for operating system resources resulting in a decision to allow or block activity identified in a sequence of events based on a rule set defining a processing policy
US10/071,328 2002-02-08

Publications (2)

Publication Number Publication Date
WO2002103498A2 true WO2002103498A2 (en) 2002-12-27
WO2002103498A3 WO2002103498A3 (en) 2004-04-15

Family

ID=26752102

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2002/019070 WO2002103498A2 (en) 2001-06-14 2002-06-14 Stateful reference monitor

Country Status (6)

Country Link
US (3) US7290266B2 (en)
EP (1) EP1435030B1 (en)
JP (1) JP4629332B2 (en)
AT (1) ATE398311T1 (en)
DE (1) DE60227087D1 (en)
WO (1) WO2002103498A2 (en)

Cited By (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006046973A1 (en) * 2004-10-26 2006-05-04 International Business Machines Corporation A computer and method for on-demand network access control
WO2006074294A2 (en) 2005-01-07 2006-07-13 Cisco Technology, Inc. Methods and apparatus providing security to computer systems and networks
GB2432687A (en) * 2005-11-25 2007-05-30 Mcafee Inc Preventing spyware/malware from installing in a registry
WO2008012100A1 (en) 2006-07-27 2008-01-31 Sia Syncrosoft Method for managing resources
EP2050004A2 (en) * 2006-07-24 2009-04-22 Aplix Corporation User space virtualization system
EP2154622A1 (en) 2006-02-01 2010-02-17 Research in Motion Limited Secure device sharing
US7747693B2 (en) 2003-01-16 2010-06-29 Ironport Systems, Inc. Electronic message delivery using a virtual gateway approach
EP2297898A1 (en) * 2008-06-30 2011-03-23 Azos AI, LLC. A system and method of data cognition incorporating autonomous security protection
WO2011045115A1 (en) * 2009-10-12 2011-04-21 International Business Machines Corporation Dynamically constructed capability for enforcing object access order
US8078990B2 (en) 2006-02-01 2011-12-13 Research In Motion Limited Secure device sharing
US8255995B2 (en) 2005-12-16 2012-08-28 Cisco Technology, Inc. Methods and apparatus providing computer and network security utilizing probabilistic policy reposturing
EP2562667A1 (en) * 2011-08-24 2013-02-27 Pantech Co., Ltd. Apparatus and method for providing security information on background process
US8392994B2 (en) 2005-01-14 2013-03-05 Mcafee, Inc. System, method and computer program product for context-driven behavioral heuristics
US8413245B2 (en) 2005-12-16 2013-04-02 Cisco Technology, Inc. Methods and apparatus providing computer and network security for polymorphic attacks
US8495743B2 (en) 2005-12-16 2013-07-23 Cisco Technology, Inc. Methods and apparatus providing automatic signature generation and enforcement
US8626125B2 (en) 2011-08-24 2014-01-07 Pantech Co., Ltd. Apparatus and method for securing mobile terminal
WO2015042066A1 (en) * 2013-09-18 2015-03-26 Qualcomm Incorporated Data flow based behavioral analysis on mobile devices
WO2015157108A1 (en) * 2014-04-08 2015-10-15 Qualcomm Incorporated Method and system for inferring application states by performing behavioral analysis operations in a mobile device
US9286469B2 (en) 2005-12-16 2016-03-15 Cisco Technology, Inc. Methods and apparatus providing computer and network security utilizing probabilistic signature generation
EP2609483A4 (en) * 2010-08-24 2016-04-27 Varonis Systems Inc Data governance for email systems
EP3113066A1 (en) * 2015-06-30 2017-01-04 Kaspersky Lab AO Computer security architecture and related computing method
CN106326738A (en) * 2015-06-30 2017-01-11 卡巴斯基实验室股份公司 Computer security architecture and related computing method
EP2939173B1 (en) * 2012-12-27 2019-07-24 Crowdstrike, Inc. Real-time representation of security-relevant system state
EP3798868A1 (en) * 2019-09-25 2021-03-31 CI Cloud Item GmbH Method of providing resources to a terminal, server for providing resources to a terminal, and corresponding program

Families Citing this family (116)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6549918B1 (en) * 1998-09-21 2003-04-15 Microsoft Corporation Dynamic information format conversion
US6990666B2 (en) * 2002-03-18 2006-01-24 Surgient Inc. Near on-line server
US20040133441A1 (en) * 2002-09-04 2004-07-08 Jeffrey Brady Method and program for transferring information from an application
JP4332116B2 (en) * 2002-11-01 2009-09-16 富士通株式会社 Access request control method, communication device driver program, and communication device
GB2398134A (en) * 2003-01-27 2004-08-11 Hewlett Packard Co Applying a data handing policy to predetermined system calls
US20040187029A1 (en) * 2003-03-21 2004-09-23 Ting David M. T. System and method for data and request filtering
US20040268139A1 (en) * 2003-06-25 2004-12-30 Microsoft Corporation Systems and methods for declarative client input security screening
WO2005026874A2 (en) * 2003-07-14 2005-03-24 Futuresoft, Inc. System and method for surveilling a computer network
US8539063B1 (en) 2003-08-29 2013-09-17 Mcafee, Inc. Method and system for containment of networked application client software by explicit human input
US7769004B2 (en) * 2003-09-26 2010-08-03 Surgient, Inc. Network abstraction and isolation layer for masquerading machine identity of a computer
US7668093B1 (en) * 2004-08-05 2010-02-23 Convergys Information Management Group, Inc. Architecture for balancing workload
JP4729844B2 (en) * 2003-10-16 2011-07-20 富士ゼロックス株式会社 Server apparatus, information providing method, and program
US20050091658A1 (en) * 2003-10-24 2005-04-28 Microsoft Corporation Operating system resource protection
US20050091535A1 (en) * 2003-10-24 2005-04-28 Microsoft Corporation Application identity for software products
US7581249B2 (en) * 2003-11-14 2009-08-25 Enterasys Networks, Inc. Distributed intrusion response system
US7840968B1 (en) 2003-12-17 2010-11-23 Mcafee, Inc. Method and system for containment of usage of language interfaces
US7783735B1 (en) * 2004-03-22 2010-08-24 Mcafee, Inc. Containment of network communication
US8108937B1 (en) * 2004-04-26 2012-01-31 Symantec Corporation Robustly regulating access to executable class registry entries
US7624383B2 (en) * 2004-04-30 2009-11-24 Cornell University System for and method of improving discrete event simulation using virtual machines
JP4624181B2 (en) * 2004-07-28 2011-02-02 株式会社エヌ・ティ・ティ・データ Unauthorized access countermeasure control device and unauthorized access countermeasure control program
JP2006053788A (en) * 2004-08-12 2006-02-23 Ntt Docomo Inc Software operation monitoring device and software operation monitoring method
US7587594B1 (en) 2004-08-30 2009-09-08 Microsoft Corporation Dynamic out-of-process software components isolation for trustworthiness execution
US7873955B1 (en) 2004-09-07 2011-01-18 Mcafee, Inc. Solidifying the executable software set of a computer
US7650640B1 (en) * 2004-10-18 2010-01-19 Symantec Corporation Method and system for detecting IA32 targeted buffer overflow attacks
US8521570B2 (en) * 2004-12-28 2013-08-27 Sap Aktiengesellschaft Integration of distributed business process models
US7665098B2 (en) * 2005-04-29 2010-02-16 Microsoft Corporation System and method for monitoring interactions between application programs and data stores
US7603552B1 (en) * 2005-05-04 2009-10-13 Mcafee, Inc. Piracy prevention using unique module translation
US8078740B2 (en) * 2005-06-03 2011-12-13 Microsoft Corporation Running internet applications with low rights
US20060282830A1 (en) * 2005-06-13 2006-12-14 Microsoft Corporation Analysis of the impact of application programs on resources stored in data stores
US20060294596A1 (en) * 2005-06-27 2006-12-28 Priya Govindarajan Methods, systems, and apparatus to detect unauthorized resource accesses
US7856661B1 (en) 2005-07-14 2010-12-21 Mcafee, Inc. Classification of software on networked systems
US8045958B2 (en) * 2005-11-21 2011-10-25 Research In Motion Limited System and method for application program operation on a wireless device
EP1788505A1 (en) * 2005-11-21 2007-05-23 Research In Motion Limited System and method for application program operation on a wireless device
US7757269B1 (en) 2006-02-02 2010-07-13 Mcafee, Inc. Enforcing alignment of approved changes and deployed changes in the software change life-cycle
EP1826944B1 (en) * 2006-02-27 2009-05-13 Research In Motion Limited Method of customizing a standardized IT policy
US7895573B1 (en) 2006-03-27 2011-02-22 Mcafee, Inc. Execution environment file inventory
US8078728B1 (en) 2006-03-31 2011-12-13 Quest Software, Inc. Capacity pooling for application reservation and delivery
US7870387B1 (en) * 2006-04-07 2011-01-11 Mcafee, Inc. Program-based authorization
US8352930B1 (en) 2006-04-24 2013-01-08 Mcafee, Inc. Software modification by group to minimize breakage
US8555404B1 (en) 2006-05-18 2013-10-08 Mcafee, Inc. Connectivity-based authorization
US8185737B2 (en) 2006-06-23 2012-05-22 Microsoft Corporation Communication across domains
US9860274B2 (en) 2006-09-13 2018-01-02 Sophos Limited Policy management
US9424154B2 (en) 2007-01-10 2016-08-23 Mcafee, Inc. Method of and system for computer system state checks
US8332929B1 (en) 2007-01-10 2012-12-11 Mcafee, Inc. Method and apparatus for process enforced configuration management
US20080184332A1 (en) * 2007-01-31 2008-07-31 Motorola, Inc. Method and device for dual authentication of a networking device and a supplicant device
JP5180232B2 (en) * 2007-02-01 2013-04-10 テレフオンアクチーボラゲット エル エム エリクソン(パブル) Improved media control
US20080209535A1 (en) * 2007-02-28 2008-08-28 Tresys Technology, Llc Configuration of mandatory access control security policies
US20080307486A1 (en) * 2007-06-11 2008-12-11 Microsoft Corporation Entity based access management
US10019570B2 (en) 2007-06-14 2018-07-10 Microsoft Technology Licensing, Llc Protection and communication abstractions for web browsers
US8468579B2 (en) * 2007-06-15 2013-06-18 Microsoft Corporation Transformation of sequential access control lists utilizing certificates
US7743157B2 (en) * 2007-06-26 2010-06-22 Sap Ag System and method for switching between stateful and stateless communication modes
US7840501B1 (en) 2007-07-12 2010-11-23 Mcafee, Inc. Behavioral analysis apparatus and associated method that utilizes a system selected based on a level of data
US8195931B1 (en) 2007-10-31 2012-06-05 Mcafee, Inc. Application change control
US8365276B1 (en) 2007-12-10 2013-01-29 Mcafee, Inc. System, method and computer program product for sending unwanted activity information to a central system
US8194674B1 (en) 2007-12-20 2012-06-05 Quest Software, Inc. System and method for aggregating communications and for translating between overlapping internal network addresses and unique external network addresses
US8438636B2 (en) * 2008-01-11 2013-05-07 Microsoft Corporation Secure and extensible policy-driven application platform
US8515075B1 (en) 2008-01-31 2013-08-20 Mcafee, Inc. Method of and system for malicious software detection using critical address space protection
GB2458568B (en) * 2008-03-27 2012-09-19 Covertix Ltd System and method for dynamically enforcing security policies on electronic files
US8615502B2 (en) 2008-04-18 2013-12-24 Mcafee, Inc. Method of and system for reverse mapping vnode pointers
US9262357B2 (en) 2008-09-29 2016-02-16 International Business Machines Corporation Associating process priority with I/O queuing
US8631468B2 (en) * 2008-11-10 2014-01-14 Samsung Electronics Co., Ltd. Active access monitoring for safer computing environments and systems
US20100128866A1 (en) * 2008-11-26 2010-05-27 Microsoft Corporation Modification of system call behavior
US8544003B1 (en) 2008-12-11 2013-09-24 Mcafee, Inc. System and method for managing virtual machine configurations
US9288210B2 (en) * 2009-01-26 2016-03-15 Microsoft Technology Licensing, Llc Revocable object access
US8341627B2 (en) 2009-08-21 2012-12-25 Mcafee, Inc. Method and system for providing user space address protection from writable memory area in a virtual environment
US8381284B2 (en) 2009-08-21 2013-02-19 Mcafee, Inc. System and method for enforcing security policies in a virtual environment
US8402553B2 (en) * 2009-10-30 2013-03-19 International Business Machines Corporation Updating an operating system of a computer system
US9552497B2 (en) 2009-11-10 2017-01-24 Mcafee, Inc. System and method for preventing data loss using virtual machine wrapped applications
US8677508B2 (en) * 2010-01-13 2014-03-18 Nec Corporation Confidential information leakage prevention system, confidential information leakage prevention method and confidential information leakage prevention program
US9390128B1 (en) * 2010-03-25 2016-07-12 Symantec Corporation Datastore for storing file access event data
US9098333B1 (en) 2010-05-07 2015-08-04 Ziften Technologies, Inc. Monitoring computer process resource usage
US8925101B2 (en) 2010-07-28 2014-12-30 Mcafee, Inc. System and method for local protection against malicious software
US8938800B2 (en) 2010-07-28 2015-01-20 Mcafee, Inc. System and method for network level protection against malicious software
US8549003B1 (en) 2010-09-12 2013-10-01 Mcafee, Inc. System and method for clustering host inventories
US8773981B2 (en) * 2010-12-06 2014-07-08 Genbrand US LLC Systems and methods for dynamic congestion management in communications networks
US9075993B2 (en) 2011-01-24 2015-07-07 Mcafee, Inc. System and method for selectively grouping and managing program files
RU2517409C2 (en) * 2011-02-17 2014-05-27 Федеральное государственное военное образовательное учреждение высшего профессионального образования "Военный авиационный инженерный университет" (г. Воронеж) Министерства обороны Российской Федерации Method for control efficiency estimation and device to this end
US9112830B2 (en) 2011-02-23 2015-08-18 Mcafee, Inc. System and method for interlocking a host and a gateway
US20120239541A1 (en) * 2011-03-18 2012-09-20 Clairmail, Inc. Actionable alerting
US10216553B2 (en) 2011-06-30 2019-02-26 International Business Machines Corporation Message oriented middleware with integrated rules engine
US9594881B2 (en) 2011-09-09 2017-03-14 Mcafee, Inc. System and method for passive threat detection using virtual memory inspection
US8694738B2 (en) 2011-10-11 2014-04-08 Mcafee, Inc. System and method for critical address space protection in a hypervisor environment
US9069586B2 (en) 2011-10-13 2015-06-30 Mcafee, Inc. System and method for kernel rootkit protection in a hypervisor environment
US8973144B2 (en) 2011-10-13 2015-03-03 Mcafee, Inc. System and method for kernel rootkit protection in a hypervisor environment
US8800024B2 (en) 2011-10-17 2014-08-05 Mcafee, Inc. System and method for host-initiated firewall discovery in a network environment
US8713668B2 (en) 2011-10-17 2014-04-29 Mcafee, Inc. System and method for redirected firewall discovery in a network environment
US8739272B1 (en) 2012-04-02 2014-05-27 Mcafee, Inc. System and method for interlocking a host and a gateway
US9384349B2 (en) * 2012-05-21 2016-07-05 Mcafee, Inc. Negative light-weight rules
US8973146B2 (en) 2012-12-27 2015-03-03 Mcafee, Inc. Herd based scan avoidance system in a network environment
US9779237B2 (en) * 2013-03-15 2017-10-03 Netiq Corporation Detection of non-volatile changes to a resource
US20140359694A1 (en) * 2013-06-03 2014-12-04 eSentire, Inc. System and method for computer system security
WO2015017587A1 (en) * 2013-07-30 2015-02-05 FSLogix, Inc. Managing configurations of computing terminals
WO2015060857A1 (en) 2013-10-24 2015-04-30 Mcafee, Inc. Agent assisted malicious application blocking in a network environment
US10200387B2 (en) 2015-11-30 2019-02-05 International Business Machines Corporation User state tracking and anomaly detection in software-as-a-service environments
US10291648B2 (en) 2015-12-22 2019-05-14 At&T Intellectual Property I, L.P. System for distributing virtual entity behavior profiling in cloud deployments
EP3408784A1 (en) * 2016-01-29 2018-12-05 British Telecommunications public limited company Secure data storage
CN105912930B (en) * 2016-04-11 2019-02-01 北京奇虎科技有限公司 Mobile terminal and its system resource method of controlling security
US10002241B2 (en) * 2016-05-25 2018-06-19 International Business Machines Corporation Managing data to diminish cross-context analysis
US11314546B2 (en) * 2016-11-18 2022-04-26 Data Accelerator Ltd Method and system for executing a containerized stateful application on a stateless computing platform using machine learning
GB2552717B (en) 2016-08-05 2018-09-05 Arm Ip Ltd Management of control parameters in electronic systems
US10212023B2 (en) * 2016-10-05 2019-02-19 Vmware, Inc. Methods and systems to identify and respond to low-priority event messages
US10841337B2 (en) 2016-11-28 2020-11-17 Secureworks Corp. Computer implemented system and method, and computer program product for reversibly remediating a security risk
US10885212B2 (en) 2017-09-12 2021-01-05 Sophos Limited Secure management of process properties
CN109558739B (en) * 2017-09-26 2022-04-15 腾讯科技(深圳)有限公司 Program running method and device, terminal and readable medium
US10735470B2 (en) 2017-11-06 2020-08-04 Secureworks Corp. Systems and methods for sharing, distributing, or accessing security data and/or security applications, models, or analytics
US10594713B2 (en) 2017-11-10 2020-03-17 Secureworks Corp. Systems and methods for secure propagation of statistical models within threat intelligence communities
US11003718B2 (en) 2018-06-12 2021-05-11 Secureworks Corp. Systems and methods for enabling a global aggregated search, while allowing configurable client anonymity
US10785238B2 (en) 2018-06-12 2020-09-22 Secureworks Corp. Systems and methods for threat discovery across distinct organizations
US11310268B2 (en) 2019-05-06 2022-04-19 Secureworks Corp. Systems and methods using computer vision and machine learning for detection of malicious actions
US11418524B2 (en) 2019-05-07 2022-08-16 SecureworksCorp. Systems and methods of hierarchical behavior activity modeling and detection for systems-level security
US11381589B2 (en) 2019-10-11 2022-07-05 Secureworks Corp. Systems and methods for distributed extended common vulnerabilities and exposures data management
US11522877B2 (en) 2019-12-16 2022-12-06 Secureworks Corp. Systems and methods for identifying malicious actors or activities
US11588834B2 (en) 2020-09-03 2023-02-21 Secureworks Corp. Systems and methods for identifying attack patterns or suspicious activity in client networks
JP7391802B2 (en) * 2020-09-11 2023-12-05 株式会社東芝 Information processing device, information processing method, and computer program
US11528294B2 (en) 2021-02-18 2022-12-13 SecureworksCorp. Systems and methods for automated threat detection
US11909764B1 (en) * 2021-07-01 2024-02-20 Rapid7, Inc. Man-in-the-middle interceptor for application security testing

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5925126A (en) * 1997-03-18 1999-07-20 Memco Software, Ltd. Method for security shield implementation in computer system's software
WO2000056027A1 (en) * 1999-03-15 2000-09-21 Texar Software Corp. Computer security system
WO2001031420A2 (en) * 1999-10-25 2001-05-03 Visa International Service Association Features generation for use in computer network intrusion detection
US20020194495A1 (en) * 2001-06-14 2002-12-19 Gladstone Philip J.S. Stateful distributed event processing and adaptive security

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6119103A (en) * 1997-05-27 2000-09-12 Visa International Service Association Financial risk prediction systems and methods therefor
EP0935192A1 (en) * 1998-02-09 1999-08-11 Sony Europa B.V. Method and system for communication between application programs and a network
US6141686A (en) * 1998-03-13 2000-10-31 Deterministic Networks, Inc. Client-side application-classifier gathering network-traffic statistics and application and user names using extensible-service provider plugin for policy-based network control
US6275942B1 (en) * 1998-05-20 2001-08-14 Network Associates, Inc. System, method and computer program product for automatic response to computer system misuse using active response modules
US6317786B1 (en) * 1998-05-29 2001-11-13 Webspective Software, Inc. Web service
WO2000045256A1 (en) * 1999-01-29 2000-08-03 Iona Technologies, Inc. Method and system for dynamic configuration of interceptors in a client-server environment
US20010044904A1 (en) * 1999-09-29 2001-11-22 Berg Ryan J. Secure remote kernel communication
US6880087B1 (en) * 1999-10-08 2005-04-12 Cisco Technology, Inc. Binary state machine system and method for REGEX processing of a data stream in an intrusion detection system
US6678734B1 (en) * 1999-11-13 2004-01-13 Ssh Communications Security Ltd. Method for intercepting network packets in a computing device
US20020099738A1 (en) * 2000-11-22 2002-07-25 Grant Hugh Alexander Automated web access for back-end enterprise systems
US7089592B2 (en) * 2001-03-15 2006-08-08 Brighterion, Inc. Systems and methods for dynamic detection and prevention of electronic fraud
US7320141B2 (en) * 2001-03-21 2008-01-15 International Business Machines Corporation Method and system for server support for pluggable authorization systems

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5925126A (en) * 1997-03-18 1999-07-20 Memco Software, Ltd. Method for security shield implementation in computer system's software
WO2000056027A1 (en) * 1999-03-15 2000-09-21 Texar Software Corp. Computer security system
WO2001031420A2 (en) * 1999-10-25 2001-05-03 Visa International Service Association Features generation for use in computer network intrusion detection
US20020194495A1 (en) * 2001-06-14 2002-12-19 Gladstone Philip J.S. Stateful distributed event processing and adaptive security

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
PING LIU: "The design and implementation of a reference monitor for the 2k operating system" INTERNET, [Online] 1999, XP002259630 Retrieved from the Internet: <URL:http://citeseer.nj.nec.com/liu99design.html> [retrieved on 2003-10-27] *

Cited By (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9038193B2 (en) 1998-08-14 2015-05-19 Azos Al, Llc System and method of data cognition incorporating autonomous security protection
US7747693B2 (en) 2003-01-16 2010-06-29 Ironport Systems, Inc. Electronic message delivery using a virtual gateway approach
US7409482B2 (en) 2004-10-26 2008-08-05 Lenovo (Singapore) Pte, Ltd. Computer and method for on-demand network access control
WO2006046973A1 (en) * 2004-10-26 2006-05-04 International Business Machines Corporation A computer and method for on-demand network access control
GB2434012A (en) * 2004-10-26 2007-07-11 Ibm A computer and method for on-demand network access control
DE112005002614B4 (en) * 2004-10-26 2017-06-01 Lenovo (Singapore) Pte. Ltd. Computer and method for network access control on demand
EP1834439A2 (en) * 2005-01-07 2007-09-19 Cisco Technology, Inc. Methods and apparatus providing security to computer systems and networks
WO2006074294A2 (en) 2005-01-07 2006-07-13 Cisco Technology, Inc. Methods and apparatus providing security to computer systems and networks
EP1834439A4 (en) * 2005-01-07 2011-07-27 Cisco Tech Inc Methods and apparatus providing security to computer systems and networks
US8392994B2 (en) 2005-01-14 2013-03-05 Mcafee, Inc. System, method and computer program product for context-driven behavioral heuristics
GB2432687A (en) * 2005-11-25 2007-05-30 Mcafee Inc Preventing spyware/malware from installing in a registry
GB2432687B (en) * 2005-11-25 2011-06-01 Mcafee Inc Product for preventing spyware/malware from installing in a registry
US9286469B2 (en) 2005-12-16 2016-03-15 Cisco Technology, Inc. Methods and apparatus providing computer and network security utilizing probabilistic signature generation
US9148442B2 (en) 2005-12-16 2015-09-29 Cisco Technology, Inc. Methods and apparatus providing automatic signature generation and enforcement
US8806650B2 (en) 2005-12-16 2014-08-12 Cisco Technology, Inc. Methods and apparatus providing automatic signature generation and enforcement
US8495743B2 (en) 2005-12-16 2013-07-23 Cisco Technology, Inc. Methods and apparatus providing automatic signature generation and enforcement
US8255995B2 (en) 2005-12-16 2012-08-28 Cisco Technology, Inc. Methods and apparatus providing computer and network security utilizing probabilistic policy reposturing
US8413245B2 (en) 2005-12-16 2013-04-02 Cisco Technology, Inc. Methods and apparatus providing computer and network security for polymorphic attacks
US8713475B2 (en) 2006-02-01 2014-04-29 Blackberry Limited Secure device sharing
US11797656B2 (en) 2006-02-01 2023-10-24 Blackberry Limited Secure device sharing
US11080374B2 (en) 2006-02-01 2021-08-03 Blackberry Limited Secure device sharing
US8291342B2 (en) 2006-02-01 2012-10-16 Research In Motion Limited Secure device sharing
EP2154622A1 (en) 2006-02-01 2010-02-17 Research in Motion Limited Secure device sharing
US10635791B2 (en) 2006-02-01 2020-04-28 Blackberry Limited Secure device sharing
US8078990B2 (en) 2006-02-01 2011-12-13 Research In Motion Limited Secure device sharing
EP2050004A4 (en) * 2006-07-24 2011-01-05 Aplix Corp User space virtualization system
US8336095B2 (en) 2006-07-24 2012-12-18 Aplix Corporation User space virtualization system
EP2050004A2 (en) * 2006-07-24 2009-04-22 Aplix Corporation User space virtualization system
WO2008012100A1 (en) 2006-07-27 2008-01-31 Sia Syncrosoft Method for managing resources
EP2297898A1 (en) * 2008-06-30 2011-03-23 Azos AI, LLC. A system and method of data cognition incorporating autonomous security protection
AU2009265026B2 (en) * 2008-06-30 2015-02-26 Azos Ai, Llc A system and method of data cognition incorporating autonomous security protection
EP2297898A4 (en) * 2008-06-30 2012-10-03 Azos Ai Llc A system and method of data cognition incorporating autonomous security protection
AU2015202863B2 (en) * 2008-06-30 2017-03-30 Azos Ai, Llc A system and method of data cognition incorporating autonomous security protection
US8495730B2 (en) 2009-10-12 2013-07-23 International Business Machines Corporation Dynamically constructed capability for enforcing object access order
WO2011045115A1 (en) * 2009-10-12 2011-04-21 International Business Machines Corporation Dynamically constructed capability for enforcing object access order
US8695088B2 (en) 2009-10-12 2014-04-08 International Business Machines Corporation Dynamically constructed capability for enforcing object access order
US9886588B2 (en) 2009-10-12 2018-02-06 International Business Machines Corporation Dynamically constructed capability for enforcing object access order
US10726141B2 (en) 2009-10-12 2020-07-28 International Business Machines Corporation Dynamically constructed capability for enforcing object access order
US9712475B2 (en) 2010-08-24 2017-07-18 Varonis Systems, Inc. Data governance for email systems
EP2609483A4 (en) * 2010-08-24 2016-04-27 Varonis Systems Inc Data governance for email systems
CN107093054A (en) * 2010-08-24 2017-08-25 瓦欧尼斯系统有限公司 Enterprise E-mail and file supervisory systems and method
CN107093054B (en) * 2010-08-24 2021-06-11 瓦欧尼斯系统有限公司 Enterprise e-mail and file monitoring system and method
US8626125B2 (en) 2011-08-24 2014-01-07 Pantech Co., Ltd. Apparatus and method for securing mobile terminal
CN103106363A (en) * 2011-08-24 2013-05-15 株式会社泛泰 Apparatus and method for providing security information on background process
EP2562667A1 (en) * 2011-08-24 2013-02-27 Pantech Co., Ltd. Apparatus and method for providing security information on background process
EP2939173B1 (en) * 2012-12-27 2019-07-24 Crowdstrike, Inc. Real-time representation of security-relevant system state
US10409980B2 (en) 2012-12-27 2019-09-10 Crowdstrike, Inc. Real-time representation of security-relevant system state
US9607146B2 (en) 2013-09-18 2017-03-28 Qualcomm Incorporated Data flow based behavioral analysis on mobile devices
WO2015042066A1 (en) * 2013-09-18 2015-03-26 Qualcomm Incorporated Data flow based behavioral analysis on mobile devices
CN106133642A (en) * 2014-04-08 2016-11-16 高通股份有限公司 The method and system of application state is inferred in a mobile device by performing behavior analysis operation
US9684787B2 (en) 2014-04-08 2017-06-20 Qualcomm Incorporated Method and system for inferring application states by performing behavioral analysis operations in a mobile device
WO2015157108A1 (en) * 2014-04-08 2015-10-15 Qualcomm Incorporated Method and system for inferring application states by performing behavioral analysis operations in a mobile device
US10361998B2 (en) 2015-06-30 2019-07-23 AO Kaspersky Lab Secure gateway communication systems and methods
US9774568B2 (en) 2015-06-30 2017-09-26 AO Kaspersky Lab Computer security architecture and related computing method
CN106326738A (en) * 2015-06-30 2017-01-11 卡巴斯基实验室股份公司 Computer security architecture and related computing method
EP3113066A1 (en) * 2015-06-30 2017-01-04 Kaspersky Lab AO Computer security architecture and related computing method
EP3798868A1 (en) * 2019-09-25 2021-03-31 CI Cloud Item GmbH Method of providing resources to a terminal, server for providing resources to a terminal, and corresponding program
WO2021058395A1 (en) * 2019-09-25 2021-04-01 Ci Cloud Item Gmbh Method of providing resources to a terminal, server for providing resources to a terminal, and corresponding program

Also Published As

Publication number Publication date
ATE398311T1 (en) 2008-07-15
WO2002103498A3 (en) 2004-04-15
US20080022359A1 (en) 2008-01-24
US8595170B2 (en) 2013-11-26
US7290266B2 (en) 2007-10-30
DE60227087D1 (en) 2008-07-24
EP1435030B1 (en) 2008-06-11
JP2004537105A (en) 2004-12-09
JP4629332B2 (en) 2011-02-09
US20140082692A1 (en) 2014-03-20
US9141812B2 (en) 2015-09-22
EP1435030A2 (en) 2004-07-07
US20030023774A1 (en) 2003-01-30

Similar Documents

Publication Publication Date Title
US9141812B2 (en) Stateful reference monitor
US7430760B2 (en) Security-related programming interface
US5361359A (en) System and method for controlling the use of a computer
Bernaschi et al. REMUS: A security-enhanced operating system
US7509493B2 (en) Method and system for distributing security policies
US7565549B2 (en) System and method for the managed security control of processes on a computer system
US7296274B2 (en) Method and apparatus providing deception and/or altered execution of logic in an information system
US7437766B2 (en) Method and apparatus providing deception and/or altered operation in an information system operating system
US7665139B1 (en) Method and apparatus to detect and prevent malicious changes to tokens
US20070266444A1 (en) Method and System for Securing Data Stored in a Storage Device
KR20180097527A (en) Dual Memory Introspection to Protect Multiple Network Endpoints
Srivastava et al. Automatic discovery of parasitic malware
Çeliktaş The ransomware detection and prevention tool design by using signature and anomaly based detection methods
EP1944676B1 (en) Stateful reference monitor
Sun et al. The dose makes the poison—leveraging uncertainty for effective malware detection
EP3243313B1 (en) System and method for monitoring a computer system using machine interpretable code
US20240086558A1 (en) Computer-implemented system and method for performing in-kernel instrumentation of kernel-level events
Shioya et al. A sandbox with a dynamic policy based on execution contexts of applications
ÇELİKTAŞ ISTANBUL TECHNICAL UNIVERSITY★ INFORMATICS INSTITUTE
WO2006059335A1 (en) Method and system for securing data stored in a storage device
SMITHERS CROSS REFERENCE TO RELATED APPLICATIONS
Bergstrand et al. Localization of Spyware in Windows Environments
Marceau et al. AppMon: Application Monitors for Not-Yet-Trusted Software

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): JP

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
WWE Wipo information: entry into national phase

Ref document number: 2003505751

Country of ref document: JP

WWE Wipo information: entry into national phase

Ref document number: 2002756206

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 2002756206

Country of ref document: EP