Abstract:
A system and method analyzes queries in a computer network, and identifies problem-causing queries that could be harmful to the system. If a query does not match any queries in a database, the query is transmitted to its destination. If a query matches a query in the database, that query is blocked from transmission to the destination. If a query is transmitted to its destination, and it is later determined that query caused a problem on that destination, that query is added to the database of queries. In one embodiment, a query that does not cause any problems is written to a pool of current up-to-date backup databases that may be used if the main system goes down. In another embodiment, the system tests variants of a query that caused a problem at the destination to attempt to discover other queries that could cause a problem.

Description:
[0001]     Embodiments of the invention were developed in part with funds from the United States government. The government may have certain rights in one or more embodiments of the invention.  
       TECHNICAL FIELD  
       [0002]     Various embodiments relate to computer network security, and in an embodiment, but not by way of limitation, to self-diagnostic and regenerative security in computer network systems.  
       BACKGROUND  
       [0003]     While much attention is paid to breaches of computer and network systems in both the lay and technical presses, such breaches of security are not altogether new, and indeed have been around since the inception of computer networks. To counter such security breaches, many systems, especially on the server side, install firewalls to prevent harmful content from entering the system. While helpful, such firewalls and related software and tools take up precious resources on the server side, and lack the ability to evolve and learn from attacks on the system.  
         [0004]     The art is therefore in need of a different approach for protecting the integrity of computer network systems.  
       SUMMARY  
       [0005]     In one or more embodiments, a proxy server is installed between a system from which a message or query originates and a system to which such a message or query is destined. The proxy server receives the query, and checks that query against a database of queries that are known to have caused problems on the receiving system in the past. If the query is not in the database, the proxy server transmits the query to the receiving system. After sending the query, the proxy server determines if the query did or did not cause a problem on the receiving system. If it did not cause a problem, that query may be saved in a backup database. If the query did cause a problem, the system will test, experiment with, and analyze the query in an attempt to learn from that query, so that the system can potentially avoid other problems in the future. 
     
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0006]      FIG. 1  illustrates an example embodiment of a computer network security system.  
         [0007]      FIG. 2  illustrates an example embodiment of a method to prevent the transmission of potentially harmful queries or messages in a computer network.  
         [0008]      FIG. 3  illustrates an example embodiment of a computer system upon which an embodiment of the present invention may operate. 
     
    
     DETAILED DESCRIPTION  
       [0009]     In the following detailed description, reference is made to the accompanying drawings that show, by way of illustration, specific embodiments in which the invention may be practiced. These embodiments are described in sufficient detail to enable those skilled in the art to practice the invention. It is to be understood that the various embodiments of the invention, although different, are not necessarily mutually exclusive. For example, a particular feature, structure, or characteristic described herein in connection with one embodiment may be implemented within other embodiments without departing from the scope of the invention. In addition, it is to be understood that the location or arrangement of individual elements within each disclosed embodiment may be modified without departing from the scope of the invention. The following detailed description is, therefore, not to be taken in a limiting sense, and the scope of the present invention is defined only by the appended claims, appropriately interpreted, along with the full range of equivalents to which the claims are entitled. In the drawings, like numerals refer to the same or similar functionality throughout the several views.  
         [0010]      FIG. 1  illustrates an example embodiment of a system architecture  100  that provides security to computer systems and networks. The security provided by the system  100  may protect databases, servers, or any other component of a system or network. The embodiment of  FIG. 1  is directed to a client-server system, but embodiments of the invention are not limited to client-server systems. For example, other embodiments may involve system architectures such as peer-to-peer systems. However, for ease of explanation and understanding, the present invention will be herein described in relation to a client-server system.  
         [0011]     Referring specifically to the embodiment of  FIG. 1 , the system  100  includes a client system  105  and a server system  110 . The client system  105  may send a query to the server system  110 . The server system  110  has access to one or more databases  112 . The server system  110  may be an E-commerce server site, a database for an email system, or another type of server site that can be part of a network. That is, embodiments are not limited to the protection of databases, but may protect any service such as email, web, domain-name servers, or any complete groups or combinations of services or E-commerce sites. A proxy server  115  may reside between the client machine  105  and the server system  110 . The proxy server  115  has access to a database  113  of queries that have previously caused problems in the system  100 , and a log file  114  that records the traffic that passes through the proxy server  115 . The proxy server  115  may further be coupled to a controller module  120  and a learner module  125 . In at least one embodiment, the controller module  120  and the learner module  125  may be coupled to each other. The controller module  120  and the learner module  125  may further be coupled to a replicator module  130 . The replicator module  130  may be coupled to backup databases  135 . The backup databases  135  mirror the databases  112  associated with the server system  110 .  
         [0012]      FIG. 2  illustrates an embodiment of a process  200  that provides security to the system  100  of  FIG. 1 . All requests from the client side such as client system  105  are transmitted through the proxy server  115  at operation  205  before being transmitted to the server system  110 . The proxy server  115  receives the query from the client system, and at operation  210  compares the query against queries that are stored in the problem-causing query database  113 . When a proxy server is initially implemented, it has no prior history and the problem-causing query file  113  is empty. If the system  100  determines that the query is not a problem-causing query at operation  215 , i.e., the present query is not in the problem-causing query file  113 , the proxy server sends that query to the server system  110  at operation  220 .  
         [0013]     If the incoming query is found in the problem-causing query database  113 , the proxy server  115  at operation  225  blocks the query from being sent to the server system  110 . In an embodiment, a message is sent to the client system  105  informing the client system as to the action taken by the proxy server  115 .  
         [0014]     The server system  110  receives a query and acts upon it. In an embodiment, the proxy server  115  will receive from the server system  110  either a response from the query or a timeout. If the proxy server  115  receives a response from the server system  110  at operation  230 , the proxy server  115  may conclude that the query did not cause a problem on the server system  110 , and at operation  235  may transmit the results of the query to the client machine  105 . However, if the proxy server  115  receives a timeout from the server system  110 , the proxy server  115  may conclude that the query caused a problem on the server system  110 . This problem could be in the server itself, the database on the server side, or some other component of the server system. In another embodiment, after the proxy server  115  sends a query to the server system  110 , the proxy server  115  then sends a message to the server system  110  to see if the server system is still up and running. In this embodiment, the proxy server  115  can use the results/response of this test message to determine if the server system  110  has had a problem.  
         [0015]     After determining whether the query did or did not cause problems on the server system  110 , the proxy server  115  at operation  240  transmits the query to the controller module  120 . In an embodiment, the controller module  120  has several functions. A first function at operation  250  sends queries that caused no problems on the server system  110  to the replicator module  130 . The replicator module  130  replicates these non-problem-causing queries by writing them to the backup database  135 . In this way, the backup database  135  mirrors the server system database  112 .  
         [0016]     The backup database  135  is used by the system  100  if the server system  110  ever fails (whether it is the result of a problem-causing query or some other reason). If the server system  110  fails, the proxy server  115  detects this failure, and it sends a message to the controller module  120 . The controller module  120  then switches the TCP connection for the server system  110  to one of the backup databases  135 , and informs the proxy server  115  of this new connection. Thereafter, when a new query comes into the system  100 , the TCP address for the backup system is available to the proxy server  115 , and the proxy server  115  sends the new query onto the backup system. The proxy server  115  treats the backup just as the original server system, and screens for problem-causing queries before sending the message to the backup system.  
         [0017]     If the query caused a problem on the server system  110 , the controller module  120  at operation  260  sends this problem-causing query to the learner module  125 . In one embodiment, the learner module  125  analyzes the problem-causing query to determine if it can identify any hex patterns that may also cause a server system to experience problems. The learner server  125  does this by executing one or more test processes that are, in an embodiment, created by the controller  120  or the replicator  130 . These test processes are meant to imitate server systems, so that if the test system has a problem with a generated query, it may be assumed that the server system would have a problem with such a query. In an embodiment, the learner server  125  reads training data, experimenting on that data with the problem-causing query, and generating rules that may be applied to future queries. For example, a certain byte of the query may have caused the problem on the server system. If that is the case, the learner module  125  may try different values for that byte in a test program to determine if these other values in that byte position may cause a problem on a server system. If other queries or data are found to be a potential problem by the learner module  125 , rules are generated, and these rules are sent to the problem causing database  113 . Thereafter, if the same query that caused a problem in this testing enters the proxy server  115 , that query will be blocked from transmission to the server system  110 .  
         [0018]     The following is a specific example of an attack on a network and system, the effects of that attack, and a manner in which an embodiment of the invention may deal with that attack.  
         [0019]     For example, MySQL version 3.23.49 is vulnerable to attacks that set the password of a user account to a string length greater then  255 . Consequently, if a known user logs on, creates a large password, and then sets the new password, this will cause the MySQL server to overflow the buffer used to store a user password and crash the MySQL—thereby creating a denial of service (DOS). To further illustrate this potential problem, the following SQL commands (to create a large password from random characters and prepare the password field) are considered: 
    1.“ALTER TABLE user CHANGE COLUMN Password LONGTEXT” (find the user to exploit—in this case the superuser account root)     2. “SELECT user FROM mysql.user WHERE user!=‘root’LIMIT 0,1” (the new big password and the user to be targeted is now updated)     3. “UPDATE user SET Password=“bigsetofrandomchars” (now commit all the changes to crash the server)     4. “FLUSH PRIVILEDGES”   
 
         [0024]     When CORTEX is running the attacker would connect to the proxy server and begin with step 1 of the attack working its way through each step until the end. The proxy will take each command and check to see if this command caused the MySQL server to fail or not. If it did cause harm to the system then the query is dropped immediately. If not it will take each command and send it to a tester module and then test if there were any bad effects of the command to the MySQL server. In this case, using the example, the first query will come into the proxy server, search its current set of rules, and find that it has not seen this query before. The proxy server will then send this query to the tester module and see what effect it has on the MySQL server. This process will happen the same way for the first two commands in the set of four commands. When it encounters the third command (the update), it will cause the server to crash. CORTEX will take the exact command and write it to a log file that the proxy server uses to detect future attacks like this. The update query will be sent to the controller telling it what query was bad. The controller having a model of threats to the system will choose to take several actions. Those actions will be to first send the bad query to the learning system which will try and generalize the bad query for possibly more bad queries that are slightly different but have the same effect. In this case, since the size of the password buffer is being exploited, the learning system will ask the replicator component for a test MySQL database on which to test its hypotheses. In parallel with this action, the controller will send a message to the replicator as well, and ask it to switch to a backup MySQL from the pool of available servers so CORTEX can continue to service queries (i.e., the fourth command in the attack sequence). The replicator will then switch to a new lead MySQL server, and inform the proxy server that from now on send all queries to this new test module instead of the old broken one. The replicator, after completing the switch, will then remove the bad MYSQL server from the pool and rebuild it using the most up to date copy from the pool of available servers. The learning component, as it completes each experiment, will incrementally update the log file that the proxy server uses. The learner will use a binary search to try to determine what a valid password length should be. As it narrows the set of possible password lengths, the proxy server log file will be updated.  
         [0025]     This is an example of how each query flows through CORTEX, and the choices it may make. If the exact same set of commands were run once again after the learning was complete, CORTEX will only process the first two commands. As soon as it saw the third command, it would match the proxy server log file, immediately drop the query, and prevent the lead MySQL test module from going offline. The result is that the system has the ability to learn, detect zero day attacks (attacks that have not been seen before), recover from the attack by rebuilding the damaged server, prevent the exact same attack, and possibly prevent a large set of generalized variants of the attack in the future.  
         [0026]      FIG. 3  shows a diagrammatic representation of a machine in the exemplary form of a computer system  300  within which a set of instructions, for causing the machine to perform any one of the methodologies discussed above, may be executed. In alternative embodiments, the machine may comprise a network router, a network switch, a network bridge, Personal Digital Assistant (PDA), a cellular telephone, a web appliance or any machine capable of executing a sequence of instructions that specify actions to be taken by that machine.  
         [0027]     The computer system  300  includes a processor  302 , a main memory  304  and a static memory  306 , which communicate with each other via a bus  308 . The computer system  300  may further include a video display unit  310  (e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)). The computer system  300  also includes an alpha-numeric input device  312  (e.g. a keyboard), a cursor control device  314  (e.g. a mouse), a disk drive unit  316 , a signal generation device  320  (e.g. a speaker) and a network interface device  322 .  
         [0028]     The disk drive unit  316  includes a machine-readable medium  324  on which is stored a set of instructions (i.e., software)  326  embodying any one, or all, of the methodologies described above. The software  326  is also shown to reside, completely or at least partially, within the main memory  304  and/or within the processor  302 . The software  326  may further be transmitted or received via the network interface device  322 . For the purposes of this specification, the term “machine-readable medium” shall be taken to include any medium that is capable of storing or encoding a sequence of instructions for execution by the machine and that cause the machine to perform any one of the methodologies of the present invention. The term “machine-readable medium” shall accordingly be taken to included, but not be limited to, solid-state memories, optical and magnetic disks, and modulated electromagnetic waves.  
         [0029]     Thus, a system and method for motion detection in video data has been described. Although the present invention has been described with reference to specific exemplary embodiments, it will be evident that various modifications and changes may be made to these embodiments without departing from the broader spirit and scope of the invention. Accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense.  
         [0030]     In the foregoing detailed description of embodiments of the invention, various features are grouped together in one or more embodiments for the purpose of streamlining the disclosure. This method of disclosure is not to be interpreted as reflecting an intention that the claimed embodiments of the invention require more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive subject matter lies in less than all features of a single disclosed embodiment. Thus the following claims are hereby incorporated into the detailed description of embodiments of the invention, with each claim standing on its own as a separate embodiment. It is understood that the above description is intended to be illustrative, and not restrictive. It is intended to cover all alternatives, modifications and equivalents as may be included within the scope of the invention as defined in the appended claims. Many other embodiments will be apparent to those of skill in the art upon reviewing the above description. The scope of the invention should, therefore, be determined with reference to the appended claims, along with the full scope of equivalents to which such claims are entitled. In the appended claims, the terms “including” and “in which” are used as the plain-English equivalents of the respective terms “comprising” and “wherein,” respectively. Moreover, the terms “first,” “second,” and “third,” etc., are used merely as labels, and are not intended to impose numerical requirements on their objects.  
         [0031]     The abstract is provided to comply with 37 C.F.R. 1.72(b) to allow a reader to quickly ascertain the nature and gist of the technical disclosure. The Abstract is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims.