US20130014265A1 - Universal patching machine - Google Patents
Universal patching machine Download PDFInfo
- Publication number
- US20130014265A1 US20130014265A1 US13/605,832 US201213605832A US2013014265A1 US 20130014265 A1 US20130014265 A1 US 20130014265A1 US 201213605832 A US201213605832 A US 201213605832A US 2013014265 A1 US2013014265 A1 US 2013014265A1
- Authority
- US
- United States
- Prior art keywords
- network
- data traffic
- universal
- patching machine
- packet controller
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
- 230000004048 modification Effects 0.000 claims abstract description 21
- 238000012986 modification Methods 0.000 claims abstract description 21
- 238000000034 method Methods 0.000 claims description 49
- 238000012545 processing Methods 0.000 claims description 46
- 230000008569 process Effects 0.000 claims description 29
- 238000012544 monitoring process Methods 0.000 claims 4
- 238000006243 chemical reaction Methods 0.000 abstract description 41
- 230000006870 function Effects 0.000 description 82
- 238000012360 testing method Methods 0.000 description 30
- 238000010586 diagram Methods 0.000 description 15
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 13
- 238000001514 detection method Methods 0.000 description 10
- 230000004044 response Effects 0.000 description 8
- 238000004458 analytical method Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 6
- 238000013459 approach Methods 0.000 description 4
- 239000000284 extract Substances 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000002265 prevention Effects 0.000 description 2
- 230000004224 protection Effects 0.000 description 2
- NPSLEEASXYBLOE-RVXWVMNCSA-N (2r,3r,4s,5s,6r)-2-[(2r,3s,4r,5r,6r)-6-[(2r,3s,4r,5r,6r)-6-[(2r,3s,4r,5r,6r)-4,5-dihydroxy-2-(hydroxymethyl)-6-(4-nitrophenoxy)oxan-3-yl]oxy-4,5-dihydroxy-2-(hydroxymethyl)oxan-3-yl]oxy-4,5-dihydroxy-2-(hydroxymethyl)oxan-3-yl]oxy-6-(hydroxymethyl)oxane-3 Chemical compound O[C@@H]1[C@@H](O)[C@H](O)[C@@H](CO)O[C@@H]1O[C@@H]1[C@@H](CO)O[C@H](O[C@@H]2[C@H](O[C@H](O[C@@H]3[C@H](O[C@H](OC=4C=CC(=CC=4)[N+]([O-])=O)[C@H](O)[C@H]3O)CO)[C@H](O)[C@H]2O)CO)[C@H](O)[C@H]1O NPSLEEASXYBLOE-RVXWVMNCSA-N 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1433—Vulnerability analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/82—Protecting input, output or interconnection devices
- G06F21/85—Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices
Definitions
- This invention relates to computer security, and more particularly, to applying patches to fix security vulnerabilities.
- CVE common vulnerabilities and exposures
- Patches also sometimes called “updates” or “bug fixes” are used to fix the portion of the software that gave rise to the security vulnerability. When appropriate patches are in place, the security risk associated with the vulnerability is reduced or eliminated.
- a universal patching machine that protects data networks from security vulnerabilities.
- the universal patching machine may be implemented on a network appliance located at the edge of a data network. In this location, the universal patching machine and network appliance can intercept data traffic flowing between a communications network such as the internet and the data network. The universal patching machine modifies the intercepted data traffic so that the vulnerabilities cannot be exploited by an attacker.
- the universal patching machine is formed from patch processors and a packet controller.
- the patch processors work at higher network layers such as network layers 6 and 7, whereas the packet controllers operate at lower network layers such as network layers 3-5.
- the patch processors and packet controller work together to efficiently detect vulnerability violations and modify data traffic where needed. Efficient processing is ensured by bypassing the higher-network-layer processing of the patch processors when the vulnerability violation detection and fixing operations of the patch processors are not needed. These bypassing operations may be performed using the packet controller.
- the patch processors are formed from network patches that address various different security vulnerabilities. As new vulnerabilities are discovered, the functionality of the universal patching machine is updated. The update process involves identifying the vulnerabilities that require attention and determining which network patches are needed to detect and fix these vulnerabilities. The universal patching machine is updated using these network patches.
- Each network patch includes state machine logic and one or more associated vulnerability violation detection and fixing functions. To ensure efficiency, duplication is avoided when combining the state machine logic of the network patches.
- the universal patching machine may have machine code libraries of helper functions. These helper functions may be used to merge the state machines of network patches into a unified state machine. During the formation of the unified state machine for the patch processors, the overall size of the state machine logic is reduced.
- the flow of data traffic through the universal patching machine is not disrupted.
- disruption to the data flow is avoided by handling old data traffic sessions with an old version of the universal patching machine processes and new data traffic sessions with a new version of the universal patching machine processes.
- data traffic disruption is avoided by selecting a point in time at which to switch over to the new network patches that does not affect the handling of the data traffic by the universal patching machine.
- FIG. 1A is a diagram showing the behavior of a patched computer system to an illustrative input.
- FIG. 1B is a diagram showing how a universal patching machine alters the input applied in FIG. 1A in accordance with the present invention.
- FIG. 2 is a flow chart of illustrative steps involved in using a universal patching machine to provide security for an unpatched computer system in accordance with the present invention.
- FIG. 3 is a diagram of an illustrative system in which a network appliance is used to implement a universal patching machine for protecting a computer network in accordance with the present invention.
- FIG. 4 is a diagram of an illustrative network appliance showing components that may be used to apply security patches in accordance with the present invention.
- FIG. 5 is a diagram showing how a universal patching machine may handle an illustrative vulnerability related to authentication evasion in accordance with the present invention.
- FIG. 6 is a diagram showing how a universal patching machine may handle an illustrative buffer overflow vulnerability in accordance with the present invention.
- FIG. 7 is a diagram showing how a universal patching machine may have a number of associated patch processors in accordance with the present invention.
- FIG. 8 is a diagram showing how network patches may each have an associated state machine and a function for detecting and fixing a vulnerability violation in accordance with the present invention.
- FIG. 9 is a diagram showing how a unified state machine and associated vulnerability processing functions may be constructed from multiple network patches in accordance with the present invention.
- FIG. 10 is a diagram showing how the universal state machine and associated functions are enlarged upon addition of a new network patch in accordance with the present invention.
- FIG. 11 is a diagram showing how the universal state machine and associated functions are reduced in size upon removal of an old network patch in accordance with the present invention.
- FIG. 12 is a flow chart of illustrative steps involved in using the universal patching machine to enhance security for a computer system in accordance with the present invention.
- FIG. 13 is a flow chart of illustrative steps involved in maintaining up-to-date network patches for the universal patching machine in accordance with the present invention.
- FIG. 14 is a diagram showing how the state machine logic of typical network patches overlaps in accordance with the present invention.
- the present invention relates to methods and apparatus for enhancing security in a computer system by detecting and fixing security vulnerabilities using patches.
- the invention may be used in the context of any suitable computer systems. Environments in which security vulnerabilities are handled by installing software directly on a host computer are said to be “host-based.” Environments in which security vulnerabilities are handled by installing software on a network appliance at the edge of a computer network (e.g., on a network appliance that serves as a gateway to a local area network), are said to be “network based.” In general, the invention applies to both host-based and network-based environments. For clarity, the discussion of the present invention sometimes focuses on network-based environments.
- One way to address security vulnerability violations is by installing patches provided by a software vendor (e.g., the vendor of the operating system and/or application software running on a particular machine or network).
- a software vendor e.g., the vendor of the operating system and/or application software running on a particular machine or network.
- vendor patches are installed on a computer system, the system may be said to be a vendor-patched computer system.
- An illustrative vendor-patched computer system 200 is shown in FIG. 1A .
- UPM universal patching machine
- a system 206 having a universal patching machine 202 and an unpatched computer system 204 is shown in FIG. 1B .
- Universal patching machine 202 may be implemented using any suitable hardware.
- universal patching machine 202 may be installed as part of a host-based security arrangement or may be implemented on a network appliance that is separate from the network 204 that is to be protected.
- an arbitrary input stimuli (inputX) to vendor-patched computer system 200 results in a corresponding output (output X) and a corresponding state (stateX).
- InputX represents arbitrary data traffic provided to the one or more computers of system 200 .
- OutputX represents the resulting output data produced by the computers of system 200 .
- inputX may include a series of web page requests for a web server in system 200 .
- OutputX may include the web pages served by system 200 in response.
- StateX represents the state of computer system 200 .
- the universal patching machine 202 of FIG. 1B is used to protect an unpatched computer system 204 .
- the universal patching machine 202 implements a conversion function F.
- the function F modifies data supplied to input 208 to address security issues in unpatched computer system 204 .
- the input data that has been modified by conversion function F is provided by the universal patching machine 202 at output 210 .
- the conversion functions produces modified data at output 210 .
- the modified data at output 210 is called inputX′, because output 210 serves as an input for unpatched computer system 204 .
- a conversion function is selected that attempts to make the universal patching machine 202 and unpatched computer system perform exactly the same as vendor-patched computer system 200 . An exact match in performance is not always possible, but a suitable conversion function will generally be able to approximate the performance of the vendor-patched computer system.
- the inputX to machine 202 is converted by the conversion function F into inputX′, as shown in FIG. 1B .
- the conversion function F produces an inputX′ that causes: 1. the output of system 204 to approximate outputX and the state of system 204 to exactly match stateX or 2. the output of system 204 to approximate outputX and the state of system 204 to approximate stateX.
- Any suitable metric may be used to evaluate how close the output of system 204 is to outputX and how close the state of system 204 is to stateX.
- a closeness function may be used to compute a closeness value that is then compared to a closeness threshold value. When a given output or state is close to outputX or stateX (e.g., below the threshold value), that output or state may be said to form an approximate match.
- the universal patching machine intercepts data flowing to one or more unpatched computers, and makes the behavior of the combined UPM and unpatched system the same as a patched system.
- FIG. 2 Illustrative steps involved in generating and using conversion function F to protect an unpatched computer system 204 are shown in FIG. 2 .
- a suitable conversion function F is generated.
- the generation operations of step 212 may be manual and/or automatic steps performed by a service provider associated with a universal patching machine service.
- a conversion function F is generated at step 214 such that the output and state of system 204 of FIG. 1B will be an exact match to the output (outputX) and state (stateX) of the vendor-patched system 200 of FIG. 1A .
- a conversion function F is generated that produces an approximate match between the output of unpatched system 204 and the patched outputX of system 200 (preferably a match that is as close as feasibly possible). It may or may not be possible in this situation to identify a conversion function F that simultaneously produces an exact match between the state of unpatched system 204 and stateX of system 200 .
- a conversion function F is generated such that, in response to input X at input 208 of universal patching machine 202 , the output of system 204 is an approximation to outputX and the state of system 204 is an exact match with stateX (step 216 of FIG. 2 ).
- step 216 a conversion function F is generated such that, in response to input X at input 208 of universal patching machine 202 , the output of system 204 is an approximation to outputX and the state of system 204 is an approximation to stateX (step 218 of FIG. 2 ). Any suitable metric may be used to gauge the effectiveness of the approximations of outputX and stateX that are achieved by the conversion function.
- the conversion function is used to change input data supplied to the universal patching machine such that a suitable corresponding input may be provided to the unpatched computer system 204 .
- the approach of FIG. 1B may be said to involve patching the traffic, rather than patching the system 204 .
- a suitable conversion function can be generated using the following approach:
- a conversion function such that the resulting state of the unpatched computer 204 is same as the state of patched system 200 when the same input is applied to both systems. If it is not possible (feasible) to identify such a conversion function, a conversion function is identified that will not alter the state of unpatched system 204 .
- a second operation modify the conversion function identified in the first operation such that the impact on the state of unpatched system 204 will be same as described in the first operation, but the distance (difference) between the output data of the unpatched computer and patched computer will be minimized.
- the distance (as calculated using any suitable metric) between these respective outputs may be computed after removing latency-related differences from the outputs.
- a first example illustrates how a conversion function F may be identified that produces exact matches in output and state for system 204 .
- This first example concerns the ASP.NET vulnerability.
- the ASP.Net vulnerability has revealed that an attacker can evade authentication by replacing the forward slash character “/” with a backward slash character “ ⁇ ” in a request directed to an IIS server in a computer system.
- a vendor-supplied patch replaces backward slash characters “ ⁇ ” with “/” characters in each URI (Uniform Resource Identifier) sent to the server.
- the conversion function will also change the “ ⁇ ” characters to “/” character in HTTP URIs directed to the IIS server.
- This conversion function will change every URI (inputX) such that the state and output of the unpatched system 204 will be same as the state and the output of the patched system 200 .
- a second example illustrates the generation of a conversion function for the universal patching machine that serves to produce an output for unpatched system 204 that is approximately the same as outputX of vendor-patched system 200 .
- This example concerns the CAN-2003-081 vulnerability.
- a multi-threaded race condition in the Windows RPC DCOM functionality with the MS03-039 patch installed allows remote attackers to cause a denial of service (crash or reboot) by causing two threads to process the same RPC request. This causes one thread to use memory after it has been freed.
- the vendor patch for this vulnerability fixes the race condition so that the RPC DCOM service does not make the memory corrupted.
- the universal patching machine conversion function for this vulnerability will rate control (rate limit) the inputs such that two threads are never processing the same RPC request. This conversion function will stop the RPC service from corrupting the memory.
- the resulting output of the un-patched computer system will have same values as that of a patched computer, but it will be delayed due to the rate limiting introduced by the conversion function.
- the output of system 204 is therefore a close approximation to outputX.
- a third example concerns the CAN-2003-0352 vulnerability
- This vulnerability is the RPC/DCOM vulnerability that was exploited by the Blaster worm. Only 32 bytes were allocated for a filename field in the RPC API and the API did not check the filename length before copying the data for the associated file.
- the vendor patch for this vulnerability increases the memory buffer to 256 bytes and checks whether the input field is more than 256. If yes, the patched system will reject the request. If the request has a filename field less than 256 bytes, the request will succeed. If the length is more than 256 bytes, the request will be rejected.
- step 218 it is not possible (in this example) to find a conversion function that will guarantee that the state of the unpatched computer will be same as the state of vendor-patched computer.
- a suitable conversion function for this vulnerability will truncate the filename field to 32 bytes.
- the result of this conversion function will be that the RPC service will reject a request if its length is more than 32 bytes, but will produce no change in state for the RPC service for requests where filename is more 32 bytes.
- Both the state and output of the system 204 in this third example are therefore approximately (but not exactly) the same as the outputX and stateX of system 200 in response to an identical inputX.
- machine 202 For the universal patching machine 202 to be able to examine all of the inputs destined to an application or operating system, machine 202 should generally be deployed as close as possible to the unpatched system 204 .
- a host-based universal patching machine 202 will have full visibility into all of the inputs, but such a universal patching machine will also exhibit the types of limitations generally seen in host-based intrusion prevention systems such as difficulties associated with product management and deployment.
- NUPM Network-based UPM
- FIG. 3 An illustrative network-based UPM system 10 in accordance with the present invention is shown in FIG. 3 .
- a computer network 12 is protected from security vulnerabilities by a network-based universal patching machine 20 implemented on a network appliance 18 .
- an entity at a computer outside of network 12 such as one of computers 24 desires to communicate with an entity at a computer 14 inside network 12 over a communications network 22 .
- Network appliance 18 is shown as being separate from network 12 in FIG. 3 , but because network appliance 18 may be operated and installed by a system administrator associated with network 12 , network appliance 18 is sometimes referred to as being part of network 12 or is referred to as being located at the edge of network 12 .
- Network appliance 18 may be based on any suitable computer hardware.
- a typical network appliance 18 has a CPU, memory, hard disk storage, and communications ports.
- the communications ports may be used to receive and transmit incoming and outgoing data traffic. Communications ports may also be used to support communications between appliance 18 and a backup appliance to provide redundancy in the event of an equipment failure.
- the processor, memory, and storage in network appliance 18 may be used to run software for implementing the functions of universal patching machine 20 .
- Software may be provided to appliance 18 using any suitable arrangement. For example, some software may be provided to appliance 18 when appliance 18 is installed. Other software 18 may be downloaded from a service provider. As an example, a service provider at a computer 24 may deploy network appliance 18 at the premises of a customer's network 12 .
- the service provider may contact appliance 18 to set up and/or update the functionality of appliance 18 with a current set of network-based patches as needed. If desired, contact may be initiated by the network appliance.
- some or all of the functionality of the universal processing machine may be implemented using dedicated hardware.
- universal processing machine functions may be implemented using custom hardware components such as custom boards, custom field-programmable gate arrays (FPGAs), and application-specific integrated circuits (ASICs).
- FPGAs field-programmable gate arrays
- ASICs application-specific integrated circuits
- we are planning to implement a packet controller may be implemented using custom hardware.
- Computers 14 and 24 may be any suitable computing equipment such as mainframe computers, workstations, portable and desktop computers, handheld computers, etc.
- Communications network 22 may be any suitable network such as one or more local area networks, the internet, etc.
- the computers of network 12 may be interconnected by wired and wireless communications paths 16 .
- Typical network communications paths include Ethernet cables, fiber-optic paths, wireless network nodes, etc. Any suitable network topology and network equipment may be used to interconnect the computers 14 in network 12 .
- network 12 may be a local area network, a metropolitan area network, a wide area network, or any other suitable network.
- network 12 will be associated with an organization that desires to protect its assets through proper deployment of security patches.
- Network appliance 18 intercepts data traffic sent to and from network 12 .
- the data traffic to and from network 12 may be any suitable communications traffic.
- the data traffic may be web traffic, email traffic, or any other suitable data traffic.
- a user at a computer 24 requests a web page from a web server 14 in network 12 .
- the user's internet browser or other suitable client software generates an http request and transmits this request to an appropriate web server 14 at network 12 .
- the web server 14 at network 12 retrieves the requested page and provides it to the user.
- the incoming traffic to network 12 includes the http request from the user.
- the outgoing traffic from network 12 includes the web page material that is provided to the user in response to the request.
- Both incoming and outgoing data traffic may be intercepted by the network appliance 18 . If the network appliance 18 detects a security vulnerability violation associated with the data traffic, the data traffic may be altered to overcome the vulnerability. In this way, the network appliance 18 may be said to patch or fix the data traffic, rather than directly patching the computers in network 12 by installing vendor patches. This method can be used to provide network patch for all remote vulnerabilities. Because the arrangement of FIG. 3 separates the patching operations of network appliance 18 from the various hardware and software platforms associated with the computing equipment 14 , a single network appliance 18 can be used to provide security for multiple computers 14 . This greatly reduces the complexity associated with providing security for the computers 14 .
- FIG. 4 shows an illustrative architecture that may be used to implement the network-based universal patching machine 20 .
- the arrangement shown in FIG. 4 is merely illustrative. Any suitable arrangement may be used to provide the functions of universal patching machine 20 if desired.
- the universal patching machine 20 may have a packet controller 26 and patch processors 28 .
- Packet controller 26 examines data packets in the traffic flowing through patching machine 20 .
- Packet controller 26 outputs all packets from universal patching machine 20 that are believed to be free of vulnerability issues.
- Packet controller 26 redirects packets that are associated with possible vulnerability violations to patch processors 28 .
- Patch processors 28 work with packet controller 26 to detect and fix vulnerability violations.
- Packet controller configuration data 30 and patch processor configuration data 32 may be used to support the operations of packet controller 26 and patch processors 28 .
- Configuration data 30 and 32 may include settings and executable code.
- Patching machine 20 intercepts inbound and outbound traffic associated with network 12 ( FIG. 3 ). As data passes through patching machine 20 , patching machine 20 detects and fixes security vulnerabilities. If, for example, patching machine 20 determines that incoming data for a web server 14 in network 12 includes an http request and if there is a security vulnerability related to http requests, the patching machine 20 can extract the request from the data being sent to the web server and can alter the request so as to overcome the vulnerability. By patching the traffic in this way, it is not necessary to block potentially legitimate http requests.
- Network communications functions are often described in the context of a layered network model.
- networking protocols are often described with reference to the International Standard Organization's Open System Interconnect (ISO/OSI) network layer model.
- This model has seven network layers: physical (layer 1), data link (layer 2), network (layer 3), transport (layer 4), session (layer 5), presentation (layer 6), and application (layer 7).
- the physical layer relates to the physical structure of network connections.
- the data link layer provides context to the signals at the physical layer. In the data link layer, bits are assigned physical addresses and are formatted into frames. Functions such as error checking may be implemented at the data link layer.
- data is packaged into datagrams.
- the network layer also handles the routing of datagrams from one network to another.
- the transport layer handles operations involved in setting up connections between machines.
- the transport layer supports flow control and multiplexing functions.
- the session layer manages communications sessions using handshaking and other mechanisms.
- the presentation layer handles operations such as data encryption and compression.
- the application layer provides services
- This type of processing architecture is more efficient than an architecture in which data is processed only at high levels in the network layer stack.
- packet controller 26 handles the lower network layers (e.g., layers 2-5).
- Patch processors 28 process traffic at higher layers (e.g., layers 5-7).
- the packet controller 26 and patch processors 28 work together by issuing commands.
- the patch processors detect a vulnerability that needs to be addressed.
- the patch processors then issue a modification command to the packet controller that directs the packet controller to perform an appropriate data modification operation.
- the modification command may, for example, direct the packet controller 26 to change, remove, or add a data packet.
- the modified data is not susceptible to the vulnerability and may therefore be considered to be “fixed” or “patched.” After the data traffic has been fixed by the patch processors 28 and packet controller 26 , it may be forwarded to its intended destination.
- Packet controller 26 preferably receives and sends data in compliance with all layer 2-4 communications protocols.
- packet controller 26 may support Ethernet at layer 2, Internet Protocol (IP) at layer 3, and Transport Control Protocol (TCP) at layer 4.
- IP Internet Protocol
- TCP Transport Control Protocol
- Patches processors 28 which handle traffic at layers 5-7, use network patches to implement vulnerability detection and fixing functions.
- the network patches are used to form a unified state machine that implements procedures for universal patching machine 20 .
- Network patches may be added and removed as desired to modify the unified state machine. For example, a new patch may be distributed to network appliance 18 from a service provider over communications network 22 or a service provider may send commands to network appliance 18 that direct the network appliance 18 to remove an old patch from active use.
- a system administrator, service provider, or other suitable entity may update the patches for the universal patching machine 20 on network appliance 18 without rebooting or otherwise halting the operation of the appliance 18 .
- Data traffic flows continuously through appliance 18 , even as new patches are added and old patches are removed.
- Patches are added by modifying the patch processor capabilities of universal patching machine 20 , without changing the operating system or application programs on the computers 14 in network 12 . It is therefore not necessary to attempt to test the operation of new patches for all potential configurations of computers 14 .
- the arrangement of FIG. 3 therefore avoids the testing and downtime problems associated with conventional patching procedures.
- Patch processor configuration data 32 contains software and data for supporting the operation of patch processors 28 .
- Patch processor configuration data 32 may, for example, contain machine code libraries (e.g., DLL's) for the network patches used by patch processors 28 . The machine code from these libraries can be assembled to form the unified state machine for the patch processors 28 .
- Patch processor configuration data 32 may include system parameters that a service provider may adjust remotely over network 22 . System parameter adjustments may be used to optimize the performance of the universal patching machine 20 .
- Illustrative system parameters include system parameters for controlling memory usage in network appliance 18 , parameters for setting the permitted number of concurrent processing threads supported by network appliance 18 , etc.
- Packet controller configuration data 30 includes data that informs the packet controller 26 how to implement access policies.
- the access policies may specify whether the packet controller 26 should output data from network appliance 18 without processing or should send data to patch processors 28 .
- the access policies may use any suitable criteria. As an example, access policy determinations of whether to forward data to an output or to process data for vulnerabilities may be made based on IP address and port number information.
- Packet controller configuration data 30 also preferably includes data that informs the packet controller whether or not the packet controller should forward data through network appliance 18 or should divert data to patch processor 28 based on whether the traffic is client traffic or server traffic.
- packet controller configuration data 30 may include block-size-to-skip data that indicates the size of blocks of data that the packet controller 26 should output from the network appliance without inspection. This setting may be adjusted in real time by the patch processors 28 . As an example, if the patch processors 28 detect that the data traffic being handled by the network appliance 18 contains an email message with a large attachment and if the network appliance 18 determines that the attachment is not associated with any potential vulnerabilities, the patch processors 28 can adjust the block-size-to-skip data in the packet controller configuration data 30 appropriately. This adjustment will then direct the packet controller 26 to forward the email attachment through network appliance 18 without inspecting its contents. Throughput efficiency is enhanced by directing packet controller 26 to pass data that does not correspond to a security vulnerability through network appliance 18 without patch processing.
- FIGS. 5 and 6 The operation of universal patching machine 20 in handling two illustrative vulnerabilities is shown in FIGS. 5 and 6 .
- FIG. 5 shows how the universal patching machine 20 processes an authentication evasion vulnerability called the ASP.Net vulnerability.
- FIG. 6 shows how the universal patching machine 20 processes a buffer overflow vulnerability called the CAN-2003-0352 vulnerability.
- Network appliance 18 and universal patching machine 20 preferably handle two-way data traffic.
- network appliance 18 and universal patching machine 20 receive the outbound data traffic at an input to the network appliance 18 that is connected to network 12 .
- the data is either forwarded in unmodified form to an output of network appliance 18 that is connected to communications network 22 ( FIG. 3 ) or is provided to this output after processing by patch processors 28 ( FIG. 4 ) to remove vulnerability violations.
- the network appliance 18 and universal patching machine 20 receive the inbound data traffic at an input to network appliance 18 that is connected to network 22 .
- the data from the input is either forwarded in unmodified form to an output of network appliance 18 that is connected to network 12 or is provided to this output after processing by patch processors 28 ( FIG. 4 ).
- FIGS. 5 and 6 data that is being received at the input of the network appliance 18 and universal patching machine 20 is shown as entering the diagram from the left. Data that is being provided to the output of the network appliance and universal patching machine 20 is shown as exiting the diagram to the right.
- data flow lines are superimposed on a representation of the seven network layers (1-7) of the ISO/OSI network layer model.
- FIG. 5 relates to a vulnerability in which an attacker can send specially crafted requests to a server to view secured content without providing proper credentials.
- Analysis of this vulnerability has revealed that the attacker can evade authentication by replacing the forward slash character “/” with a backward slash character “ ⁇ ” in the server request.
- the universal patching machine 20 handles this vulnerability by replacing occurrences of any backslash character or its Unicode equivalent with a forward slash character.
- the universal patching machine 20 receives data traffic flowing between network 22 and network 12 .
- Packet controller 26 examines the data traffic at layer 3, as shown by line 34 and test point 36 .
- network 12 of FIG. 3 contains an Apache web server 14 and a IIS web server 14 without vendor patches. It is also assumed that Apache traffic is free of vulnerabilities (in this example). The ASP.Net vulnerability only applies to IIS web server traffic.
- the packet controller 26 determines whether the traffic is Apache traffic or is associated with the IIS server. In making this determination, the packet controller 26 uses the access policy information (e.g., an access policy list) in packet controller configuration data 30 ( FIG. 4 ).
- the access policy information e.g., an access policy list
- the packet controller 26 examines the headers of the packets in the data traffic to determine their associated IP address and port number. Based on the IP address and port information, the packet controller 26 determines whether the traffic is associated with the Apache server in network 12 or the IIS server in network 12 . If the traffic is Apache traffic, it can be concluded (in this example) that there are no vulnerabilities associated with the traffic. The traffic may therefore be forwarded directly to the output of the network appliance 18 without modification, as shown by line 39 . This allows higher-layer processing of this data traffic to be avoided, which increases processing efficiency significantly.
- the packet controller 26 can continue to analyze the data traffic at network layer 4 (line 38 ) by performing additional testing at test point 40 .
- the packet controller 26 can determine whether the traffic that has been received at the network appliance input is server traffic originating at the IIS server 14 in network 12 or is client traffic originating at one of computers 24 .
- the vulnerability is related to the server requests made by the client to the IIS server, so traffic from the server can be forwarded directly to the output of the network appliance and patching machine, as shown by line 42 .
- the packet controller 26 can pass the data traffic to the patch processors 28 ( FIG. 4 ) for analysis at network layer 5, as indicated by line 44 .
- the data traffic that is passed to the patch processors 28 for processing at layer 5 is analyzed by the patch processors to determine whether or not it should be forwarded to the patching machine output at layer 5 without further processing. In this example, it is appropriate to forward the data traffic to the patching machine output if it corresponds to chunk-encoded data, as indicated by line 48 . If the data traffic is not chunk-encoded data, the patch processors 28 perform further analysis at layers 6 and 7, as indicated by line 50 and box 52 .
- blocks of data traffic may be forwarded to the patching machine output at layer 5 without further processing at network layers 6 and 7 by the patch processors 28 whenever it is determined that data traffic can be excluded from layer 6 and 7 processing because that data does not contain vulnerability violations.
- the patch processors 28 may identify which blocks of data are to be forwarded without layer 6 and 7 processing using the results of a previous data analysis or by performing real-time data traffic analysis on header information or other data stream contents.
- the patch processors 28 can specify which blocks to forward using any suitable technique.
- the patch processors can specify a block by its start location and block size (e.g., the next N bytes of data starting at a particular location are to be forwarded without layer 6 or 7 processing).
- the patch processors can specify a block by its block ending pattern—data traffic in the block is forwarded without layer 6 or 7 processing until the patch processors locate the specified ending pattern in the data traffic.
- the patch processors 28 analyze the data traffic during layer 6 and 7 processing operations to attempt to detect violations of the ASP.Net vulnerability.
- processors 28 attempt to locate a backslash in a server request for the IIS server 14 in network 12 . If a violation of the ASP.Net vulnerability is detected (i.e., if a backslash is located in the request data), the patch processors issue a corresponding modification command for the packet controller 26 .
- the packet controller 26 receives the modification command from the patch processors 28 , performs the requested modification operation on the data traffic at layer 5 to remove the vulnerability violation and thereby fix the traffic, and provides the corresponding modified (fixed) traffic to the patching machine output.
- the modification request specifies that the packet controller should replace the backslash in the IIS server request with a forward slash. Fixing the data traffic in this way before it reaches network 12 eliminates the security risk associated with the ASP.Net authentication evasion vulnerability, but does not block legitimate server requests, many of which may include backward slashes.
- the replacement of one character with another in response to a modification command is merely one illustrative example. In general, commands may be used to change one byte of data for another, may be used to delete data, may be used to insert data, etc.
- FIG. 6 concerns the CAN-2003-0352 buffer overflow vulnerability.
- This vulnerability is an RPC/DCOM vulnerability that was exploited by the so-called Blaster worm.
- RPC/DCOM is a service in the Microsoft Windows Operating System that is used to support remote procedure calls.
- An attacker who exploits the CAN-2003-0352 vulnerability may be able to run code on a computer without proper authorization. A successful attacker would therefore be able install software or modify data on the attacked computer. Exploitation of the vulnerability requires that the attacker form a DCOM object activation request to the computer that contains a filename field greater than 16 characters in length.
- the CAN-2003-0352 vulnerability arose because only 32 bytes were allocated for the filename field in the RPC API and no checks were made regarding the length of the filename field before copying data. It was assumed that a machine name would never be more than 16 characters. However, it is legal to use a DNS-style name that is longer than 16 characters, such as ⁇ server.subdomain.domain.com ⁇ share ⁇ etc. If a long machine name (S2 name parameter) such as this is used by a user, the universal patching machine 20 fixes the vulnerability violation by truncating the S2 name parameter to make it 32 bytes long. The vulnerability violation is fixed, so a user's sessions will not be dropped without the user knowing the cause of the problem, as would be the case if all uses of long machine names were blocked.
- S2 name parameter long machine name
- the operations taken by the universal patching machine 20 to detect and fix violations of the CAN-2003-0352 vulnerability are shown in FIG. 6 .
- the universal patching machine 20 receives inbound data traffic from network 22 .
- Packet controller 26 examines the incoming data traffic at layer 3, as shown by line 60 and test point 62 .
- the CAN-2003-0352 vulnerability is the only vulnerability in existence.
- the packet controller 26 determines whether the traffic is destined for a computer 14 in network 12 that has already been patched with a vendor patch to prevent exploitation of the CAN-2003-0352 vulnerability.
- the packet controller 26 uses information (e.g., an access policy list) in packet controller configuration data 30 ( FIG. 4 ) in making this determination.
- the packet controller 26 can examine the headers of the packets in the data traffic to determine their associated IP address and port number.
- the IP address and port information and other information in configuration data 30 indicates to the packet controller 26 whether the traffic is destined for a computer 14 that has been patched.
- the computer 14 is not susceptible to vulnerabilities, so it is not necessary to process the traffic further in universal patching machine 20 to remove vulnerability violations. Rather, the traffic can be forwarded directly to the output of the network appliance 18 without modification, as shown by line 64 . This improves processing efficiency in universal patching machine 20 , because higher-layer processing of the data traffic is bypassed. It also avoids double patching.
- the packet controller 26 determines that the traffic is for a computer 14 that has not been patched to prevent exploitation of the CAN-2003-0352 vulnerability
- the packet controller 26 analyzes the data traffic at network layer 4 (line 66 ) by performing additional testing at test point 68 .
- the CAN-2003-0352 vulnerability affects server-bound traffic from a client such as one of computers 24 ( FIG. 3 ), but does not affect traffic bound for a client computer 14 in network 12 .
- the packet controller 26 determines whether the traffic that has been received at the network appliance input is traffic from a server or is traffic from a client. Traffic from a server in network 12 is forwarded directly to the output of the network appliance and patching machine, as shown by line 70 .
- the packet controller 26 determines at test point 68 that the traffic is from a client computer 24 in network 12 , the packet controller 26 can pass the data traffic to the patch processors 28 ( FIG. 4 ) for analysis at network layers 6 and 7, as indicated by line 72 .
- the patch processors 28 analyze the data traffic to attempt to detect violations of the CAN-2003-0352 vulnerability. In particular, processors 28 attempt to detect an S2 name parameter in the data with a length greater than 32 bytes.
- the patch processors 28 issue a corresponding modification command for the packet controller 26 .
- the modification command directs the packet controller 26 to truncate the S2 name parameter in the data traffic so that the S2 name parameter is 32 bytes long.
- the detection of the vulnerability violation and issuance of the modification command for the packet controller 26 is illustrated in FIG. 6 by box 74 and line 76 .
- the packet controller 26 performs the requested data modification (truncation) at layer 5 to remove the vulnerability violation from the data traffic.
- the fixed data traffic is then provided at the patching machine output, as shown by line 80 . Because excess name parameter lengths are removed from the data traffic by the universal patching machine 20 , it is not necessary to block all traffic containing excessively long name parameters.
- the use of universal patching machine 20 to handle the vulnerability violation is superior to solutions based on blocking traffic, because patching machine 20 does not block legitimate traffic. Because traffic is not blocked by universal patching machine 20 , attackers attempting to exploit vulnerability violations in network 12 will not know that a security system is in place, but rather will conclude that system 12 has been patched for the vulnerabilities they are trying to exploit. After attempting to exploit a number of different vulnerabilities, they will become frustrated and move to a new target. In this type of situation, attackers will have left a large amount of forensic information behind, so that their activities may be tracked. With traffic blocking systems, in contrast, an attacker immediately becomes aware that an intrusion prevention system is in place and will use evasive techniques to overcome its protections.
- the universal patching machine 20 fixes vulnerability violations using network patches (NPs) in patch processors 28 .
- Network patches are conversion functions that are applied to network traffic destined to an unpatched operating system or application in network 12 .
- the network patches modify the traffic so that the response of the unpatched services on the equipment 14 in network 12 behave exactly as if those services had been patched using a conventional vendor patch.
- the network patches in patch processors 28 therefore provide universal patching without requiring the installation of vendor patches in a potentially vast number of diverse equipment configurations in network 12 .
- the network patches in patch processors 28 also fix vulnerabilities for which no vendor patches are available.
- the equipment in network 12 that needs the protection provided by network patching is profiled. For each item of equipment 14 , information is gathered on which services (operating systems and applications) are to be protected, which port numbers the services are running on, which patches fix remote vulnerabilities but have not yet been applied to the services, and which remote vulnerabilities are not patched. This information is used by the universal patching machine 20 .
- the patch processors 28 of universal patching machine 20 are each made up of a number of network patches (NPs) 82 .
- NPs network patches
- the N network patches 82 in patch processor 1 are labeled NP 11 through NP 1N .
- the T network patches in patch processor M are labeled NP M1 through NP MT .
- a separate patch processor 28 is used for each service to be protected.
- one patch processor 28 is used to protect the Apache application
- one patch processor 28 is used to protect the IIS machine
- one patch processor 28 is used to protect the Windows XP computer
- one patch processor 28 is used to protect the computer on which Windows 2000 has been installed.
- one patch processor is used to secure an application or a service with the similar patch level running on multiple machines in the network 12 .
- machines running 1.x version of Apache server will use a different patch processor 28 than machines running the 2.x version of Apache server.
- each network patch 82 includes a state machine logic portion 84 and a vulnerability detection and fixing function portion 86 . Portions 84 and 86 are provided as separate machine code files in patch processor configuration data 32 ( FIG. 4 ).
- the state machine logic 84 of the network patches implements a state machine that is used to parse the data traffic for processing by functions 86 . Functions 86 detect vulnerability violations in the data traffic and fix them.
- the state machines 84 of the network patches 82 there are significant commonalities among the state machines 84 of the network patches 82 .
- the state machines 84 of the different network patches 82 are merged to form a unified state machine.
- the process by which multiple individual network patches 82 are merged into a unified state machine 84 with multiple associated functions 86 is shown in FIG. 9 .
- An example of an operation that may be shared among processors 28 is an extraction operation used when extracting a parameter from the data traffic. This type of operation is used by many patch processors 28 as they parse the data traffic. It therefore is helpful to share as much of the extraction functionality as possible between patch processors 28 .
- the merging process of FIG. 9 is performed using helper functions (sometimes also called merging functions) that are contained in the patch configuration data 32 whenever a new network patch is loaded for use in unified patch processor 20 or an old network patch is removed.
- the state machines 84 of the various network patches 82 are merged to form a single state machine. Duplicate states are avoided and the overall size of the state machine logic is compressed to minimize the total number of states. Significant performance enhancements are obtained through the merging process, because duplication of state machine processing logic is avoided.
- the helper functions used to construct the unified state machine logic and functions for the universal patching machine 20 can run without interrupting the operation of the patch processors 28 and packet controller 26 in the universal patching machine 20 .
- This allows network patches to be added for newly discovered vulnerabilities without disrupting the operations of patching machine 20 and network appliance 18 . It also allows network patches for vulnerabilities that have been patched using vendor patches to be removed.
- the addition of new network patches and the removal of old network patches are operations that can both be performed without causing any disruption in the flow of data traffic or the vulnerability detection and fixing operations of universal patching machine 20 when processing the data traffic.
- FIG. 10 illustrates how the unified state machine 84 grows when a new network patch is added.
- the state machine logic 84 of the merged network patches contains states that are common with the existing state machine of the patch processor. Only the states that are unique to the new network patch 82 are added to the unified state machine.
- new network patch NP NEW contains a new vulnerability detection and fixing function F NEW 88
- the merged network patches shown on the right side of FIG. 10 include both additional state machine logic 88 and a new associated detection and fixing function 90 .
- There is no commonality between the detecting and fixing functions used by the patch processors 28 as each detecting and fixing function detects and fixes a specific vulnerability violation.
- FIG. 11 shows how the state machine logic 84 of the patch processors 28 shrinks when a network patch is removed.
- network patch NP K has been removed from the unified state machine 84 , resulting in state machine logic 84 from which state machine logic portion 92 has been removed.
- the vulnerability detection and fixing function associated with network patch NP K is function F K .
- function F K is removed from the patch processors.
- the process of removing network patch NP K from the patch processors that is illustrated in FIG. 11 is performed by the helper functions of patch processor configuration data 32 ( FIG. 4 ) without disrupting the operation of the patch processors 28 or packet controller 26 .
- Any suitable technique may be used to ensure that the real time processing of data traffic is not affected by the addition or removal of network patches.
- the helper functions make a copy of the existing state machine logic.
- the existing state machine logic is used for handling existing sessions in the data traffic.
- the changes of FIG. 10 and FIG. 11 are made by the helper functions.
- the modified version of the new copy of the unified state machine logic is used to handle new communications sessions in the data traffic. Because existing sessions are handled by the unmodified state machine while the new sessions are handled by the modified state machine, no communications traffic is disrupted by the process of modifying the unified state machine.
- helper functions that are used to perform the unified state machine modification select a particular point in time at which to make the modification. By selecting a point in time at which the data traffic is not affected by the modification, the modification is made without disrupting the operations of the universal patching machine 20 .
- FIG. 12 A flow chart of illustrative steps involved in setting up and using the universal patching machine 20 to detect and fix vulnerability violations is shown in FIG. 12 .
- the helper functions of patch processor configuration data 32 ( FIG. 4 ) are used to form the unified state machine 20 , as described in connection with FIGS. 7-11 .
- the patch processors 28 and packet controller 26 receive data traffic at an input to network appliance 18 .
- the data traffic that is received may be inbound traffic that is destined to equipment 14 in network 12 or may be outbound traffic from equipment 14 .
- the packet controller 26 and patch processors 28 are used to detect and fix vulnerability violations in the data traffic.
- the state machine logic 84 extracts the states of the layer 6 and 7 protocols associated with the traffic, extracts contexts from the traffic, and extracts necessary “information elements” (e.g., elements such as hostname and filename elements in the context of an http request, etc.).
- the data traffic is output at step 100 .
- the packet controller 26 and patch processors fix detected vulnerability violations, so that the outgoing traffic from the universal patching machine 20 does not contain vulnerability violations.
- the universal patching machine 20 is implemented using a network appliance 18 that is located between network 22 and the network 12 being protected. When a new network patch is injected into the universal patching machine 20 , the services being protected are not disrupted.
- FIG. 13 shows illustrative steps involved in setting up and maintaining the patch processors 28 in an environment in which network patch requirements for machine 20 evolve as a function of time.
- step 102 vulnerabilities that need to be addressed by the universal patching machine 20 are identified.
- the vulnerability identification process of step 102 may involve examining publicly available lists of common vulnerabilities and exposures (CVE lists), consulting vendors for lists of vendor-announced patches, determining whether hackers or other third-parties in the software community have publicized vulnerabilities, or using other suitable resources.
- the process of step 102 may be performed automatically (e.g., using software operated by the service associated with the universal patching machine software), may be performed manually (e.g., using personnel at the service), or may be performed using a combination of manual and automatic procedures.
- network patches for the vulnerabilities may be created at step 102 .
- the network patch creation process typically involves at least some manual coding operations that are performed based on an analysis of the vulnerability and appropriate solutions to overcome the vulnerability.
- the network patches that are created may be stored on a server associated with a network patching service provider and may be distributed to customers at various networks 12 over communications network 22 .
- step 104 it is determined which of the network patches are needed to detect and fix the vulnerabilities in a given network 12 .
- manual and or automatic software-based services may be used to gather network status information for the given network 12 .
- the software-based services used at step 104 may include a discovery application that scans the equipment of the given network 12 to determine which vendor patches have been installed and which network patches have been installed.
- the network status information gathered at step 104 may include information on which vulnerabilities need to be addressed. If desired, a system administrator at the network 12 may be provided with an opportunity to manually intervene in the processes of deciding which vulnerabilities need to be addressed. The system administrator may, as an example, decide which network patches to install by clicking on appropriate on-screen options provided by the network patching software. The network patching software used to gather this information may be implemented using network appliance 18 or any other suitable platform.
- the patching system software determines which network patches are to be included in patching machine 20 and which are to be removed from patching machine 20 (e.g., because they are duplicative of installed vendor patches or because the system administrator does not desire network patches for particular vulnerabilities).
- the helper functions of patch processor configuration data 32 may be used to create the universal patching machine 20 (step 106 ).
- the helper functions may merge the state machine logic 84 of the appropriate network patches to form a unified state machine, as described in connection with FIGS. 7-11 .
- the state machines 84 and associated functions 86 for the selected network patches are merged while duplicative processing capabilities are eliminated.
- the selected network patches are applied by the universal patching machine 20 without disrupting the data traffic through network appliance 18 .
- Any suitable technique may be used to ensure that data traffic is not disrupted during the network patch update process.
- the new set of network patches may be applied by using a new state machine to handle new data traffic sessions while an old version of the state machine is used to handle existing data traffic sessions.
- the time at which to apply the new set of network patches may be chosen so that the changeover between the old set of network patches and the new set of network patches does not affect existing traffic.
- the process of FIG. 13 may be performed continuously, so that the capabilities of the universal patching machine remain up to date as new vulnerabilities are identified.
- the use of universal patching machine 20 avoids the problems associated with testing and deploying vendor patches directly on equipment 14 .
- the universal patching machine 20 does not interact with the operating systems and applications running on network 12 .
- the network patches of machine 20 only affect the state machine of the patch processors 28 . Because there are a relatively small number of possible state machine configurations, comprehensive testing of the universal patching machine 20 is possible. Comprehensive testing of vendor patches is generally not practical, because the number of different possible combinations of operating systems and applications that exist on the various pieces of equipment 14 in networks such as network 12 is too large.
- FIG. 14 illustrates how comprehensive testing of the universal patching machine 20 is possible.
- Each network patch 82 contains a number of state machines 84 .
- the universal patching machine 20 is based on a merged state machine (see FIG. 9 ). duplicate processing is avoided.
- the patch processors only execute the state machine logic contained in the merged state machine. Because the state machine logic is compressed (merged), it may achieve results efficiently.
- the packet controller 26 can forward certain packets at low layers in the network protocol stack as described in connection with FIGS. 5 and 6 . In a typical deployment, more than 90% of traffic need not be sent to patch processors 28 and can be forwarded to the patching machine output by the packet controller 26 at either the IP layer or TCP layer.
- the amount of traffic that is processed depends on the number of network patches that are needed. As the number of patch processors and network patches decreases, the patch configuration data 32 ( FIG. 4 ) reflects the reduced amount of patching to be performed. As a result, the packet controller 26 will forward a relatively larger fraction of traffic to the patching machine output at low network layers without sending it to the patch processors 28 for vulnerability violation detection and fixing operations. This is advantageous because it allows the complexity of the patching machine 20 to be reduced.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Stored Programmes (AREA)
Abstract
A universal patching machine is used to provide security for a computer system. A conversion function is generated for the patching machine that modifies input data to the computer system so that the computer system has an output and state that match the output and state that would be produced by a vendor-patched version of the computer system. The universal patching machine detects security vulnerabilities in intercepted data traffic. If a vulnerability violation is detected, the universal patching machine modifies the data traffic to remove the violation. Fixing the data traffic in this way ensures that the vulnerability cannot be exploited in an attack against the data network. The universal patching machine is formed from patch processors and a packet controller. The patch processors are formed from network patches. In operation, the patch processors detect vulnerabilities and issue modification commands that direct the packet controller to fix the data traffic.
Description
- This application is a division of patent application Ser. No. 11/029,098, filed Jan. 3, 2005, which is hereby incorporated by reference herein in its entirety.
- This invention relates to computer security, and more particularly, to applying patches to fix security vulnerabilities.
- Security vulnerabilities in deployed software are discovered with regularity. Both operating systems and application software are affected. As vulnerabilities are identified by the computer security community, they are often included in a list of common vulnerabilities and exposures (CVE). The CVE list attempts to standardize the names of known vulnerabilities.
- Computers in which vulnerabilities are not addressed become exposed to security risks. Often these risks are intolerable, so it becomes necessary to install security patches. Patches (also sometimes called “updates” or “bug fixes”) are used to fix the portion of the software that gave rise to the security vulnerability. When appropriate patches are in place, the security risk associated with the vulnerability is reduced or eliminated.
- In modern computer system environments, patch management can be exceedingly complex. In a typical business enterprise, there are often hundreds or thousands of networked computers, each with a potentially different software configuration. As a result, it is practically impossible to test new patches exhaustively. System administrators are reluctant to install patches without testing, particularly on critical machines, so in practice many patches are not installed or are not installed in a timely fashion. This leaves many computer systems at risk of attack.
- It is therefore an object of the present invention to provide improved techniques for applying security patches to computer systems.
- A universal patching machine is provided that protects data networks from security vulnerabilities. The universal patching machine may be implemented on a network appliance located at the edge of a data network. In this location, the universal patching machine and network appliance can intercept data traffic flowing between a communications network such as the internet and the data network. The universal patching machine modifies the intercepted data traffic so that the vulnerabilities cannot be exploited by an attacker.
- The universal patching machine is formed from patch processors and a packet controller. The patch processors work at higher network layers such as
network layers - The patch processors and packet controller work together to efficiently detect vulnerability violations and modify data traffic where needed. Efficient processing is ensured by bypassing the higher-network-layer processing of the patch processors when the vulnerability violation detection and fixing operations of the patch processors are not needed. These bypassing operations may be performed using the packet controller.
- The patch processors are formed from network patches that address various different security vulnerabilities. As new vulnerabilities are discovered, the functionality of the universal patching machine is updated. The update process involves identifying the vulnerabilities that require attention and determining which network patches are needed to detect and fix these vulnerabilities. The universal patching machine is updated using these network patches.
- Each network patch includes state machine logic and one or more associated vulnerability violation detection and fixing functions. To ensure efficiency, duplication is avoided when combining the state machine logic of the network patches. The universal patching machine may have machine code libraries of helper functions. These helper functions may be used to merge the state machines of network patches into a unified state machine. During the formation of the unified state machine for the patch processors, the overall size of the state machine logic is reduced.
- As the capabilities of the universal patching machine are updated by adding or removing network patches for the unified state machine in real time, the flow of data traffic through the universal patching machine is not disrupted. With one arrangement, disruption to the data flow is avoided by handling old data traffic sessions with an old version of the universal patching machine processes and new data traffic sessions with a new version of the universal patching machine processes. With another arrangement, data traffic disruption is avoided by selecting a point in time at which to switch over to the new network patches that does not affect the handling of the data traffic by the universal patching machine.
- Further features of the invention, its nature and various advantages will be more apparent from the accompanying drawings and the following detailed description of the preferred embodiments.
-
FIG. 1A is a diagram showing the behavior of a patched computer system to an illustrative input. -
FIG. 1B is a diagram showing how a universal patching machine alters the input applied inFIG. 1A in accordance with the present invention. -
FIG. 2 is a flow chart of illustrative steps involved in using a universal patching machine to provide security for an unpatched computer system in accordance with the present invention. -
FIG. 3 is a diagram of an illustrative system in which a network appliance is used to implement a universal patching machine for protecting a computer network in accordance with the present invention. -
FIG. 4 is a diagram of an illustrative network appliance showing components that may be used to apply security patches in accordance with the present invention. -
FIG. 5 is a diagram showing how a universal patching machine may handle an illustrative vulnerability related to authentication evasion in accordance with the present invention. -
FIG. 6 is a diagram showing how a universal patching machine may handle an illustrative buffer overflow vulnerability in accordance with the present invention. -
FIG. 7 is a diagram showing how a universal patching machine may have a number of associated patch processors in accordance with the present invention. -
FIG. 8 is a diagram showing how network patches may each have an associated state machine and a function for detecting and fixing a vulnerability violation in accordance with the present invention. -
FIG. 9 is a diagram showing how a unified state machine and associated vulnerability processing functions may be constructed from multiple network patches in accordance with the present invention. -
FIG. 10 is a diagram showing how the universal state machine and associated functions are enlarged upon addition of a new network patch in accordance with the present invention. -
FIG. 11 is a diagram showing how the universal state machine and associated functions are reduced in size upon removal of an old network patch in accordance with the present invention. -
FIG. 12 is a flow chart of illustrative steps involved in using the universal patching machine to enhance security for a computer system in accordance with the present invention. -
FIG. 13 is a flow chart of illustrative steps involved in maintaining up-to-date network patches for the universal patching machine in accordance with the present invention. -
FIG. 14 is a diagram showing how the state machine logic of typical network patches overlaps in accordance with the present invention. - The present invention relates to methods and apparatus for enhancing security in a computer system by detecting and fixing security vulnerabilities using patches.
- The invention may be used in the context of any suitable computer systems. Environments in which security vulnerabilities are handled by installing software directly on a host computer are said to be “host-based.” Environments in which security vulnerabilities are handled by installing software on a network appliance at the edge of a computer network (e.g., on a network appliance that serves as a gateway to a local area network), are said to be “network based.” In general, the invention applies to both host-based and network-based environments. For clarity, the discussion of the present invention sometimes focuses on network-based environments.
- One way to address security vulnerability violations is by installing patches provided by a software vendor (e.g., the vendor of the operating system and/or application software running on a particular machine or network). When vendor patches are installed on a computer system, the system may be said to be a vendor-patched computer system. An illustrative vendor-patched
computer system 200 is shown inFIG. 1A . - Installing vendor patches to patch
computer system 200 can be difficult, because of issues associated with testing, etc. In accordance with the present invention, a so-called universal patching machine (UPM) is used to intercept and modify traffic, so that the behavior of an unpatched computer system will be exactly or at least approximately the same as the vendor patchedcomputer system 200 ofFIG. 1A . - A
system 206 having auniversal patching machine 202 and anunpatched computer system 204 is shown inFIG. 1B . Universal patchingmachine 202 may be implemented using any suitable hardware. For example,universal patching machine 202 may be installed as part of a host-based security arrangement or may be implemented on a network appliance that is separate from thenetwork 204 that is to be protected. - In the situation of
FIG. 1A , an arbitrary input stimuli (inputX) to vendor-patchedcomputer system 200 results in a corresponding output (output X) and a corresponding state (stateX). InputX represents arbitrary data traffic provided to the one or more computers ofsystem 200. OutputX represents the resulting output data produced by the computers ofsystem 200. As an example, inputX may include a series of web page requests for a web server insystem 200. OutputX may include the web pages served bysystem 200 in response. StateX represents the state ofcomputer system 200. - The
universal patching machine 202 ofFIG. 1B is used to protect anunpatched computer system 204. Theuniversal patching machine 202 implements a conversion function F. The function F modifies data supplied to input 208 to address security issues inunpatched computer system 204. The input data that has been modified by conversion function F is provided by theuniversal patching machine 202 atoutput 210. - If the input of
FIG. 1A (inputX) is applied to input 208 ofmachine 202, the conversion functions produces modified data atoutput 210. The modified data atoutput 210 is called inputX′, becauseoutput 210 serves as an input forunpatched computer system 204. When constructing the universal patching machine, a conversion function is selected that attempts to make theuniversal patching machine 202 and unpatched computer system perform exactly the same as vendor-patchedcomputer system 200. An exact match in performance is not always possible, but a suitable conversion function will generally be able to approximate the performance of the vendor-patched computer system. - During operation of
universal patching machine 202, the inputX tomachine 202 is converted by the conversion function F into inputX′, as shown inFIG. 1B . - In an exact match situation, when inputX′ is applied to
unpatched computer system 204, the output ofsystem 204 is exactly the same as outputX ofFIG. 1A and the state ofsystem 204 is exactly the same as stateX ofFIG. 1A . - In an approximate match situation, it is not possible to identify a conversion function that will produce exact matches in output and state. Rather, the conversion function F produces an inputX′ that causes: 1. the output of
system 204 to approximate outputX and the state ofsystem 204 to exactly match stateX or 2. the output ofsystem 204 to approximate outputX and the state ofsystem 204 to approximate stateX. - Any suitable metric may be used to evaluate how close the output of
system 204 is to outputX and how close the state ofsystem 204 is to stateX. As an example, a closeness function may be used to compute a closeness value that is then compared to a closeness threshold value. When a given output or state is close to outputX or stateX (e.g., below the threshold value), that output or state may be said to form an approximate match. - As the example of
FIGS. 1A and 1B demonstrates, the universal patching machine (UPM) intercepts data flowing to one or more unpatched computers, and makes the behavior of the combined UPM and unpatched system the same as a patched system. - For most vendor patches, it can be demonstrated that it is possible to find an inputX′ and hence a suitable conversion function F that can be applied to the unpatched system so that the output and state of
system 204 will be exactly the same as the output of patched system. - There are sometimes vulnerabilities for which it is not possible to find inputX′ and a conversion function F that produces exactly same state and output for
unpatched system 204 as that of the patchedsystem 200. In these cases, a suitable approximate conversion function F is identified. - Illustrative steps involved in generating and using conversion function F to protect an
unpatched computer system 204 are shown inFIG. 2 . - At
step 212, a suitable conversion function F is generated. The generation operations ofstep 212 may be manual and/or automatic steps performed by a service provider associated with a universal patching machine service. - In an exact match situation, a conversion function F is generated at
step 214 such that the output and state ofsystem 204 ofFIG. 1B will be an exact match to the output (outputX) and state (stateX) of the vendor-patchedsystem 200 ofFIG. 1A . - If it is not possible to generate a conversion function F that will produce an exact match in output and state, at
step 216, a conversion function F is generated that produces an approximate match between the output ofunpatched system 204 and the patched outputX of system 200 (preferably a match that is as close as feasibly possible). It may or may not be possible in this situation to identify a conversion function F that simultaneously produces an exact match between the state ofunpatched system 204 and stateX ofsystem 200. When possible, a conversion function F is generated such that, in response to input X atinput 208 ofuniversal patching machine 202, the output ofsystem 204 is an approximation to outputX and the state ofsystem 204 is an exact match with stateX (step 216 ofFIG. 2 ). Ifstep 216 is not possible, a conversion function F is generated such that, in response to input X atinput 208 ofuniversal patching machine 202, the output ofsystem 204 is an approximation to outputX and the state ofsystem 204 is an approximation to stateX (step 218 ofFIG. 2 ). Any suitable metric may be used to gauge the effectiveness of the approximations of outputX and stateX that are achieved by the conversion function. - Once a suitable conversion function for the
universal patching machine 202 has been generated atstep 212, the conversion function is used to change input data supplied to the universal patching machine such that a suitable corresponding input may be provided to theunpatched computer system 204. By intercepting and modifying the input data withuniversal patching machine 202, the approach ofFIG. 1B may be said to involve patching the traffic, rather than patching thesystem 204. - For vulnerabilities where it is not possible to find an inputX′ and hence a conversion function F that will produce exactly the same state and output for the
unpatched system 204 as that of a corresponding vendor-patched version of the system, a suitable conversion function can be generated using the following approach: - In a first operation, generate a conversion function such that the resulting state of the
unpatched computer 204 is same as the state of patchedsystem 200 when the same input is applied to both systems. If it is not possible (feasible) to identify such a conversion function, a conversion function is identified that will not alter the state ofunpatched system 204. - In a second operation, modify the conversion function identified in the first operation such that the impact on the state of
unpatched system 204 will be same as described in the first operation, but the distance (difference) between the output data of the unpatched computer and patched computer will be minimized. The distance (as calculated using any suitable metric) between these respective outputs may be computed after removing latency-related differences from the outputs. - These techniques for generating a suitable conversion function F for the
universal patching machine 202 are further illustrated by the following examples. - A first example illustrates how a conversion function F may be identified that produces exact matches in output and state for
system 204. This first example concerns the ASP.NET vulnerability. The ASP.Net vulnerability has revealed that an attacker can evade authentication by replacing the forward slash character “/” with a backward slash character “\” in a request directed to an IIS server in a computer system. For this vulnerability, a vendor-supplied patch replaces backward slash characters “\” with “/” characters in each URI (Uniform Resource Identifier) sent to the server. For this vulnerability, the conversion function will also change the “\” characters to “/” character in HTTP URIs directed to the IIS server. This conversion function will change every URI (inputX) such that the state and output of theunpatched system 204 will be same as the state and the output of the patchedsystem 200. - A second example illustrates the generation of a conversion function for the universal patching machine that serves to produce an output for
unpatched system 204 that is approximately the same as outputX of vendor-patchedsystem 200. This example concerns the CAN-2003-081 vulnerability. In this vulnerability, a multi-threaded race condition in the Windows RPC DCOM functionality with the MS03-039 patch installed allows remote attackers to cause a denial of service (crash or reboot) by causing two threads to process the same RPC request. This causes one thread to use memory after it has been freed. The vendor patch for this vulnerability fixes the race condition so that the RPC DCOM service does not make the memory corrupted. The universal patching machine conversion function for this vulnerability will rate control (rate limit) the inputs such that two threads are never processing the same RPC request. This conversion function will stop the RPC service from corrupting the memory. The resulting output of the un-patched computer system will have same values as that of a patched computer, but it will be delayed due to the rate limiting introduced by the conversion function. The output ofsystem 204 is therefore a close approximation to outputX. - A third example concerns the CAN-2003-0352 vulnerability This vulnerability is the RPC/DCOM vulnerability that was exploited by the Blaster worm. Only 32 bytes were allocated for a filename field in the RPC API and the API did not check the filename length before copying the data for the associated file. The vendor patch for this vulnerability increases the memory buffer to 256 bytes and checks whether the input field is more than 256. If yes, the patched system will reject the request. If the request has a filename field less than 256 bytes, the request will succeed. If the length is more than 256 bytes, the request will be rejected. As described in connection with
step 218, it is not possible (in this example) to find a conversion function that will guarantee that the state of the unpatched computer will be same as the state of vendor-patched computer. A suitable conversion function for this vulnerability will truncate the filename field to 32 bytes. The result of this conversion function will be that the RPC service will reject a request if its length is more than 32 bytes, but will produce no change in state for the RPC service for requests where filename is more 32 bytes. Both the state and output of thesystem 204 in this third example are therefore approximately (but not exactly) the same as the outputX and stateX ofsystem 200 in response to an identical inputX. - For the
universal patching machine 202 to be able to examine all of the inputs destined to an application or operating system,machine 202 should generally be deployed as close as possible to theunpatched system 204. A host-baseduniversal patching machine 202 will have full visibility into all of the inputs, but such a universal patching machine will also exhibit the types of limitations generally seen in host-based intrusion prevention systems such as difficulties associated with product management and deployment. - Network-based UPM (NUPM) solutions have visibility only into network traffic and hence can address only network (or remote) vulnerabilities, but have advantages in terms of ease of management and deployment.
- An illustrative network-based
UPM system 10 in accordance with the present invention is shown inFIG. 3 . In the illustrative arrangement ofFIG. 3 , acomputer network 12 is protected from security vulnerabilities by a network-baseduniversal patching machine 20 implemented on anetwork appliance 18. In a typical scenario, an entity at a computer outside ofnetwork 12 such as one ofcomputers 24 desires to communicate with an entity at acomputer 14 insidenetwork 12 over acommunications network 22.Network appliance 18 is shown as being separate fromnetwork 12 inFIG. 3 , but becausenetwork appliance 18 may be operated and installed by a system administrator associated withnetwork 12,network appliance 18 is sometimes referred to as being part ofnetwork 12 or is referred to as being located at the edge ofnetwork 12. -
Network appliance 18 may be based on any suitable computer hardware. Atypical network appliance 18 has a CPU, memory, hard disk storage, and communications ports. The communications ports may be used to receive and transmit incoming and outgoing data traffic. Communications ports may also be used to support communications betweenappliance 18 and a backup appliance to provide redundancy in the event of an equipment failure. The processor, memory, and storage innetwork appliance 18 may be used to run software for implementing the functions ofuniversal patching machine 20. Software may be provided toappliance 18 using any suitable arrangement. For example, some software may be provided toappliance 18 whenappliance 18 is installed.Other software 18 may be downloaded from a service provider. As an example, a service provider at acomputer 24 may deploynetwork appliance 18 at the premises of a customer'snetwork 12. Through remote access procedures, the service provider may contactappliance 18 to set up and/or update the functionality ofappliance 18 with a current set of network-based patches as needed. If desired, contact may be initiated by the network appliance. To enhance processing throughput, some or all of the functionality of the universal processing machine may be implemented using dedicated hardware. For example, universal processing machine functions may be implemented using custom hardware components such as custom boards, custom field-programmable gate arrays (FPGAs), and application-specific integrated circuits (ASICs). For example, we are planning to implement a packet controller may be implemented using custom hardware. -
Computers Communications network 22 may be any suitable network such as one or more local area networks, the internet, etc. The computers ofnetwork 12 may be interconnected by wired andwireless communications paths 16. Typical network communications paths include Ethernet cables, fiber-optic paths, wireless network nodes, etc. Any suitable network topology and network equipment may be used to interconnect thecomputers 14 innetwork 12. Moreover,network 12 may be a local area network, a metropolitan area network, a wide area network, or any other suitable network. Generallynetwork 12 will be associated with an organization that desires to protect its assets through proper deployment of security patches. -
Network appliance 18 intercepts data traffic sent to and fromnetwork 12. The data traffic to and fromnetwork 12 may be any suitable communications traffic. For example, the data traffic may be web traffic, email traffic, or any other suitable data traffic. - In a typical scenario, a user at a
computer 24 requests a web page from aweb server 14 innetwork 12. In this type of environment, the user's internet browser or other suitable client software generates an http request and transmits this request to anappropriate web server 14 atnetwork 12. In response, theweb server 14 atnetwork 12 retrieves the requested page and provides it to the user. The incoming traffic to network 12 includes the http request from the user. The outgoing traffic fromnetwork 12 includes the web page material that is provided to the user in response to the request. - Both incoming and outgoing data traffic may be intercepted by the
network appliance 18. If thenetwork appliance 18 detects a security vulnerability violation associated with the data traffic, the data traffic may be altered to overcome the vulnerability. In this way, thenetwork appliance 18 may be said to patch or fix the data traffic, rather than directly patching the computers innetwork 12 by installing vendor patches. This method can be used to provide network patch for all remote vulnerabilities. Because the arrangement ofFIG. 3 separates the patching operations ofnetwork appliance 18 from the various hardware and software platforms associated with thecomputing equipment 14, asingle network appliance 18 can be used to provide security formultiple computers 14. This greatly reduces the complexity associated with providing security for thecomputers 14. -
FIG. 4 shows an illustrative architecture that may be used to implement the network-baseduniversal patching machine 20. The arrangement shown inFIG. 4 is merely illustrative. Any suitable arrangement may be used to provide the functions ofuniversal patching machine 20 if desired. - As shown in the example of
FIG. 4 , theuniversal patching machine 20 may have apacket controller 26 andpatch processors 28.Packet controller 26 examines data packets in the traffic flowing through patchingmachine 20.Packet controller 26 outputs all packets fromuniversal patching machine 20 that are believed to be free of vulnerability issues.Packet controller 26 redirects packets that are associated with possible vulnerability violations to patchprocessors 28.Patch processors 28 work withpacket controller 26 to detect and fix vulnerability violations. - Packet
controller configuration data 30 and patchprocessor configuration data 32 may be used to support the operations ofpacket controller 26 andpatch processors 28.Configuration data - Patching
machine 20 intercepts inbound and outbound traffic associated with network 12 (FIG. 3 ). As data passes through patchingmachine 20, patchingmachine 20 detects and fixes security vulnerabilities. If, for example, patchingmachine 20 determines that incoming data for aweb server 14 innetwork 12 includes an http request and if there is a security vulnerability related to http requests, the patchingmachine 20 can extract the request from the data being sent to the web server and can alter the request so as to overcome the vulnerability. By patching the traffic in this way, it is not necessary to block potentially legitimate http requests. - Network communications functions are often described in the context of a layered network model. For example, networking protocols are often described with reference to the International Standard Organization's Open System Interconnect (ISO/OSI) network layer model. This model has seven network layers: physical (layer 1), data link (layer 2), network (layer 3), transport (layer 4), session (layer 5), presentation (layer 6), and application (layer 7). The physical layer relates to the physical structure of network connections. The data link layer provides context to the signals at the physical layer. In the data link layer, bits are assigned physical addresses and are formatted into frames. Functions such as error checking may be implemented at the data link layer. At the network layer, data is packaged into datagrams. The network layer also handles the routing of datagrams from one network to another. The transport layer handles operations involved in setting up connections between machines. The transport layer supports flow control and multiplexing functions. The session layer manages communications sessions using handshaking and other mechanisms. The presentation layer handles operations such as data encryption and compression. The application layer provides services for users.
- To optimize the efficiency of the data processing tasks performed by the
universal patching machine 20, it is generally preferred to perform as much processing as possible at lower layers in the network stack. This type of processing architecture is more efficient than an architecture in which data is processed only at high levels in the network layer stack. - In general,
packet controller 26 handles the lower network layers (e.g., layers 2-5).Patch processors 28 process traffic at higher layers (e.g., layers 5-7). Thepacket controller 26 andpatch processors 28 work together by issuing commands. In a typical scenario, the patch processors detect a vulnerability that needs to be addressed. The patch processors then issue a modification command to the packet controller that directs the packet controller to perform an appropriate data modification operation. The modification command may, for example, direct thepacket controller 26 to change, remove, or add a data packet. The modified data is not susceptible to the vulnerability and may therefore be considered to be “fixed” or “patched.” After the data traffic has been fixed by thepatch processors 28 andpacket controller 26, it may be forwarded to its intended destination. -
Packet controller 26 preferably receives and sends data in compliance with all layer 2-4 communications protocols. As an example,packet controller 26 may support Ethernet atlayer 2, Internet Protocol (IP) atlayer 3, and Transport Control Protocol (TCP) atlayer 4. -
Patches processors 28, which handle traffic at layers 5-7, use network patches to implement vulnerability detection and fixing functions. The network patches are used to form a unified state machine that implements procedures foruniversal patching machine 20. - Network patches may be added and removed as desired to modify the unified state machine. For example, a new patch may be distributed to
network appliance 18 from a service provider overcommunications network 22 or a service provider may send commands tonetwork appliance 18 that direct thenetwork appliance 18 to remove an old patch from active use. - These changes may be performed in real time without disrupting the data traffic. A system administrator, service provider, or other suitable entity may update the patches for the
universal patching machine 20 onnetwork appliance 18 without rebooting or otherwise halting the operation of theappliance 18. Data traffic flows continuously throughappliance 18, even as new patches are added and old patches are removed. - Patches are added by modifying the patch processor capabilities of
universal patching machine 20, without changing the operating system or application programs on thecomputers 14 innetwork 12. It is therefore not necessary to attempt to test the operation of new patches for all potential configurations ofcomputers 14. The arrangement ofFIG. 3 therefore avoids the testing and downtime problems associated with conventional patching procedures. - Patch
processor configuration data 32 contains software and data for supporting the operation ofpatch processors 28. Patchprocessor configuration data 32 may, for example, contain machine code libraries (e.g., DLL's) for the network patches used bypatch processors 28. The machine code from these libraries can be assembled to form the unified state machine for thepatch processors 28. Patchprocessor configuration data 32 may include system parameters that a service provider may adjust remotely overnetwork 22. System parameter adjustments may be used to optimize the performance of theuniversal patching machine 20. Illustrative system parameters include system parameters for controlling memory usage innetwork appliance 18, parameters for setting the permitted number of concurrent processing threads supported bynetwork appliance 18, etc. - Packet
controller configuration data 30 includes data that informs thepacket controller 26 how to implement access policies. The access policies may specify whether thepacket controller 26 should output data fromnetwork appliance 18 without processing or should send data to patchprocessors 28. The access policies may use any suitable criteria. As an example, access policy determinations of whether to forward data to an output or to process data for vulnerabilities may be made based on IP address and port number information. - Packet
controller configuration data 30 also preferably includes data that informs the packet controller whether or not the packet controller should forward data throughnetwork appliance 18 or should divert data to patchprocessor 28 based on whether the traffic is client traffic or server traffic. - If desired, packet
controller configuration data 30 may include block-size-to-skip data that indicates the size of blocks of data that thepacket controller 26 should output from the network appliance without inspection. This setting may be adjusted in real time by thepatch processors 28. As an example, if thepatch processors 28 detect that the data traffic being handled by thenetwork appliance 18 contains an email message with a large attachment and if thenetwork appliance 18 determines that the attachment is not associated with any potential vulnerabilities, thepatch processors 28 can adjust the block-size-to-skip data in the packetcontroller configuration data 30 appropriately. This adjustment will then direct thepacket controller 26 to forward the email attachment throughnetwork appliance 18 without inspecting its contents. Throughput efficiency is enhanced by directingpacket controller 26 to pass data that does not correspond to a security vulnerability throughnetwork appliance 18 without patch processing. - The operation of
universal patching machine 20 in handling two illustrative vulnerabilities is shown inFIGS. 5 and 6 .FIG. 5 shows how theuniversal patching machine 20 processes an authentication evasion vulnerability called the ASP.Net vulnerability.FIG. 6 shows how theuniversal patching machine 20 processes a buffer overflow vulnerability called the CAN-2003-0352 vulnerability. -
Network appliance 18 anduniversal patching machine 20 preferably handle two-way data traffic. - In handling data traffic that is outbound from
network 12,network appliance 18 anduniversal patching machine 20 receive the outbound data traffic at an input to thenetwork appliance 18 that is connected to network 12. The data is either forwarded in unmodified form to an output ofnetwork appliance 18 that is connected to communications network 22 (FIG. 3 ) or is provided to this output after processing by patch processors 28 (FIG. 4 ) to remove vulnerability violations. - In handling data traffic that is inbound to network 12, the
network appliance 18 anduniversal patching machine 20 receive the inbound data traffic at an input tonetwork appliance 18 that is connected to network 22. The data from the input is either forwarded in unmodified form to an output ofnetwork appliance 18 that is connected to network 12 or is provided to this output after processing by patch processors 28 (FIG. 4 ). - In
FIGS. 5 and 6 , data that is being received at the input of thenetwork appliance 18 anduniversal patching machine 20 is shown as entering the diagram from the left. Data that is being provided to the output of the network appliance anduniversal patching machine 20 is shown as exiting the diagram to the right. In the diagrams ofFIGS. 5 and 6 , data flow lines are superimposed on a representation of the seven network layers (1-7) of the ISO/OSI network layer model. - The example of
FIG. 5 relates to a vulnerability in which an attacker can send specially crafted requests to a server to view secured content without providing proper credentials. Analysis of this vulnerability (the ASP.Net vulnerability) has revealed that the attacker can evade authentication by replacing the forward slash character “/” with a backward slash character “\” in the server request. Theuniversal patching machine 20 handles this vulnerability by replacing occurrences of any backslash character or its Unicode equivalent with a forward slash character. - During processing, the
universal patching machine 20 receives data traffic flowing betweennetwork 22 andnetwork 12.Packet controller 26 examines the data traffic atlayer 3, as shown by line 34 andtest point 36. In the illustrative example ofFIG. 5 , it is assumed thatnetwork 12 ofFIG. 3 contains anApache web server 14 and aIIS web server 14 without vendor patches. It is also assumed that Apache traffic is free of vulnerabilities (in this example). The ASP.Net vulnerability only applies to IIS web server traffic. - At
test point 36, thepacket controller 26 determines whether the traffic is Apache traffic or is associated with the IIS server. In making this determination, thepacket controller 26 uses the access policy information (e.g., an access policy list) in packet controller configuration data 30 (FIG. 4 ). - In particular, the
packet controller 26 examines the headers of the packets in the data traffic to determine their associated IP address and port number. Based on the IP address and port information, thepacket controller 26 determines whether the traffic is associated with the Apache server innetwork 12 or the IIS server innetwork 12. If the traffic is Apache traffic, it can be concluded (in this example) that there are no vulnerabilities associated with the traffic. The traffic may therefore be forwarded directly to the output of thenetwork appliance 18 without modification, as shown byline 39. This allows higher-layer processing of this data traffic to be avoided, which increases processing efficiency significantly. - If, at
test point 36, thepacket controller 26 determines that the traffic is for the IIS server, thepacket controller 26 can continue to analyze the data traffic at network layer 4 (line 38) by performing additional testing attest point 40. In particular, attest point 40, thepacket controller 26 can determine whether the traffic that has been received at the network appliance input is server traffic originating at theIIS server 14 innetwork 12 or is client traffic originating at one ofcomputers 24. For the ASP.Net vulnerability, the vulnerability is related to the server requests made by the client to the IIS server, so traffic from the server can be forwarded directly to the output of the network appliance and patching machine, as shown byline 42. - If the
packet controller 26 determines attest point 40 that the traffic is from the client, thepacket controller 26 can pass the data traffic to the patch processors 28 (FIG. 4 ) for analysis atnetwork layer 5, as indicated byline 44. - As indicated schematically by
test point 46 ofFIG. 5 , the data traffic that is passed to thepatch processors 28 for processing atlayer 5 is analyzed by the patch processors to determine whether or not it should be forwarded to the patching machine output atlayer 5 without further processing. In this example, it is appropriate to forward the data traffic to the patching machine output if it corresponds to chunk-encoded data, as indicated byline 48. If the data traffic is not chunk-encoded data, thepatch processors 28 perform further analysis atlayers line 50 andbox 52. - The forwarding of chunk-encoded data in
FIG. 5 is merely an illustrative example. In general, blocks of data traffic may be forwarded to the patching machine output atlayer 5 without further processing atnetwork layers patch processors 28 whenever it is determined that data traffic can be excluded fromlayer patch processors 28 may identify which blocks of data are to be forwarded withoutlayer patch processors 28 can specify which blocks to forward using any suitable technique. As an example, the patch processors can specify a block by its start location and block size (e.g., the next N bytes of data starting at a particular location are to be forwarded withoutlayer layer layer - In the example of
FIG. 5 , thepatch processors 28 analyze the data traffic duringlayer processors 28 attempt to locate a backslash in a server request for theIIS server 14 innetwork 12. If a violation of the ASP.Net vulnerability is detected (i.e., if a backslash is located in the request data), the patch processors issue a corresponding modification command for thepacket controller 26. As indicated byline 54,box 56, andline 58, thepacket controller 26 receives the modification command from thepatch processors 28, performs the requested modification operation on the data traffic atlayer 5 to remove the vulnerability violation and thereby fix the traffic, and provides the corresponding modified (fixed) traffic to the patching machine output. In this example, the modification request specifies that the packet controller should replace the backslash in the IIS server request with a forward slash. Fixing the data traffic in this way before it reachesnetwork 12 eliminates the security risk associated with the ASP.Net authentication evasion vulnerability, but does not block legitimate server requests, many of which may include backward slashes. The replacement of one character with another in response to a modification command is merely one illustrative example. In general, commands may be used to change one byte of data for another, may be used to delete data, may be used to insert data, etc. - The example of
FIG. 6 concerns the CAN-2003-0352 buffer overflow vulnerability. This vulnerability is an RPC/DCOM vulnerability that was exploited by the so-called Blaster worm. RPC/DCOM is a service in the Microsoft Windows Operating System that is used to support remote procedure calls. An attacker who exploits the CAN-2003-0352 vulnerability may be able to run code on a computer without proper authorization. A successful attacker would therefore be able install software or modify data on the attacked computer. Exploitation of the vulnerability requires that the attacker form a DCOM object activation request to the computer that contains a filename field greater than 16 characters in length. - The CAN-2003-0352 vulnerability arose because only 32 bytes were allocated for the filename field in the RPC API and no checks were made regarding the length of the filename field before copying data. It was assumed that a machine name would never be more than 16 characters. However, it is legal to use a DNS-style name that is longer than 16 characters, such as \\server.subdomain.domain.com\share\etc. If a long machine name (S2 name parameter) such as this is used by a user, the
universal patching machine 20 fixes the vulnerability violation by truncating the S2 name parameter to make it 32 bytes long. The vulnerability violation is fixed, so a user's sessions will not be dropped without the user knowing the cause of the problem, as would be the case if all uses of long machine names were blocked. - The operations taken by the
universal patching machine 20 to detect and fix violations of the CAN-2003-0352 vulnerability are shown inFIG. 6 . During operation, theuniversal patching machine 20 receives inbound data traffic fromnetwork 22.Packet controller 26 examines the incoming data traffic atlayer 3, as shown byline 60 andtest point 62. In the illustrative example ofFIG. 6 , it is assumed that the CAN-2003-0352 vulnerability is the only vulnerability in existence. - At
test point 62, thepacket controller 26 determines whether the traffic is destined for acomputer 14 innetwork 12 that has already been patched with a vendor patch to prevent exploitation of the CAN-2003-0352 vulnerability. Thepacket controller 26 uses information (e.g., an access policy list) in packet controller configuration data 30 (FIG. 4 ) in making this determination. For example, thepacket controller 26 can examine the headers of the packets in the data traffic to determine their associated IP address and port number. The IP address and port information and other information inconfiguration data 30 indicates to thepacket controller 26 whether the traffic is destined for acomputer 14 that has been patched. If the traffic is for a RPC/DCOM-patchedcomputer 14, thecomputer 14 is not susceptible to vulnerabilities, so it is not necessary to process the traffic further inuniversal patching machine 20 to remove vulnerability violations. Rather, the traffic can be forwarded directly to the output of thenetwork appliance 18 without modification, as shown byline 64. This improves processing efficiency inuniversal patching machine 20, because higher-layer processing of the data traffic is bypassed. It also avoids double patching. - If, at
test point 62, thepacket controller 26 determines that the traffic is for acomputer 14 that has not been patched to prevent exploitation of the CAN-2003-0352 vulnerability, thepacket controller 26 analyzes the data traffic at network layer 4 (line 66) by performing additional testing attest point 68. The CAN-2003-0352 vulnerability affects server-bound traffic from a client such as one of computers 24 (FIG. 3 ), but does not affect traffic bound for aclient computer 14 innetwork 12. Accordingly, during the processing oftest point 68, thepacket controller 26 determines whether the traffic that has been received at the network appliance input is traffic from a server or is traffic from a client. Traffic from a server innetwork 12 is forwarded directly to the output of the network appliance and patching machine, as shown byline 70. - If the
packet controller 26 determines attest point 68 that the traffic is from aclient computer 24 innetwork 12, thepacket controller 26 can pass the data traffic to the patch processors 28 (FIG. 4 ) for analysis atnetwork layers line 72. - During
layer patch processors 28 analyze the data traffic to attempt to detect violations of the CAN-2003-0352 vulnerability. In particular,processors 28 attempt to detect an S2 name parameter in the data with a length greater than 32 bytes. - If a name greater than 32 bytes long is detected, the
patch processors 28 issue a corresponding modification command for thepacket controller 26. The modification command directs thepacket controller 26 to truncate the S2 name parameter in the data traffic so that the S2 name parameter is 32 bytes long. The detection of the vulnerability violation and issuance of the modification command for thepacket controller 26 is illustrated inFIG. 6 bybox 74 andline 76. As indicated bybox 78, thepacket controller 26 performs the requested data modification (truncation) atlayer 5 to remove the vulnerability violation from the data traffic. The fixed data traffic is then provided at the patching machine output, as shown byline 80. Because excess name parameter lengths are removed from the data traffic by theuniversal patching machine 20, it is not necessary to block all traffic containing excessively long name parameters. - As with the ASP.net example of
FIG. 5 , the use ofuniversal patching machine 20 to handle the vulnerability violation is superior to solutions based on blocking traffic, because patchingmachine 20 does not block legitimate traffic. Because traffic is not blocked byuniversal patching machine 20, attackers attempting to exploit vulnerability violations innetwork 12 will not know that a security system is in place, but rather will conclude thatsystem 12 has been patched for the vulnerabilities they are trying to exploit. After attempting to exploit a number of different vulnerabilities, they will become frustrated and move to a new target. In this type of situation, attackers will have left a large amount of forensic information behind, so that their activities may be tracked. With traffic blocking systems, in contrast, an attacker immediately becomes aware that an intrusion prevention system is in place and will use evasive techniques to overcome its protections. - The
universal patching machine 20 fixes vulnerability violations using network patches (NPs) inpatch processors 28. Network patches are conversion functions that are applied to network traffic destined to an unpatched operating system or application innetwork 12. The network patches modify the traffic so that the response of the unpatched services on theequipment 14 innetwork 12 behave exactly as if those services had been patched using a conventional vendor patch. Because the network patches operate inpatch processors 28 inuniversal patching machine 20 onequipment 18, it is not necessary to implement any patches for the same vulnerability on theequipment 14 ofnetwork 12. The network patches inpatch processors 28 therefore provide universal patching without requiring the installation of vendor patches in a potentially vast number of diverse equipment configurations innetwork 12. The network patches inpatch processors 28 also fix vulnerabilities for which no vendor patches are available. - In constructing the
universal patching machine 20, the equipment innetwork 12 that needs the protection provided by network patching is profiled. For each item ofequipment 14, information is gathered on which services (operating systems and applications) are to be protected, which port numbers the services are running on, which patches fix remote vulnerabilities but have not yet been applied to the services, and which remote vulnerabilities are not patched. This information is used by theuniversal patching machine 20. - As shown in
FIG. 7 , thepatch processors 28 ofuniversal patching machine 20 are each made up of a number of network patches (NPs) 82. There are M patch processors inFIG. 7 . TheN network patches 82 inpatch processor 1 are labeled NP11 through NP1N. In general, there may be a different number of network patches in each patch processor. The T network patches in patch processor M are labeled NPM1 through NPMT. Aseparate patch processor 28 is used for each service to be protected. For example, in anetwork 12 with an Apache web server, an IIS web server, a personal computer running the Windows XP operating system, and a personal computer running the Windows 2000 operating system, onepatch processor 28 is used to protect the Apache application, onepatch processor 28 is used to protect the IIS machine, onepatch processor 28 is used to protect the Windows XP computer, and onepatch processor 28 is used to protect the computer on which Windows 2000 has been installed. In general, one patch processor is used to secure an application or a service with the similar patch level running on multiple machines in thenetwork 12. For example, machines running 1.x version of Apache server will use adifferent patch processor 28 than machines running the 2.x version of Apache server. - To reduce latency and to lower the processing requirements associated with implementing
patch processors 28, thenetwork patches 82 are preferably merged into a unified processing engine. As shown inFIG. 8 , eachnetwork patch 82 includes a statemachine logic portion 84 and a vulnerability detection and fixingfunction portion 86.Portions FIG. 4 ). Thestate machine logic 84 of the network patches implements a state machine that is used to parse the data traffic for processing by functions 86.Functions 86 detect vulnerability violations in the data traffic and fix them. - In general, there are significant commonalities among the
state machines 84 of thenetwork patches 82. In theuniversal patching machine 20, thestate machines 84 of thedifferent network patches 82 are merged to form a unified state machine. The process by which multipleindividual network patches 82 are merged into aunified state machine 84 with multiple associatedfunctions 86 is shown inFIG. 9 . - An example of an operation that may be shared among
processors 28 is an extraction operation used when extracting a parameter from the data traffic. This type of operation is used bymany patch processors 28 as they parse the data traffic. It therefore is helpful to share as much of the extraction functionality as possible betweenpatch processors 28. The merging process ofFIG. 9 is performed using helper functions (sometimes also called merging functions) that are contained in thepatch configuration data 32 whenever a new network patch is loaded for use inunified patch processor 20 or an old network patch is removed. - During the merging process, the
state machines 84 of thevarious network patches 82 are merged to form a single state machine. Duplicate states are avoided and the overall size of the state machine logic is compressed to minimize the total number of states. Significant performance enhancements are obtained through the merging process, because duplication of state machine processing logic is avoided. - The helper functions used to construct the unified state machine logic and functions for the
universal patching machine 20 can run without interrupting the operation of thepatch processors 28 andpacket controller 26 in theuniversal patching machine 20. This allows network patches to be added for newly discovered vulnerabilities without disrupting the operations of patchingmachine 20 andnetwork appliance 18. It also allows network patches for vulnerabilities that have been patched using vendor patches to be removed. The addition of new network patches and the removal of old network patches are operations that can both be performed without causing any disruption in the flow of data traffic or the vulnerability detection and fixing operations ofuniversal patching machine 20 when processing the data traffic. -
FIG. 10 illustrates how theunified state machine 84 grows when a new network patch is added. Thestate machine logic 84 of the merged network patches contains states that are common with the existing state machine of the patch processor. Only the states that are unique to thenew network patch 82 are added to the unified state machine. In the example ofFIG. 10 , new network patch NPNEW contains a new vulnerability detection and fixingfunction F NEW 88, so the merged network patches shown on the right side ofFIG. 10 include both additionalstate machine logic 88 and a new associated detection and fixingfunction 90. There is no commonality between the detecting and fixing functions used by thepatch processors 28, as each detecting and fixing function detects and fixes a specific vulnerability violation. -
FIG. 11 shows how thestate machine logic 84 of thepatch processors 28 shrinks when a network patch is removed. In the example ofFIG. 11 , network patch NPK has been removed from theunified state machine 84, resulting instate machine logic 84 from which statemachine logic portion 92 has been removed. The vulnerability detection and fixing function associated with network patch NPK is function FK. As shown on the right side ofFIG. 11 , when network patch NPK is removed from theunified state machine 84, function FK is removed from the patch processors. - The process of removing network patch NPK from the patch processors that is illustrated in
FIG. 11 is performed by the helper functions of patch processor configuration data 32 (FIG. 4 ) without disrupting the operation of thepatch processors 28 orpacket controller 26. - Any suitable technique may be used to ensure that the real time processing of data traffic is not affected by the addition or removal of network patches.
- With one suitable approach, the helper functions make a copy of the existing state machine logic. The existing state machine logic is used for handling existing sessions in the data traffic. Before the new copy of the state machine logic is placed into use, the changes of
FIG. 10 andFIG. 11 are made by the helper functions. Once the new copy of the unified state machine logic has been modified (i.e., so thatregion 92 and function FK have been removed from the state machine in theFIG. 11 example or so thatregion 88 and function FNEW have been added in theFIG. 10 example), the modified version of the new copy of the unified state machine logic is used to handle new communications sessions in the data traffic. Because existing sessions are handled by the unmodified state machine while the new sessions are handled by the modified state machine, no communications traffic is disrupted by the process of modifying the unified state machine. - With another suitable approach, the helper functions that are used to perform the unified state machine modification select a particular point in time at which to make the modification. By selecting a point in time at which the data traffic is not affected by the modification, the modification is made without disrupting the operations of the
universal patching machine 20. - A flow chart of illustrative steps involved in setting up and using the
universal patching machine 20 to detect and fix vulnerability violations is shown inFIG. 12 . Atstep 94, the helper functions of patch processor configuration data 32 (FIG. 4 ) are used to form theunified state machine 20, as described in connection withFIGS. 7-11 . - At
step 96, thepatch processors 28 andpacket controller 26 receive data traffic at an input tonetwork appliance 18. The data traffic that is received may be inbound traffic that is destined toequipment 14 innetwork 12 or may be outbound traffic fromequipment 14. - At
step 98, thepacket controller 26 andpatch processors 28 are used to detect and fix vulnerability violations in the data traffic. Duringstep 98, thestate machine logic 84 extracts the states of thelayer - Following processing, the data traffic is output at
step 100. Thepacket controller 26 and patch processors fix detected vulnerability violations, so that the outgoing traffic from theuniversal patching machine 20 does not contain vulnerability violations. - The
universal patching machine 20 is implemented using anetwork appliance 18 that is located betweennetwork 22 and thenetwork 12 being protected. When a new network patch is injected into theuniversal patching machine 20, the services being protected are not disrupted.FIG. 13 shows illustrative steps involved in setting up and maintaining thepatch processors 28 in an environment in which network patch requirements formachine 20 evolve as a function of time. - At
step 102, vulnerabilities that need to be addressed by theuniversal patching machine 20 are identified. The vulnerability identification process ofstep 102 may involve examining publicly available lists of common vulnerabilities and exposures (CVE lists), consulting vendors for lists of vendor-announced patches, determining whether hackers or other third-parties in the software community have publicized vulnerabilities, or using other suitable resources. The process ofstep 102 may be performed automatically (e.g., using software operated by the service associated with the universal patching machine software), may be performed manually (e.g., using personnel at the service), or may be performed using a combination of manual and automatic procedures. After vulnerabilities have been identified that are to be patched, network patches for the vulnerabilities may be created atstep 102. The network patch creation process typically involves at least some manual coding operations that are performed based on an analysis of the vulnerability and appropriate solutions to overcome the vulnerability. The network patches that are created may be stored on a server associated with a network patching service provider and may be distributed to customers atvarious networks 12 overcommunications network 22. - At
step 104, it is determined which of the network patches are needed to detect and fix the vulnerabilities in a givennetwork 12. In particular, manual and or automatic software-based services may be used to gather network status information for the givennetwork 12. The software-based services used atstep 104 may include a discovery application that scans the equipment of the givennetwork 12 to determine which vendor patches have been installed and which network patches have been installed. - The network status information gathered at
step 104 may include information on which vulnerabilities need to be addressed. If desired, a system administrator at thenetwork 12 may be provided with an opportunity to manually intervene in the processes of deciding which vulnerabilities need to be addressed. The system administrator may, as an example, decide which network patches to install by clicking on appropriate on-screen options provided by the network patching software. The network patching software used to gather this information may be implemented usingnetwork appliance 18 or any other suitable platform. - Using information on which network patches are available, which vendor patches have already been installed (so that corresponding network patches are not needed), and which vulnerabilities the system administrator desires to patch, the patching system software determines which network patches are to be included in patching
machine 20 and which are to be removed from patching machine 20 (e.g., because they are duplicative of installed vendor patches or because the system administrator does not desire network patches for particular vulnerabilities). - After the appropriate network patches to be incorporated into the
universal patching machine 20 have been identified atstep 104, the helper functions of patchprocessor configuration data 32 may be used to create the universal patching machine 20 (step 106). In particular, the helper functions may merge thestate machine logic 84 of the appropriate network patches to form a unified state machine, as described in connection withFIGS. 7-11 . Duringstep 106, thestate machines 84 and associatedfunctions 86 for the selected network patches are merged while duplicative processing capabilities are eliminated. - At
step 108, the selected network patches are applied by theuniversal patching machine 20 without disrupting the data traffic throughnetwork appliance 18. Any suitable technique may be used to ensure that data traffic is not disrupted during the network patch update process. For example, the new set of network patches may be applied by using a new state machine to handle new data traffic sessions while an old version of the state machine is used to handle existing data traffic sessions. As another example, the time at which to apply the new set of network patches may be chosen so that the changeover between the old set of network patches and the new set of network patches does not affect existing traffic. - As indicated by
line 110, the process ofFIG. 13 may be performed continuously, so that the capabilities of the universal patching machine remain up to date as new vulnerabilities are identified. - Because patching operations are performed by the
universal patching machine 20 without changing operating system or application files (e.g., DLLs for Windows) on theequipment 14 ofnetwork 12, the use ofuniversal patching machine 20 avoids the problems associated with testing and deploying vendor patches directly onequipment 14. Theuniversal patching machine 20 does not interact with the operating systems and applications running onnetwork 12. The network patches ofmachine 20 only affect the state machine of thepatch processors 28. Because there are a relatively small number of possible state machine configurations, comprehensive testing of theuniversal patching machine 20 is possible. Comprehensive testing of vendor patches is generally not practical, because the number of different possible combinations of operating systems and applications that exist on the various pieces ofequipment 14 in networks such asnetwork 12 is too large. -
FIG. 14 illustrates how comprehensive testing of theuniversal patching machine 20 is possible. In the example ofFIG. 14 , there are four network patches NP1, NP2, NP3, and NP4. Eachnetwork patch 82 contains a number ofstate machines 84. As shown inFIG. 14 , there is an overlap between network patches, so that some of thestate machines 84 are common to multiple network patches. In the situation ofFIG. 14 , for example, there are twostate machines 84 in common between network patch NP1 and network patch NP4. - Because not all
network patches 82 havestate machines 84 in common, it is not necessary to test the operation of all possible combinations of network patches. For example, when adding network patch NP3 to a universal state machine made up of network patches NP2, NP1, and NP4, is not necessary to test the operation of all possible combinations of NP1, NP2, NP3, and NP4. Rather, because the NP3 state machines overlap only with the state machines of network patch NP2, it is sufficient to test the operation of network patch NP3 alone and in any combination of network patches including NP2. By restricting the testing of network patch combinations to only those that are necessary as determined by state machine overlap considerations, comprehensive testing of the universal patching machine is possible. In most situations, the number of configurations that need to be tested to provide comprehensive testing is less than ten. - Because the
universal patching machine 20 is based on a merged state machine (seeFIG. 9 ), duplicate processing is avoided. The patch processors only execute the state machine logic contained in the merged state machine. Because the state machine logic is compressed (merged), it may achieve results efficiently. - By updating the network patches being used to reflect changes in identified vulnerabilities and installed vendor patches, old network patches can be removed. Extraneous processing associated with these old network patches is therefore eliminated.
- Not all packets in the data traffic contain information that is needed to process currently known vulnerabilities. To enhance performance, the
packet controller 26 can forward certain packets at low layers in the network protocol stack as described in connection withFIGS. 5 and 6 . In a typical deployment, more than 90% of traffic need not be sent to patchprocessors 28 and can be forwarded to the patching machine output by thepacket controller 26 at either the IP layer or TCP layer. - The amount of traffic that is processed depends on the number of network patches that are needed. As the number of patch processors and network patches decreases, the patch configuration data 32 (
FIG. 4 ) reflects the reduced amount of patching to be performed. As a result, thepacket controller 26 will forward a relatively larger fraction of traffic to the patching machine output at low network layers without sending it to thepatch processors 28 for vulnerability violation detection and fixing operations. This is advantageous because it allows the complexity of the patchingmachine 20 to be reduced. - Once a vulnerability has been fixed by the
universal patching machine 20, computer worms and other attacks that attempt to exploit the vulnerability become ineffective. - The foregoing is merely illustrative of the principles of this invention and various modifications can be made by those skilled in the art without departing from the scope and spirit of the invention.
Claims (21)
1-18. (canceled)
19. A system comprising:
a network;
a computing device;
a universal patching machine coupled between the network and the computing device, the universal patching machine comprising a processor programmed to:
receive data traffic from the network;
determine one or more vulnerability violations in the received data traffic;
modify the received data traffic by removing the one or more vulnerability violations; and
forward the modified data traffic to the computing device.
20. The system of claim 19 , wherein the processor is further programmed to receive data identifying which operating systems and applications of the computing device are to be protected by the universal patching machine from vulnerability violations.
21. The system of claim 20 , wherein the processor is further programmed to:
determine which patches are not utilized by the computing device; and
update the universal patching machine to include the patches not utilized by the computing device.
22. The system of claim 21 , wherein the processor is further programmed to remove patches within the universal patching machine that are utilized by the computing device.
23. The system of claim 19 , wherein the universal patching machine further comprises a packet controller, the packet controller including data that informs the packet controller whether: 1) the packet controller should output the data traffic received by the universal patching machine without processing the received data traffic; 2) the packet controller should process the received data traffic; or 3) the packet controller should send the received data traffic to the processor for processing.
24. The system of claim 23 , wherein the packet controller is configured to process the received data traffic at network layers 5, 4, 3, or 2.
25. The system of claim 24 , wherein the patch processor is programmed to process the data traffic at network layers 6 or 7.
26. A method for monitoring vulnerability violations in data traffic between a communications network and a computing device, the method comprising:
receiving, by a universal patching machine, data traffic from the communications network;
determining one or more vulnerability violations in the received data traffic;
modifying the received data traffic by removing the one or more vulnerability violations from the received data traffic; and
sending the modified data traffic from the universal patching machine to the computing device.
27. The method of claim 26 , further comprising identifying which portions of the computing device are to be protected from vulnerability violations in the data traffic.
28. The method of claim 27 , further comprising:
monitoring vulnerability violations in the received data traffic associated with the identified protected portions of the computing device; and
forwarding the received data traffic associated with identified non-protected portions of the computing device to the computing device vice without monitoring vulnerability violations in the received data traffic.
29. The method of claim 27 , wherein the modified data traffic does not include any vulnerability violations associated with the identified protected portions of the computing device.
30. The method of claim 26 , further comprising:
determining whether the received data traffic should be processed at network layers 5, 4, 3, or 2; and
if it is determined that the received data traffic should not be processed at network layers 5, 4, 3, or 2, processing the received data traffic at network layers 6 or 7.
31. A universal patching machine for monitoring vulnerability violations in data traffic flowing between a communications network and a computer network, the universal patching machine comprising:
a packet controller; and
one or more processors programmed to:
receive data traffic from the communications network;
determine one or more vulnerability violations in the received data traffic;
send a modification command to the packet controller that instructs the packet controller to remove the one or more vulnerability violations; and
forward the modified data traffic to a computing device in the computer network.
32. The universal patching machine of claim 31 , wherein the one or more processors are further programmed to receive data identifying which operating systems and applications of the computing device are to be protected by the universal patching machine from vulnerability violations.
33. The universal patching machine of claim 32 , wherein the one or more processors are further programmed to:
determine which patches are not utilized by the computing device; and
update the universal patching machine to include the patches not utilized by the computing device.
34. The universal patching machine of claim 33 , wherein the one or more processors are further programmed to remove patches within the universal patching machine that are utilized by the computing device.
35. The universal patching machine of claim 31 , wherein the packet controller includes data that informs the packet controller whether: 1) the packet controller should output the data traffic received by the universal patching machine without processing the received data traffic; 2) the packet controller should process the received data traffic; or 3) the packet controller should send the received data traffic to the one or more processors for processing.
36. The universal patching machine of claim 35 , wherein the packet controller is configured to process the received data traffic at network layers 5, 4, 3, or 2.
37. The universal patching machine of claim 36 , wherein the patch processor is programmed to process the data traffic at network layers 6 or 7.
38. The universal patching machine of claim 31 , wherein the processor is further programmed to:
determine whether the received data traffic should be processed at network layers 5, 4, 3, or 2; and
if it is determined that the received data traffic should not be processed at network layers 5, 4, 3, or 2, process the received data traffic at network layers 6 or 7.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/605,832 US20130014265A1 (en) | 2005-01-03 | 2012-09-06 | Universal patching machine |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/029,098 US7343599B2 (en) | 2005-01-03 | 2005-01-03 | Network-based patching machine |
US11/974,423 US20080052703A1 (en) | 2005-01-03 | 2007-10-12 | Universal patching machine |
US13/605,832 US20130014265A1 (en) | 2005-01-03 | 2012-09-06 | Universal patching machine |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/974,423 Continuation US20080052703A1 (en) | 2005-01-03 | 2007-10-12 | Universal patching machine |
Publications (1)
Publication Number | Publication Date |
---|---|
US20130014265A1 true US20130014265A1 (en) | 2013-01-10 |
Family
ID=36647992
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/029,098 Active 2026-07-17 US7343599B2 (en) | 2005-01-03 | 2005-01-03 | Network-based patching machine |
US11/974,423 Abandoned US20080052703A1 (en) | 2005-01-03 | 2007-10-12 | Universal patching machine |
US13/605,832 Abandoned US20130014265A1 (en) | 2005-01-03 | 2012-09-06 | Universal patching machine |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/029,098 Active 2026-07-17 US7343599B2 (en) | 2005-01-03 | 2005-01-03 | Network-based patching machine |
US11/974,423 Abandoned US20080052703A1 (en) | 2005-01-03 | 2007-10-12 | Universal patching machine |
Country Status (2)
Country | Link |
---|---|
US (3) | US7343599B2 (en) |
WO (1) | WO2006073832A2 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150160940A1 (en) * | 2013-12-09 | 2015-06-11 | Dspace Digital Signal Processing And Control Engineering Gmbh | Method for changing the software in the memory of an electronic control unit |
US9450974B2 (en) | 2014-03-20 | 2016-09-20 | International Business Machines Corporation | Intrusion management |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7937697B2 (en) * | 2005-05-19 | 2011-05-03 | International Business Machines Corporation | Method, system and computer program for distributing software patches |
US7870547B2 (en) * | 2005-08-10 | 2011-01-11 | Cisco Technology, Inc. | Method and apparatus for managing patchable software systems |
US8677348B1 (en) | 2005-10-17 | 2014-03-18 | Cisco Technology, Inc. | Method and apparatus for determining least risk install order of software patches |
US7984432B2 (en) * | 2006-05-30 | 2011-07-19 | Infineon Technologies Ag | Method for patching a read-only memory and a data processing system comprising a means of patching the read-only memory based on patch contexts |
US8418241B2 (en) | 2006-11-14 | 2013-04-09 | Broadcom Corporation | Method and system for traffic engineering in secured networks |
US8065671B1 (en) * | 2007-08-20 | 2011-11-22 | United States Automobile Association (USAA) | Systems and methods for product updates with provisioning of data items |
US8990796B2 (en) * | 2007-11-16 | 2015-03-24 | Thomas Lamantia | Method of automated operating system deployment for a network of multiple data processors |
US20090132999A1 (en) * | 2007-11-21 | 2009-05-21 | At&T Corp. | Secure and fault-tolerant system and method for testing a software patch |
US8037529B1 (en) * | 2008-03-19 | 2011-10-11 | Symantec Corporation | Buffer overflow vulnerability detection and patch generation system and method |
US8219514B2 (en) * | 2009-01-07 | 2012-07-10 | Oracle International Corporation | Methods, systems, and computer program product for implementing expert assessment of a product |
WO2012035575A1 (en) * | 2010-09-14 | 2012-03-22 | Hitachi, Ltd. | Method and device for eliminating patch duplication |
US8539466B2 (en) | 2011-05-23 | 2013-09-17 | International Business Machines Corporation | Determining suitable insertion points for string sanitizers in a computer code |
US8572750B2 (en) | 2011-09-30 | 2013-10-29 | International Business Machines Corporation | Web application exploit mitigation in an information technology environment |
US20130104119A1 (en) * | 2011-10-24 | 2013-04-25 | Brian Matsuo | Streaming packetized binary patching system and method |
WO2013123376A1 (en) * | 2012-02-15 | 2013-08-22 | The Mathworks, Inc. | Unified state transition table describing a state machine model |
EP2815310B1 (en) | 2012-02-15 | 2016-12-21 | The MathWorks, Inc. | Unified state transition table describing a state machine model |
US20140208428A1 (en) | 2013-01-23 | 2014-07-24 | International Business Machines Corporation | Mitigating security risks via code movement |
US20150113133A1 (en) | 2013-10-21 | 2015-04-23 | Nyansa, Inc. | System and method for observing and controlling a programmable network using closed loop control |
CN105205231B (en) * | 2015-09-06 | 2018-11-09 | 中国电力科学研究院 | A kind of power distribution network Digital Simulation System based on DCOM |
CN106815229A (en) * | 2015-11-30 | 2017-06-09 | 北京计算机技术及应用研究所 | Database virtual patch means of defence |
US10230609B2 (en) | 2016-04-18 | 2019-03-12 | Nyansa, Inc. | System and method for using real-time packet data to detect and manage network issues |
CN107239309B (en) * | 2017-06-06 | 2021-03-02 | 网易(杭州)网络有限公司 | Patch generation method and device, updating method, electronic device and storage medium |
US10666494B2 (en) | 2017-11-10 | 2020-05-26 | Nyansa, Inc. | System and method for network incident remediation recommendations |
US10496395B2 (en) * | 2018-03-07 | 2019-12-03 | Haier Us Appliance Solutions, Inc. | Methods and systems for intelligent software updates of an appliance |
US10798005B2 (en) * | 2018-09-13 | 2020-10-06 | International Business Machines Corporation | Optimizing application throughput |
CN111324491B (en) * | 2020-03-18 | 2024-09-17 | 深圳Tcl数字技术有限公司 | Program bug repair method, device and computer readable storage medium |
US11470107B2 (en) * | 2020-06-10 | 2022-10-11 | Servicenow, Inc. | Matching configuration items with machine learning |
US11451573B2 (en) | 2020-06-16 | 2022-09-20 | Servicenow, Inc. | Merging duplicate items identified by a vulnerability analysis |
CN113239065A (en) * | 2021-06-25 | 2021-08-10 | 深圳市合美鑫精密电子有限公司 | Big data based security interception rule updating method and artificial intelligence security system |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030084329A1 (en) * | 2001-10-31 | 2003-05-01 | Tarquini Richard Paul | Method, computer readable medium, and node for a three-layered intrusion prevention system for detecting network exploits |
US20030145228A1 (en) * | 2002-01-31 | 2003-07-31 | Janne Suuronen | System and method of providing virus protection at a gateway |
US20050015760A1 (en) * | 2003-07-16 | 2005-01-20 | Oleg Ivanov | Automatic detection and patching of vulnerable files |
US20050120243A1 (en) * | 2003-10-28 | 2005-06-02 | Internet Security Systems, Inc. | Method and system for protecting computer networks by altering unwanted network data traffic |
US20060095965A1 (en) * | 2004-10-29 | 2006-05-04 | Microsoft Corporation | Network security device and method for protecting a computing device in a networked environment |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4383298A (en) * | 1980-04-10 | 1983-05-10 | Ciba-Geigy Corporation | Plant maintenance control system |
US5278901A (en) | 1992-04-30 | 1994-01-11 | International Business Machines Corporation | Pattern-oriented intrusion-detection system and method |
JP2501771B2 (en) * | 1993-01-19 | 1996-05-29 | インターナショナル・ビジネス・マシーンズ・コーポレイション | Method and apparatus for obtaining multiple valid signatures of an unwanted software entity |
US5414833A (en) | 1993-10-27 | 1995-05-09 | International Business Machines Corporation | Network security system and method using a parallel finite state machine adaptive active monitor and responder |
US5557742A (en) | 1994-03-07 | 1996-09-17 | Haystack Labs, Inc. | Method and system for detecting intrusion into and misuse of a data processing system |
US5720033A (en) | 1994-06-30 | 1998-02-17 | Lucent Technologies Inc. | Security platform and method using object oriented rules for computer-based systems using UNIX-line operating systems |
US5623600A (en) | 1995-09-26 | 1997-04-22 | Trend Micro, Incorporated | Virus detection and removal apparatus for computer networks |
US5826013A (en) | 1995-09-28 | 1998-10-20 | Symantec Corporation | Polymorphic virus detection module |
US5727146A (en) | 1996-06-04 | 1998-03-10 | Hewlett-Packard Company | Source address security for both training and non-training packets |
US5991881A (en) | 1996-11-08 | 1999-11-23 | Harris Corporation | Network surveillance system |
US5948104A (en) | 1997-05-23 | 1999-09-07 | Neuromedical Systems, Inc. | System and method for automated anti-viral file update |
US5948107A (en) * | 1997-05-28 | 1999-09-07 | Intel Corporation | Method of handling errors in complex inheritance hierarchies |
US5983348A (en) | 1997-09-10 | 1999-11-09 | Trend Micro Incorporated | Computer network malicious code scanner |
US6035423A (en) | 1997-12-31 | 2000-03-07 | Network Associates, Inc. | Method and system for providing automated updating and upgrading of antivirus applications using a computer network |
US6279113B1 (en) | 1998-03-16 | 2001-08-21 | Internet Tools, Inc. | Dynamic signature inspection-based network intrusion detection |
US6321338B1 (en) | 1998-11-09 | 2001-11-20 | Sri International | Network surveillance |
US6499107B1 (en) | 1998-12-29 | 2002-12-24 | Cisco Technology, Inc. | Method and system for adaptive network security using intelligent packet analysis |
US6301668B1 (en) | 1998-12-29 | 2001-10-09 | Cisco Technology, Inc. | Method and system for adaptive network security using network vulnerability assessment |
US6477651B1 (en) | 1999-01-08 | 2002-11-05 | Cisco Technology, Inc. | Intrusion detection system and method having dynamically loaded signatures |
US6487666B1 (en) | 1999-01-15 | 2002-11-26 | Cisco Technology, Inc. | Intrusion detection signature analysis using regular expressions and logical operators |
US6681331B1 (en) | 1999-05-11 | 2004-01-20 | Cylant, Inc. | Dynamic software system intrusion detection |
US6789202B1 (en) | 1999-10-15 | 2004-09-07 | Networks Associates Technology, Inc. | Method and apparatus for providing a policy-driven intrusion detection system |
US6701440B1 (en) * | 2000-01-06 | 2004-03-02 | Networks Associates Technology, Inc. | Method and system for protecting a computer using a remote e-mail scanning device |
US7095529B2 (en) * | 2000-12-22 | 2006-08-22 | Xerox Corporation | Color management system |
US7640434B2 (en) * | 2001-05-31 | 2009-12-29 | Trend Micro, Inc. | Identification of undesirable content in responses sent in reply to a user request for content |
US7523501B2 (en) * | 2003-07-21 | 2009-04-21 | Trend Micro, Inc. | Adaptive computer worm filter and methods of use thereof |
US7694022B2 (en) * | 2004-02-24 | 2010-04-06 | Microsoft Corporation | Method and system for filtering communications to prevent exploitation of a software vulnerability |
-
2005
- 2005-01-03 US US11/029,098 patent/US7343599B2/en active Active
- 2005-12-19 WO PCT/US2005/046392 patent/WO2006073832A2/en active Application Filing
-
2007
- 2007-10-12 US US11/974,423 patent/US20080052703A1/en not_active Abandoned
-
2012
- 2012-09-06 US US13/605,832 patent/US20130014265A1/en not_active Abandoned
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030084329A1 (en) * | 2001-10-31 | 2003-05-01 | Tarquini Richard Paul | Method, computer readable medium, and node for a three-layered intrusion prevention system for detecting network exploits |
US20030145228A1 (en) * | 2002-01-31 | 2003-07-31 | Janne Suuronen | System and method of providing virus protection at a gateway |
US20050015760A1 (en) * | 2003-07-16 | 2005-01-20 | Oleg Ivanov | Automatic detection and patching of vulnerable files |
US20050120243A1 (en) * | 2003-10-28 | 2005-06-02 | Internet Security Systems, Inc. | Method and system for protecting computer networks by altering unwanted network data traffic |
US20060095965A1 (en) * | 2004-10-29 | 2006-05-04 | Microsoft Corporation | Network security device and method for protecting a computing device in a networked environment |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150160940A1 (en) * | 2013-12-09 | 2015-06-11 | Dspace Digital Signal Processing And Control Engineering Gmbh | Method for changing the software in the memory of an electronic control unit |
US9450974B2 (en) | 2014-03-20 | 2016-09-20 | International Business Machines Corporation | Intrusion management |
Also Published As
Publication number | Publication date |
---|---|
US20060156032A1 (en) | 2006-07-13 |
WO2006073832A3 (en) | 2007-11-22 |
US7343599B2 (en) | 2008-03-11 |
WO2006073832A2 (en) | 2006-07-13 |
US20080052703A1 (en) | 2008-02-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7343599B2 (en) | Network-based patching machine | |
US10609063B1 (en) | Computer program product and apparatus for multi-path remediation | |
US8037532B2 (en) | Application protection from malicious network traffic | |
US20220210125A1 (en) | Methods and Systems for Efficient Network Protection | |
CN113228585B (en) | Network security system with feedback loop based enhanced traffic analysis | |
US8261355B2 (en) | Topology-aware attack mitigation | |
US8074277B2 (en) | System and methodology for intrusion detection and prevention | |
JP5845258B2 (en) | System and method for local protection against malicious software | |
US6192477B1 (en) | Methods, software, and apparatus for secure communication over a computer network | |
US7774832B2 (en) | Systems and methods for implementing protocol enforcement rules | |
US20060203815A1 (en) | Compliance verification and OSI layer 2 connection of device using said compliance verification | |
US9928359B1 (en) | System and methods for providing security to an endpoint device | |
US11665138B2 (en) | System and method for automatic WAF service configuration | |
US20080235800A1 (en) | Systems And Methods For Determining Anti-Virus Protection Status | |
WO2007032967A1 (en) | Distributed network security service | |
US11803647B2 (en) | Computer system vulnerability lockdown mode | |
Machie et al. | Nimda worm analysis | |
Cisco | Cisco Secure Intrusion Detection System Sensor Configuration Note Version 3.0 | |
Seifried | Linux Administrators Security Guide | |
Arora et al. | Linux Hardening | |
Miller | Microsoft IIS Unicode Exploit | |
Taylor | Final CRADA Report: Siemens-INL SCADA System Assessments: Assessment 1: Spectrum Power TG Assessment 2: Spectrum Power 3 | |
ADM | FIPS 140-2 Security Policy | |
Pravail | 2100 Series Appliances Version 5.4 | |
Headquarters | Security Best Practices for Cisco Intelligent Contact Management Software Release 6.0 (0) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |