The described technology relates generally to detecting and preventing an exploitation of a vulnerability of a computer system.
Although the Internet has had great successes in facilitating communications between computer systems and enabling electronic commerce, the computer systems connected to the Internet have been under almost constant attack by hackers seeking to disrupt their operation. Many of the attacks seek to exploit vulnerabilities of the application programs or other computer programs executing on those computer systems. One of the most destructive methods of attacking a computer system has been to send a “worm” to a computer program.
A worm is a self-propagating attack that exploits a vulnerability by taking control of the computer system and using that computer system to launch attacks (i.e., send the same worm) against other computer systems with the same vulnerability.
A worm is a message or sequence of messages designed to exploit a vulnerability of the receiving computer program. Upon receiving the message or messages, the computer program performs some action that allows the worm to take control of the computer system. Different vulnerabilities can be exploited in different ways, such as by sending network packets, streaming data, accessing a file system, modifying registry or configuration data, and so on, which are referred to as security events.
Developers of applications and administrators of computer systems go to great effort and expense to identify and remove vulnerabilities. Because of the complexity of applications, however, it is virtually impossible to identify and remove all vulnerabilities before applications are released. After an application is released, developers can become aware of vulnerabilities in various ways. A party with no malicious intent may identify a vulnerability in an application and may secretly notify the developer so the vulnerability can be removed before a hacker identifies and exploits it. If a hacker identifies a vulnerability first, the developer may not learn of the vulnerability until it is exploited—sometimes with disastrous consequences.
Regardless of how a developer finds out about a vulnerability, the developer typically develops and distributes to system administrators “patches” that remove the vulnerability. If the vulnerability has not yet been exploited (e.g., might not be known to hackers), then a developer can design, implement, test, and distribute a patch in a disciplined way. If the vulnerability has already been widely exposed, then the developer may rush to distribute a patch without the same care that is used under normal circumstances.
Intrusion detection systems have been developed that can be used to identify whether an attempt is being made to exploit a known vulnerability that has not yet been patched. These intrusion detection systems may define a “signature” for each way a vulnerability can be exploited. For example, if a vulnerability can be exploited by sending a certain type of message with a certain attribute, then the signature for that exploitation would specify that type and attribute. When a security event, such as the receipt of a message, occurs, the intrusion detection system checks its signatures to determine whether any match the security event. If so, then the intrusion detection system may take action to prevent the exploitation, such as dropping the message.
Signatures for newly discovered exploitations of vulnerabilities can be created in different ways. Developers of intrusion detection systems may create and distribute new signatures when they become aware of new exploitations.
Such signatures may be implemented as executable code that is specifically designed to detect and prevent a newly discovered exploitation. An administrator can then install the new signatures to prevent the exploitation. A developer may not, however, provide signatures for all known exploitations. For example, the vulnerability may be in a special-purpose application program that the developer does not support. To prevent exploitation of such vulnerabilities, intrusion detection systems may allow administrators to create their own signatures. These intrusion detection systems may provide a signature creation tool that lists various attributes of a security event and allows an administrator to set the values of those attributes to define the signature and actions to be taken to prevent the exploitation. When a security event matches the attribute values of the signature, then the intrusion detection systems takes the associated actions.
A difficulty with these intrusion detection systems is that since an administrator can only set the values for a limited set of security event attributes using the signature creation tool, the administrator may not be able to create signatures for certain exploitations. In such a case, a programmer would need to develop a signature with executable code for detecting and preventing the exploitation. Such development can be very expensive and time-consuming. Another difficulty is that the signature distributed by a developer of an intrusion detection system may result in a behavior that is not desired by the administrator. For example, the signature may be conservative in its assumption of which types of messages might exploit a vulnerability and discard all those messages. Such conservative assumption may result in many messages being discarded as a result of false positive detections. An administrator, however, may know that certain types may not be a problem in the environment of their computer system. When the desired signature cannot be created using the signature creation tool, the administrator may have no choice but to develop the executable code for the signature. It would be desirable to provide a tool that would allow an administrator to develop signatures that meet their needs without having to resort to developing custom executable code.
An intrusion detection system for customizing a security policy that detects an attempt to exploit a vulnerability is provided. A security policy contains criteria and a procedure. The criteria specify attributes of a security event that may be an exploitation, and the procedure specifies instructions to be performed that indicate when a security event may be an exploitation. If the criteria and the procedure both indicate that a security event may be an exploitation, and the security event matches the security policy, then an appropriate action is taken. The intrusion detection system allows a user to modify the criteria to customize the security policy in a way that has the capabilities of a procedure without having to develop a procedure.
A method and system for customizing a security policy for detecting an attempt to exploit a vulnerability is provided. In one embodiment, the detection system provides security policies, which are a type of signature, that include a condition section and a scope section used to detect whether an attempt is being made to exploit the vulnerability that is the target of the security policy. The condition section contains a procedure, such as instructions or operation codes, to be performed to determine whether a security event satisfies the condition of the security policy. The scope section contains criteria defining whether a security event is within scope of the security policy. A security event that is within scope of a security policy and satisfies the condition of the security policy “matches” the security policy. To determine whether a security event matches a security policy, the detection system first determines whether the security event is within scope of the security policy. If the security event is within scope, then the detection system determines whether the security event satisfies the condition of the security policy. If it does, then the security event matches the security policy, and the detection system takes the appropriate action such as preventing exploitation of the vulnerability.
The detection system allows a user to customize a security policy by modifying the scope section of the security policy. The criteria of the scope section indicate the values of various attributes of a security event that need to be satisfied for the security event to be within scope. For example, an attribute may be the source address or destination port of a network packet, and a network packet security event may be within scope of the security policy when its source address and destination port are the same as specified in the scope section of the security policy. Because a security policy has a scope section that can be modified by a user and a condition section containing a procedure, an administrator can develop a security policy that takes advantage of procedures developed by others, but at the same time can be customized without needing to develop new, or modify existing, procedures. Moreover, such customization can significantly reduce the number of false positive detections.
In one embodiment, the detection system may provide a procedure engine that performs the procedure of a condition by interpreting the instructions of the procedure. The programming language of the procedure engine may be a subset of a conventional programming language (e.g., C++) or a special-purpose programming language developed specifically for determining whether a security event matches the security policy. Such a special-purpose programming language may provide instructions for manipulating attributes of the security event, computer system parameters (e.g., operating system version), environment and parameters (e.g., date), and so on. The programming language may provide a stack-based metaphor in which results of computation are pushed onto a stack, which can then be used in subsequent computations. When the execution of a procedure completes, the top element of the stack may indicate whether the condition of the security policy has been satisfied.
In one embodiment, the detection system may allow a user to specify the action to be taken when a security event matches a security policy, such as discard a packet or terminate a session. The action of a security policy can be specified by default or explicitly. If a security policy does not include an action section, then a default action, which may be specific to the type of security policy (e.g., packet-based security policy or stream-based data security policy), is taken when a security event matches the security policy. If a security policy does include an action section, then that explicit action is taken when a security event matches the security policy. A user can override the action of a security policy by specifying a new action, which the detection system stores in the action section of the security policy.
In one embodiment, the detection system may allow a criterion of a scope section to be locked to prevent a user from modifying that locked criterion. A developer of a security policy may lock certain criteria to limit the amount of customization that can be performed by user. For example, a security policy may be directed to detecting an exploitation via a network packet that has a certain source address. The developer may lock the criterion of the source address so that it cannot be modified by a user. Because the developer developed the condition of the security policy to process only network packets from that source address, the developer may not want that same condition applied to a network packet from any other source address.
In one embodiment, the detection system takes various actions depending on whether a rating for a security event that matches a security policy exceeds a rating threshold. The detection system calculates an overall rating for a security event that matches a security policy. An administrator can then set a threshold rating that the detection system uses when determining whether to take an action of a security policy. For example, if the rating of a security event/policy combination is 75 (within a range of 0-100) and the threshold is 80, then the detection system will not take the action. In contrast, if the threshold is 50, then the detection system will take the action. The detection system may also allow an administrator to set multiple thresholds and additional actions to be taken when a security event/policy combination exceeds a threshold. For example, an administrator may set a low threshold at 40 and indicate that the security event is to be logged, but the action of the security policy is not to be taken. The administrator may also set a high threshold at 80 and indicate that the security event is to be logged and the action of the security policy is to be taken. Thus, when the rating of a security event/policy combination exceeds the low threshold, but not the high threshold, the security event is simply logged. If the rating is below the low threshold, then no action is taken.
The detection system may base the overall rating of a security event/policy combination on static data of the security policy and dynamic data of the security event. The static data of a security policy may include severity of the exploitation that the security policy is designed to detect and confidence that the security policy will correctly detect attempts to exploit the vulnerability. The severity and confidence may be expressed numerically (e.g., 0-100) or descriptively (e.g., high, medium, and low). The dynamic data of the security event may include attributes that are generally applicable to a certain type of security event. For example, one attribute may be the direction (i.e., incoming or outgoing) of a network packet, and another attribute may be the source address of a network packet. The detection system may allow an administrator to set a value rating for each attribute. For example, an administrator may set the value rating for incoming to 100 and the value rating for outgoing to 50. The detection system may calculate the overall rating for a security event/policy combination by taking a weighted average of the rating contributions of the static data and the dynamic data. The detection system may weight confidence and severity equally when calculating the rating contribution of the static data. For example, a severity of 75 and a confidence of 95 would be combined to a rating contribution of 85 (i.e., (75+95)/2). Similarly, the detection system may weight the value rating of each attribute equally when calculating the rating contribution of the dynamic data. For example, a rating value of 100 for direction and 30 for source address would be combined to a rating contribution of 65 (i.e., (100+30)/2). The detection system can then weight the rating contribution of the static and dynamic data equally to give an overall rating of 75 (i.e., (85+65)/2). One skilled in the art will appreciate that the weights can be linear or non-linear and can be predefined or set by an administrator. By using thresholds that apply to multiple security policies, an administrator can avoid having to define multiple versions of a security policy for various attributes of a security event and multiple actions to be taken depending on severity and confidence of a security policy.
The computing device on which the detection system is implemented may include a central processing unit, memory, input devices (e.g., keyboard and pointing devices), output devices (e.g., display devices), and storage devices (e.g., disk drives). The memory and storage devices are computer-readable media that may contain instructions that implement the detection system. In addition, the data structures and message structures may be stored or transmitted via a data transmission medium, such as a signal on a communications link. Various communications links may be used, such as the Internet, a local area network, a wide area network, or a point-to-point dial-up connection.
The detection system may be implemented in various operating environments that include personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like.
The detection system may be described in the general context of computer-executable instructions, such as program modules, executed by one or more computers or other devices. Generally, program modules include routines, programs, objects, components, data structures, and so on that perform particular tasks or implement particular abstract data types. Typically, the functionality of the program modules may be combined or distributed as desired in various embodiments.
In the following, the syntax and semantics of the sections of the security policies in one embodiment are defined.
A. Signature Identification Section
The signature identification section contains the following elements:
The revision number is used to differentiate multiple versions of the same signature, determine signature seniority (i.e., highest revision number), and track security events associated with a signature on a per-revision or an across-all-revisions basis. The detection system may allow an administrator to select whether maintenance is to be performed on all versions of a security policy or just certain versions. For example, an instruction to disable “M55” would disable all versions of that security policy, while an instruction to disable “M55.8” would disable only version 8 of that security policy.
B. Control Data Section
The security policy control data section is used to determine which component interprets the signature and what action will be taken, unless an explicit action is specified. The control data section contains the following elements (the names of the elements are descriptive of their function):
C. User Interface Description Section
The user interface description section is used in displaying the security policy to an administrator. The user interface description section contains the following elements (the names of the elements are descriptive of their function):
D. Scope Section
A security policy includes a global scope section and a dialect scope section. The global scope section is common to all security policies regardless of type. A security policy contains one global scope section and one dialect scope section. An element with an exclamation mark (!) immediately after the element name and before the colon separating it from its parameters; indicates that the element is locked.
The global scope section contains the following elements:
E. Type-Specific Sections
The dialect scope section, action section, and condition section are described per security policy type, since they are security policy dependent.
1. Packet-Based Security Policy
The dialect scope section for a packet-based security policy contains the following elements:
The action section for a packet-based security policy contains the following elements:
Packet conditions follow the C/C++ arithmetic/logical expression format. For example, “(ip.flag & IPFLAG_DF) && (ip.ttl>128)” is an expression that identifies the packets with TTL greater than 128 that is not to be fragmented. The condition section Qf a packet-based security policy contains the following elements:
A procedure for a packet-based security policy contains the following input fields:
A procedure for a packet-type security policy uses the following functions. These can be implemented either natively or through preprocessor. The “Translates into” column reflects the preprocessor implementation.
2. Stream-Based Security Policy
The dialect scope section for a stream-based security policy contains the following elements:
The stream action section for a stream security policy has the following elements:
A stream-based security policy uses the same language as a packet-based security policy. A procedure for a stream-based security policy uses the following input fields:
3. File-System-Based Security Policies
A file system may be organized into drives, folders, and files. Unlike a registry that for the most part follows the same structure on all computers, file systems are custom because users have a choice of where given software will be installed. Because of this, pinpointing a specific file or directory may be difficult in the enterprise context. In part, this problem is solved by using macros that are host-specific. For example, $SYSTEMROOT macro corresponds to the directory in which the operating system is installed.
The scope section of the file-system-based security policy contains the following elements:
The detect codes specify to check for certain changes to or conditions of the file system. The detect codes are defined in the following:
4. Registry-Based Security Policies
Registries may be organized much like a file system, with “keys” corresponding to directories and “values” corresponding to files. There are subtle differences, such as data items assigned to the keys and value types. The detection system can detect the following registry changes. Each registry entry or property is designated by a path, string of detection method codes, whether the scan can be forced (e.g., permissions temporarily changed to access a key), and the depth of the scan (single key or recursive).
The detect codes are defined in the following:
5. System-Counter-Based Security Policies
The system-counter-based securities policies are directed to monitoring counters maintained by the system. The counters are named integer values organized in a tree structure:
\PerformanceObject\CounterName\InstanceName
Generally, there are two types of counters: incrementing counters and up/down counters. For example, number of network packets received is an incrementing counter (it can only go up until it rolls around), and the number of active TCP connection is an up/down counter.
The detection system allows simple and ratio thresholds to be defined. A simple threshold is a comparison of a counter to a limit, and a ratio threshold is a comparison of the ratio of two counters to a limit. The counters are normalized per second. A simple threshold is defined as:
OVER(AVE(C,T),V)>=Limit
A ratio threshold is defined as
OVER(AVE(C1,T)/AVE(C2,T),V)>=Limit
where C is a counter, AVE is the average of counter C over elapsed time T, and OVER (X, V) is the time during which X was over threshold V.
The scope section of a system-counter-based security policy contains the following elements:
From the foregoing, it will be appreciated that specific embodiments of the detection system have been described herein for purposes of illustration, but that various modifications may be made without deviating from the spirit and scope of the invention. Accordingly, the invention is not limited except as by the appended claims.