System and method for runtime attack prevention
Patent Information
- Application Number
- DE112009002738
- Authority / Receiving Office
- DE · DE
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2008-11-19
- Filing Date
- 2009-11-19
- Publication Date
- 2025-10-16
- Estimated Expiration
- 2029-11-19
Smart Images

Figure 00000000_0000_ABST
Abstract
Description
REFERENCE TO RELATED APPLICATIONS
[0001] This patent application claims priority under 35 USC § 119 to United States Provisional Patent Application No. 61 / 199,728, entitled "Virtual Vault," filed November 19, 2008. The entire disclosure of the priority application identified above is hereby incorporated by reference in its entirety. FIELD OF THE INVENTION
[0002] This invention relates generally to the field of computer and network security, and more specifically to identifying malicious programs and code and preventing their execution. BACKGROUND OF THE INVENTION
[0003] For decades, hackers have sought ways to install malicious programs ("malware") on computers or networked devices. Malware often acts to damage or otherwise disrupt the functionality of the computer on which it is installed (the "host"). Malware can also provide the hacker with access to sensitive information residing on the host computer and the network to which the host is connected. Malware can also use the host computer to distribute additional malware by hijacking the host's email and other network communications facilities.
[0004] The traditional method for installing malicious programs is to hide them on a host computer within an otherwise benign-seeming program or document. For example, malware can be included in an email message and can automatically run after opening the email message or viewing images within the message. Malware can also be associated with a program that the host computer user has intentionally downloaded and / or installed.
[0005] The primary method for detecting these threats is traditionally to identify signatures associated with various malware programs. Signatures are typically a sequence of executable characters identified after an attack has occurred and reported to specially trained analysts. The analysts identify the malware and an associated signature. The analysts then develop software to identify the signature in executable code or network traffic. This is the typical operation of most conventional antivirus, anti-spyware, and intrusion detection systems.
[0006] Hackers are well aware of these traditional defenses and have developed new attacks designed to use new technologies to bypass signature-based detection. One such attack uses executable internet code, such as JavaScript. JavaScript is a programming language designed to be embedded in Hypertext Markup Language (HTML) pages. JavaScript provides access to executable objects outside the web browser. For example, JavaScript allows a web page to open a document stored on the host's hard disk and modify the document. JavaScript also allows the creation of data structures in the host computer's memory. Because JavaScript is a scripting language, it is not compiled but is transferred to the end user's web browser as text, where it is executed.
[0007] These features provide hackers with a gateway they can exploit. For example, a given operating system or web browser may be known to generate an array of a certain size, allowing a hacker to access particularly sensitive areas of computer memory. JavaScript enables the creation of such an array. Creating data structures requires a certain, well-known syntax, so signature-based detection may still be possible. However, because programmers have a great deal of flexibility in the names they give to variables and data placed within the array, signature-based detection becomes much more difficult, if not impossible, because the attack is not visible until the malicious software is already running on the host computer.
[0008] However, to the extent that signature-based detection would be possible in this hypothetical example, languages like JavaScript offer hackers additional ways to conceal signature-based detection schemes. In particular, JavaScript provides runtime evaluation of strings, which can then be executed. For example, assume that the function call document.wright ("hack") is a known exploit. A hacker can use the features of JavaScript's runtime evaluation to obscure the exploit as follows. var X = "ha"; var Y = "k"; var Z = "doc"; var A = "ument.wr"; var B = "ite("; var C = ")"; var D = "c"; eval (Z+A+B +X+D+Y+C);
[0009] The code would evaluate the string as document.wright ("hack") and execute the malicious code. Compounding the problem is that JavaScript places few restrictions on variable names and the order in which they appear. Therefore, hackers are limited only by their imagination in how they obfuscate the paths their malicious code takes. Furthermore, because JavaScript can be automatically generated the moment a web page is requested, obfuscation mechanisms such as those described above can be randomly obfuscated in response to a request in such a way that each attack will have a signature different from the previous one. Accordingly, conventional signature-based detection is difficult, if not impossible, for this new breed of web attack.
[0010] Another problem with such attacks is that they can be hidden in code received from otherwise trusted sources. For example, a widely used website may sell banner space on its website to advertisers. The advertisement that appears in that space is typically loaded by the advertiser or from a third-party ad server when an end user browses the website. The ad may also be loaded onto servers associated with the website before the end user browses the website, allowing the ad to be delivered to the user without connecting to an external server as the end user browses the website. Despite contractual controls, the company that operates the website may have little control over the content of the ad.If malicious code is placed in the ad, the website cannot know this until it has already served millions of infected pages. Therefore, traditional methods of blocking traffic from untrusted sources or only allowing traffic from trusted sources may not be sufficient to prevent attacks.
[0011] The traditional method for preventing such attacks is to disable the execution of internet-based executable code, including but not limited to JavaScript, Adobe Flash, and Microsoft Silverlight. However, preventing the execution of such code may cause certain internet pages to malfunction and may impair the powerful internet content that this code makes available.
[0012] The known state of the art includes, among others, the patent publications US 2007 / 0 136 811 A1 and US 2007 / 0 124 687 A1 as well as the literature references “Safe, Untrusted Agents using Proof-Carrying Code” (Necula, George C.; Lee, Peter, in: Mobile Agents and Security, Springer, 1998, pp. 61-91, DOI: 10.1007 / 3-540-68671-1_5) and “Web Services Security” (Atkinson, Bob et al., IBM developerWorks, 2002, URL: https: / / www.cgisecurity.com / ws / ws-secure.pdf).
[0013] Accordingly, there is a need for a system that can identify and prevent attacks delivered by executable code. A further need exists for a system that can identify and prevent such attacks, even when they are disguised so that the presence of the attacks cannot be detected until runtime. An additional need exists for reputable website operators to protect visitors to their sites from attacks hidden in the content published through their sites, such as banner ads controlled by a third-party advertiser. SUMMARY OF THE INVENTION
[0014] The present invention can satisfy the needs identified above by providing a system and method for runtime attack prevention. In one aspect of the invention, a method is provided whereby content intended for a computer can be received. The content can be configured to access at least one function that exposes a vulnerability of the computer. Protection measures that override the function or modify the execution of the content can then be added to the content. The content, including the protection measures, is then sent to the computer.
[0015] Once the computer receives the content and the protection measures, the computer executes the content. If the content calls the function that exposes the computer's vulnerability, the protection measure is executed. After the protection measure is executed, the arguments that the content attempted to introduce into the function are analyzed, and a determination is made as to whether these arguments pose a threat. If it is determined that the arguments pose a threat, the execution of the content is aborted without executing the function. If, on the other hand, the arguments pose no threat, the vulnerable function is allowed to execute normally.
[0016] If it is determined that the arguments passed to the function pose a threat and the execution of the content is terminated, an alert can be sent to the network administrator. An alert can also be sent to an end user or a third party.
[0017] The method may consider a computing environment associated with the computer when adding protection measures. The computing environment may include information related to the computer's operating system, the type and version of the web browser running on the computer, and / or the applications installed on the computer. The method may then identify protection measures consistent with that of the computing environment and add those protection measures to the content. The method may further consider the type of content, which may include JavaScript, Flash, and Silverlight, when adding the protection measures. The method may identify protection measures consistent with the type of content and add those protection measures to the content.
[0018] In another aspect of the invention, a system for preventing attacks on a computer during runtime is provided. The system includes a first computer configured to receive content. A protection engine is connected to the first computer and is configured to intercept the content and add the protection measures to the content. The protection measures override the function accessed by the content so that the protection measure is executed when the content calls the function. The protection measures can be configured to determine whether the arguments passed by the content to the function constitute an attack. The protection measures can be further configured to stop executing the content after determining that the arguments constitute an attack.The protection measures can also modify the execution of the content to thwart attacks that depend on certain characteristics of the content's execution. The protection measures can further be configured to transmit an alert to the end user, the network administrator, and / or another third party after determining that the call to the function constitutes an attack.
[0019] In yet another aspect of the invention, an additional method for preventing attacks on a computer during runtime is provided. In the method, a remote server receives a request for executable content from a computer. Protection measures are added to the content, the protection measures overriding the function accessed by the content. The protection measures and the content are then transferred to the computer.
[0020] The computer then executes the content and the protection measures. The protection measures determine whether the arguments the content passes to the function pose a threat to the computer. In response to determining that the arguments pose a threat to the computer, the protection measures terminate the execution of the content. The protection measures can further modify the execution of the content to thwart attacks that depend on certain characteristics of the content's execution. The protection measures can further alert an end user, a network administrator, or a third party about the threat.
[0021] Additional aspects, objects, features, and advantages of the invention will become apparent to those skilled in the art after considering the following detailed description of exemplary embodiments. For a more complete understanding of the exemplary embodiments of the present invention and their advantages, reference is now made to the following description in conjunction with the accompanying drawings described below. SHORT DESCRIPTION OF THE DRAWINGS The Fig. 1 is a block diagram illustrating a network structure implementing a runtime attack prevention system according to an exemplary embodiment of the present invention. The Fig. 2 is a flowchart illustrating an exemplary method for using the runtime attack prevention system of the Fig. 1 for implementing protective measures in network traffic. The Fig. 3 is a flowchart illustrating an exemplary method for generating protection measures using the runtime attack prevention system of the Fig. 1 represents. The Fig. 4 is a flowchart illustrating an exemplary method for deploying protection measures into a network using the runtime attack prevention system of the Fig. 1 represents. The Fig. Figure 5 is a flowchart illustrating an exemplary method for preempting protective measures. The Fig. Figure 6 is a flowchart illustrating an example method for executing protected content for runtime attack prevention. The Fig. 7 is a block diagram illustrating a network structure for implementing a runtime attack prevention system according to a second exemplary embodiment of the present invention. The Fig. 8 is a flowchart illustrating an exemplary method for deploying protection measures into a server using the runtime attack prevention system of the Fig. 7 represents. The Fig. 9 is a block diagram illustrating a network structure for implementing a runtime attack prevention system according to a third exemplary embodiment of the present invention. The Fig. 10 is a flowchart illustrating an exemplary method for incorporating protection measures into an end user's computer using the runtime attack prevention system of the Fig. 9 represents. DETAILED DESCRIPTION OF EXEMPLARY EMBODIMENTS
[0022] The inventive runtime attack prevention system can intercept network traffic containing executable content intended for an end user or another agent or device that consumes the content from the network. The end user's computer, also referred to as the host computer, exposes a number of functions that the content can access. Some of these functions may reveal vulnerabilities associated with the computer, its operating system, or other applications installed on the computer. After intercepting the content, the inventive system adds protections to the content that override (or "wrap") the functions. The protections are executed when the content attempts to call the functions exposed by the computer.As used herein, the term computer refers to workstations, such as desktop computers, that are connected to an external network, such as the Internet. The term computer also refers to devices capable of operating on any network, having a processor or controller connected to a storage device, either directly or through a network, and capable of receiving executable code over a network and executing that code, including laptop computers, portable computers, mobile phones, personal digital assistants (PDAs), portable audio players, portable video players, and global positioning systems.The term "computer" as used throughout this application is used simply for convenience and is intended to include any computer or networked device as described above.
[0023] The protection measures are configured to determine whether the content contains a threat to the computer based on arguments that the content of the function attempted to bypass or other information (including state information such as the number of times a particular function has been called). The protection measures can also modify the execution of the content to thwart attacks that depend on a particular characteristic of the content's execution. On the other hand, if the protection measures determine that a particular function call does not pose a threat, the function can be allowed to execute normally (i.e., as called by the content). The protection measures can further alert the end user, the network administrator, or a third party about the threat.Implementing protections in network-delivered executable content before the content is executed can prevent attacks targeting exposed functionality hidden in the content.
[0024] Before adding the protections, the inventive system can consider certain aspects of the content and the requesting computer to help streamline the process. For example, if the request for content was sent from a specific version of a web browser, the system can simply add protections to the content specific to that particular web browser. Similarly, if the content is a specific type of executable code (e.g., JavaScript), the system can only add protections appropriate for JavaScript content.
[0025] Now referring to the drawings, in which like reference numerals refer to like elements, the Fig. 1 depicts a block diagram of a network structure implementing a runtime attack prevention system 100 according to an exemplary embodiment of the present invention. One or more end users 102 operate computers within the network.
[0026] End users 102 request content from a remote server 108 via their workstations over the network. In one exemplary embodiment, the request occurs when end user 102 opens a web browser on their computer, such as Microsoft Internet Explorer, Mozilla Firefox, Mozilla Flock, Google Chrome, Opera, or Apple Safari, and browses to a network address. The end user's 102 computer sends the request to a proxy server 104 or another device on the network, such as a router, which evaluates the request and forwards the request to a firewall or intrusion prevention system 106, which then forwards the request to remote server 108.
[0027] The remote server 108 receives the request and, in response, generates content that is returned to the end user 102. In an exemplary embodiment, the remote server 108 is a World Wide Web server that stores various types of content that can be presented to the end user 102 on their computer. In this embodiment, the content consists of ASCII-formatted HTML (hyper-text markup language) code that can be rendered by the browser of the end user 102. The content may also consist of binary-encoded information, such as images. The images may be stored in a number of conventional formats, such as the Joint Photographic Experts Group Format (JPEG or JPG), the Graphics Interchange Format (GIF), the Tagged Image File Format (TIFF), the Portable Document Format (PDF), or other image formats that can be transmitted over a network.
[0028] The content may further consist of code that can be executed by a browser or another application capable of executing the code on the end user's computer 102. Several standards exist for delivering executable code to browsers, including JavaScript, Adobe Flash and its associated scripting language ActionScript, and Microsoft Silverlight. JavaScript, for example, is represented by ACSII program instructions that are executed by the browser upon receipt.
[0029] The remote server 108 forwards the content response back to the end user 102. However, before the content reaches the end user 102, it must pass through the firewall / intrusion detection system 106. The firewall 106 is conventionally configured to block unwanted network traffic based on a set of easily identifiable characteristics, such as the source or destination address of the traffic. Assuming the response successfully passes the firewall 106, it can be further examined by an intrusion detection system (IDS), which is typically configured to apply additional, more stringent tests to the network traffic in an effort to identify (and prevent) threats. For example, an IDS may store information and signatures related to the content of the network traffic to identify traffic that matches patterns associated with known attacks.
[0030] Assuming the response successfully passes the IDS, the response is transmitted to the proxy server 104. In a conventional network, the proxy server 104 stores information related to the end user 102 who sent the request that triggered the response and forwards the response to the computer of the corresponding end user 102. However, in an exemplary embodiment of the present invention, the protection engine 102 intervenes in this process and adds an additional layer of protection for the end user 102.
[0031] In an exemplary embodiment, the protection engine 112 operates on the same server that runs the proxy server 104. However, in an alternative embodiment, the protection engine 112 may be a completely separate server configured to receive content from the proxy server 104 before the proxy server 104 forwards the content back to the end user 102. In yet another exemplary embodiment, the protection engine 112 may be located anywhere within the network data path. For example, the protection engine 112 may be located in front of the firewall / IDS 106, between the firewall / IDS 106 and the proxy server 104, or between the proxy server 104 and the end user 102. The final deployment of the protection engine 112 does not need to be in a specific location and may depend on a number of factors according to the topology of the particular network.
[0032] Referring again to the exemplary embodiment in which the protection engine 112 is associated with the proxy server 104, when the response passes through the proxy server 104, the protection engine 112 intercepts the response. The protection engine 112 receives the response and determines whether the response includes a type of content that may carry an attack. In an exemplary embodiment of the present invention, the protection engine 112 is configured to recognize text or other signals within the response that are intended to notify the end user's browser of the presence of a particular type of content. For example, if the response includes JavaScript, then the response will include a tag, such as " <script type="„text / javascript"">". In ähnlicher Weise wird, falls die Antwort Flash-Inhalte (Blitzinhalte) enthält sie ein Kennzeichen, wie etwa „<object data = „movie.swf" type = „application / x-shockwave-flash">" enthalten. Nach Erhalt eines solchen Kennzeichens (oder anderer ähnlicher Kennzeichen, die anderen Typen ausführbarer Inhalten zugeordnet sind), wird die Schutzmaschine 112 erkennen, dass die Antwort Inhalte enthält, die einen Angriff tragen können.
[0033] Sobald die Schutzmaschine 112 erkennt, dass die Antwort von dem Typ Inhalt ist, der einen Angriff tragen kann, stellt die Schutzmaschine 112 Schutzmaßnahmen den Inhalten voran. In einer beispielhaften Ausführungsform sind die Schutzmaßnahmen Codes, die vor den möglicherweise schädlichen Code ausgeführt werden und stellen eine Barriere gegen in dem Code versteckte Angriffe bereit. Beispielhafte Schutzmaßnahmen setzen die Kernfunktionen (core functions) der neuen Funktionalität außer Kraft, die konfiguriert ist, um die Funktionalität der Inhalte zu beobachten und um Angriffe anzuzeigen, bevor der Kernfunktion erlaubt wird, abzulaufen. Der Ausdruck „außer Kraft setzen" zeigt an, dass die Schutzmaßnahmen die normale Funktionalität der Kernfunktion, wie hierin beschrieben, ersetzen. Der Term ist beabsichtigt irgendeine Technik des Ersetzens oder Manipulierens der existierenden Funktionalität der Kernfunktionalität zu umfassen, einschließlich der „Umhüllung" („wrapping") der Kernfunktion.
[0034] JavaScript ist ein Beispiel einer Sprache bei der auf Kernfunktionen zugegriffen werden kann, um Angriffe zu erlauben und die auch außer Kraft gesetzt werden können, um gegen Angriffe zu schützen. Als Beispiel umfasst JavaScript eine Funktion die document . wright (< arguments >) genannt wird, um möglicherweise Vorteile von Exploit-Sicherheitsschwächen in einen Internetbrowser zu ziehen. Schutzmaßnahmen können die document . wright Funktion außer Kraft setzen, wobei den Schutzmaßnahmen Gelegenheit gegeben wird, um die Argumente zu analysieren, die in die Funktion eingefügt werden, vor dem Ausführen der document . wright Kernfunktion. In dieser beispielhaften Ausführungsform kann die document . wright Kernfunktion außer Kraft gesetzt werden, in dem ihr ein neues Objekt oder eine neue Variable zugewiesen wird (zum Beispiel document . wright . old), wenn die Internetseite zum ersten Mal geladen wird. Auf diese Weise wird die original document . wright Funktion document. wright.old. Wenn dann die Inhalte document.wright aufrufen, wird die Schutzmaßnahme ausgeführt, die dann die Kernfunktion ausführt, wenn kein Angriff angezeigt wird.
[0035] Eine Pseudocodedarstellung einer Schutzmaßnahme für document . wright wird wie folgt dargelegt: var document.wright.old = document.write; document.write(string input) { if (analyze_for_attacks (input) = true) { alert; terminate javascript;} else { document.write.old (input);
[0036] Wie der oben angegebene beispielhafte Pseudocode anzeigt, wird, wenn JavaScript in die empfangenen Inhalte einen Aufruf von document . write empfängt, anstatt des direkten Ablaufs der Funktion der Browser des Endnutzers 102 die Schutzmaßnahme ablaufen lassen. Die Schutzfunktion analysiert die Argumente nach Bedrohungen, die die Inhalte versuchen an document . write zu übergeben. Falls die Argumente eine Bedrohung darstellen, alarmiert die Funktion den Nutzer von der Bedrohung und beendet die Ausführung der Funktion ohne jemals den Kern der document . write Funktion aufzurufen. Somit wird der Angriff niemals auf dem Computer des Endnutzers 102 ausgeführt. Falls die Argumente auf der anderen Seite keine Bedrohung darstellen, wird die document . write . old Funktion aufgerufen, die der Kern document . write Funktion erlaubt, normal ausgeführt zu werden.
[0037] Obwohl das obige Beispiel die document . write () Funktion außer Kraft setzt, können Schutzmaßnahmen den Inhalten hinzugefügt werden, die irgendeine Funktion außer Kraft setzen, einschließlich Funktionen, die den Applikationen zugeordnet sind, die getrennt von dem Browser des Endnutzers 102 ausgeführt werden. In der Tat können bei vielen Gelegenheiten die Fähigkeit einer Scriptsprache getrennte Applikationen durch den Browser zu starten zu zusätzlichen Wegen für Angriffe führen, da viele Applikationen Schwächen enthalten, die ausgenutzt werden können. Dementsprechend sind Schutzmaßnahmen nicht nur auf Browserfunktionen begrenzt, viel mehr sind sie für irgendeine Funktion verfügbar, die durch ausführbaren Code oder ein Script innerhalb der Antwort aufgerufen werden können. Ferner ist die Fähigkeit Schutzmaßnahmen voranzustellen nicht auf Funktionen innerhalb von JavaScript begrenzt, sondern kann auf irgendeinen ausführbaren Code angewandt werden, der in dem Inhalt eingeschlossen werden kann.
[0038] In einer beispielhaften Ausführungsform der vorliegenden Erfindung fügt die Schutzmaschine 112 zu dem Inhalt alle Schutzmaßnahmen hinzu, die dem Typ Inhalt zugeordnet sind, der in der Antwort enthalten ist. Auf diese Weise kann die Schutzmaschine 112 sicherstellen, dass alle potenziell gefährlichen Funktionen außer Kraft gesetzt werden. Dies kann besonders wichtig sein, da eine übliche Technik von Hackern, die hierin als „Verschleierung" bezeichnet wird, es schwierig machen kann, festzustellen, welche Funktionsaufrufe innerhalb einer Antwort enthalten sind.
[0039] Ein Beispiel von Verschleierung beinhaltet das Verwenden der eval Funktion. Die eval Funktion ist eine nützliche Funktion, die es einer Zeichenkette ermöglicht, behandelt zu werden, als wäre sie ausführbarer Code, nachdem sie an die eval Funktion weitergeleitet wurde. Da eine Zeichenkette, die an die eval Funktion weitergeleitet werden soll, während der Laufzeit erzeugt werden kann, kann es schwierig sein, die Funktion, die aufgerufen wird, zu identifizieren, bis sie ausgeführt wird.
[0040] Nehmen wir zum Beispiel an, dass der Funktionsaufruf document.write („hack") ein bekannter Exploit ist. Ein Hacker kann die eval Funktion verwenden, um das Exploit wie folgt zu verschleiern.var X = „ha";var Y = „k";var Z = „doc";var A = „ument.wr";var B = „ite(";„)"; var C = „)" ;var D = „c";eval (Z + A + B + X + D + Y + C);
[0041] Der obige Code würde die Zeichenkette als document . write („hack") berechnen. Es würde bis zur tatsächlichen Ausführungszeit nicht offensichtlich werden, dass document . write („hack") im Begriff ist abzulaufen. Beim Einsatz eines herkömmlichen Systems würde es zu dieser Zeit zu spät sein, den Angriff zu verhindern. In ähnlicherweise würde das Durchführen einer „Vorberechnung" der Argumente, die an die eval Funktion weitergegeben werden, ineffizient sein und würde die Programmausführung unnötigerweise verlangsamen.
[0042] In dieser Ausführungsform der vorliegenden Erfindung würde jedoch der Angriff erkannt werden können, ohne teuere (in Form von Verarbeitungs- und Netzwerkressourcen) Vorberechnung der Antwort. Speziell wird es der eval Funktion erlaubt abzulaufen und document . write („hack") auszuführen. Viel eher als das Ausführen der Browserfunktion wird jedoch die Schutzmaßnahme ausgeführt. Die Schutzmaßnahme berechnet dann die Argumente von document. write (in diesem Fall „hack") identifiziert den Angriff und beendet die Ausführung bevor der schädliche Code ablaufen kann.
[0043] In einer alternativen beispielhaften Ausführungsform kann die Schutzmaßnahme die Inhalte in einer Weise modifizieren, der den Angriff durchkreuzen kann, während die Ausführung der Inhalte weitergeht viel eher als Beenden der Ausführung der Inhalte vor Ausführen des schädlichen Codes. Viele Angriffe verlassen sich beispielsweise auf ein spezifisches Timing und das Wissen über die Systemausführung, um den Angriff auszuführen. Ein solcher Angriff ist als „heap spray" Angriff bekannt, der große Speicherblöcke allokiert und bestimmte Werte an bestimmten Stellen platziert. Ein „heap spray" Angriff ist darauf angewiesen, dass der Speicher in dem Heap auf eine bestimmte Weise allokiert ist, um zu funktionieren. Wenn jedoch eine Schutzmaßnahme feststellt, dass ein besonderer Funktionsaufruf oder ein Satz von Funktionsaufrufen eine heap spray Attacke darstellt, kann die Schutzmaßnahme die Ausführung der Inhalte modifizieren, beispielsweise durch Einsetzen von Verzögerungen beim Allokieren von Speichern, um auf diese Weise die Struktur des Heaps zu modifizieren. Dies wird die Struktur, auf die der Angriff angewiesen ist, modifizieren und wird den Angriff durchkreuzen. Ein Fachmann würde erkennen, dass diese Modifikation des Inhalts geeignet sein kann, einen heap spray Angriff zu durchkreuzen, während andere Modifikationen der Inhalte geeignet sein werden, andere ähnliche Angriffe zu durchkreuzen, die auf das Timing oder die Speicherallokation angewiesen sind, in dem Geltungsbereich der Erfindung eingeschlossen sind.
[0044] In einer alternativen beispielhaften Ausführungsform kann die Schutzmaschine 112 ferner die Anfrage analysieren und selektiv Schutzmaßnahmen gemäß bestimmten Aspekten der Anfrage voranstellen. In einer alternativen Ausführungsform untersucht die Schutzmaschine 112 die Anfrage nach Informationen, die zu der Betriebsumgebung des Endnutzers 112 gehören, wie etwa das Betriebssystem, den Typ und die Version des Browsers, der die Anfrage gestellt hat und anderer Applikationen, die vorhanden sein können. Anfragen führen zum Beispiel häufig Meta-Daten mit sich, die den Typ und die Version des Browsers von dem die Anfrage gemacht wurde, identifizieren, das Betriebssystem des Computers des Endnutzers 102 und können auch andere Software identifizieren, die auf dem Computer des Endnutzers 102 läuft. In dem sie diese Informationen nutzt, kann die Schutzmaschine 112 die Schutzmaßnahmen maßschneidern, die sie dem anfragenden System voranstellt. Entwickler von Webbrowsern aktualisieren zum Beispiel häufig ihre Browser, um mögliche Exploits zu eliminieren. Falls von einer bestimmten Browserversion bekannt ist, dass sie ein bestimmtes Exploit berichtigt hat, besteht keine Notwendigkeit eine Schutzmaßnahme, die auf dieses Exploit gerichtet ist, voranzustellen. In ähnlicher Weise können bestimmte Exploits auf einen Code gerichtet sein, der eine von dem Webbrowser verschiedene Applikation ausführt. Wenn die Schutzmaschine 112 aus der Anfrage feststellt, dass das Programm, das Gegenstand eines bestimmten Exploits ist, nicht auf dem Computer des Endnutzers 102 installiert ist, dann kann sie bestimmen, Schutzmaßnahmen, die auf dieses Exploit gerichtet sind, nicht voranzustellen.
[0045] In einer weiteren alternativen beispielhaften Ausführungsform der vorliegenden Erfindung kann die Schutzmaschine 112 ferner externe Daten vor dem Voranstellen von Schutzmaßnahmen betrachten. Beispielsweise kann die Schutzmaschine 112 feststellen, ob der entfernte Server 108 auf einer „Whitelist" (weißen Liste) ist. Whitelists sind herkömmlicher Weise Datenbanken von Servern (identifiziert durch Name, Internetadresse oder andere Anzeiger der Identität) von denen bekannt ist, dass sie für den Netzwerkverkehr sicher sind. Wenn der entfernte Server 108 auf einer Whitelist ist, kann die Leistungsfähigkeit verbessert werden, wenn die Schutzmaßnahmen nicht vorangestellt werden.
[0046] In einer beispielhaften Ausführungsform der vorliegenden Erfindung stellt die Schutzmaschine 112 die Schutzmaßnahmen vor den ausführbaren Code in der Antwort voran, was bedeutet, dass die Schutzmaßnahmen von dem Browser vor dem ausführbaren Code ausgeführt werden, der durch den Browser ausgeführt werden kann. Die meisten herkömmlichen Inhalte umfassen Kennzeichen, die die Stelle in den Inhalten identifizieren, an denen der ausführbare Code beginnt. Der Beginn von JavaScript Code wird zum Beispiel identifiziert mit einem < script > Kennzeichen. Gemäß einer beispielhaften Ausführungsform können JavaScript Schutzmaßnahmen sofort nach dem < script > Kennzeichen vorangestellt werden, aber vor dem ausführbaren Code innerhalb des Kennzeichens. In einer alternativen beispielhaften Ausführungsform, wenn die Funktionen in dem Code, der ausgeführt werden soll mit Schutzmaßnahmen außer Kraft gesetzt werden kann, die nicht notwendigerweise vor dem Code in den Inhalten erscheint, dann können die Schutzmaßnahmen dem Code an irgendeiner geeigneten Stelle hinzugefügt werden, die durch den besonderen Inhaltstyp und den ausführbaren Code diktiert wird.
[0047] Zusätzlich zum Modifizieren oder Abbrechen der Ausführung der Inhalte bevor der möglicherweise schädliche Funktionsaufruf auftritt, kann die Schutzmaßnahme ferner eine Alarmfunktionalität umfassen, die eine oder mehrere interessierte Parteien über die Existenz des schädlichen Codes benachrichtigen kann. In einer beispielhaften Ausführungsform der vorliegenden Erfindung wird der Alarm eine Benachrichtigung an den Administrator eines bestimmten Netzwerks oder an einen anderen bezeichneten Dritten senden. Der Alarm kann Informationen enthalten, die sich auf den Angriff beziehen, die dem Systemadministrator beim Bestimmen einer geeigneten Vorgehensweise helfen, einschließlich beispielsweise der Schutzmaßnahme, die den Angriff identifiziert hat, des Typs des Angriffs, den Code, in den der Angriff eingebettet wurde, die Identität des Computers, der den Inhalt angefragt hat, der schließlich den Angriff enthielt, der Identität des entfernten Servers 108, der den Angriff übertragen hat und weitere Informationen, die dem Empfänger des Alarms bei Maßnahmen, die auftreten könnten, unterstützen können. In einer alternativen beispielhaften Ausführungsform kann ein Alarm an den Endnutzer 102 geschickt werden, mittels einer Benachrichtigung, die auf dem Computer des Endnutzers 102 erscheint. In einer alternativen beispielhaften Ausführungsform kann der Alarm an eine dritte Partei geschickt werden, die die Informationen, die sich auf den Alarm beziehen, in einer Vielzahl von Wegen nutzen kann, um wirksamere Dienste bereitzustellen. Beispielsweise kann die dritte Partei Informationen hinsichtlich der Identität des entfernten Servers 108 verwenden, um zu bestimmen, ob die Adresse des entfernten Servers 108 einer unerwünschten Senderliste (manchmal auch als „Blacklist" (schwarze Liste) oder „Blocklist" (Blockliste)) hinzugefügt werden soll. Die dritte Partei kann ferner der Lieferant von Schutzmaßnahmen sein und falls dem so ist, können die Informationen in dem Alarm seine Schutzmaßnahmen verbessern.
[0048] Sobald die Schutzmaßnahmen der Antwort vorangestellt worden sind, wird die geschützte Antwort zurück an den Proxy-Server 104 geschickt. Die geschützte Antwort wird dann an den Endnutzer 102 geschickt, wo sie von dem Browser des Endnutzers 102 ausgeführt wird.
[0049] Die Schutzmaschine 112 ist mit einem Schutzserver (protection server) 114 verbunden. Der Schutzserver 114 ist konfiguriert, um der Schutzmaschine 112 aktualisierte Schutzmaßnahmen bereitzustellen. Sicherheitsanalysten halten ständig Ausschau nach neuen Exploits. Bei bestimmten Gelegenheiten werden Exploits durch Sicherheitsanalysten oder Softwareentwickler entdeckt, die nach Schwachstellen in der Software suchen, in dem Bemühen Hackern zuvor zu kommen. Bei anderen Gelegenheiten identifizieren Hacker die Schwachstellen und nutzen sie aus. In beiden Fällen, sobald die Sicherheitsanalysten Exploits gewahr werden, die Nutzen aus gefährdeten Funktionen ziehen, können sie diese Funktionen mit den oben beschriebenen Schutzmaßnahmen außer Kraft setzen. In einer beispielhaften Ausführungsform beinhaltet das außer Kraft setzen der Funktionen, das Untersuchen der Verfahren, die Hacker benutzen können, um Nutzen aus einem Exploit zu ziehen und erzeugen einen Code, um Attribute für die Wirksamkeit solcher Verfahren zu untersuchen. Die Schutzhüllen (wrappers) können ferner einen Code umfassen, der Zustandsinformationen untersucht, wie etwa die Anzahl der Zeiten in denen eine bestimmte Funktion mit bestimmten Argumenten aufgerufen worden ist und feststellen, ob diese Zustandsinformationen einen Angriff darstellen. Aktualisierte Schutzhüllen werden auf dem Schutzserver 114 platziert und periodisch von der Schutzmaschine 112 heruntergeladen oder auf die Schutzmaschine 112 geschoben.
[0050] Nun mit Bezug auf die Fig. 7 stellt ein Blockdiagramm eine Netzwerkstruktur dar, die ein System 700 zur Laufzeitangriffsprävention gemäß einer zweiten beispielhaften Ausführungsform der vorliegenden Erfindung zeigt. Ähnlich wie das System der Fig. 1 agiert das System zur Laufzeitangriffsprävention der Fig. 7 in dem Antworten Schutzmaßnahmen vorangestellt werden. Das System der Fig. 7 unterscheidet sich von dem System der Fig. 1 dadurch, dass die Schutzmaßnahmen durch den entfernten Server 108 vorangestellt werden, viel eher als Voranstellen der Schutzmaßnahmen auf Netzwerkebene.
[0051] In einer beispielhaften Ausführungsform des Systems 700 zur Laufzeitangriffsprävention, beschrieben in der Funktion 7, erzeugt ein Endnutzer 702 eine Anfrage nach Inhalten. Die Anfrage wird an ein lokales Netzwerk („LAN", local area network) 704 geschickt, an das der Computer des Endnutzers 702 angeschlossen ist. Die Anfrage wird dann über das Internet 706 an einen entfernten Server 708 weitergeleitet, der dazu bestimmt ist, auf die Anfrage zu antworten. Falls die Anfrage eine herkömmliche Anfrage nach Internet / World Wide Web Inhalten ist, ist die Antwort ein oder mehrere Text- oder Datenpakete, die eine Internetseite ausmachen. In einer beispielhaften Ausführungsform der vorliegenden Erfindung stellt vor dem Senden der Antwort der entfernte Server 708 Schutzmaßnahmen der Antwort voran. Der entfernte Server 708 sendet dann die geschützte Antwort durch das Internet 706 und das LAN 704 zurück an den Endnutzer 702. Genau wie in dem System der Fig. 1 empfängt der Browser des Endnutzers 702 die geschützte Antwort und führt die Schutzmaßnahmen aus.
[0052] In dieser Ausführungsform in der Antworten Schutzmaßnahmen vor dem Senden an den Endnutzer 702 vorangestellt werden, empfängt der entfernte Server 708 die Zusicherung, dass er nicht unabsichtlich Angriffen auf den Endnutzer 702 dient, der mit dem Server verbunden ist. Beispielsweise umfassen viele kommerzielle Internetseiten Werbeanzeigen, die Besuchern der Internetseiten serviert werden. Häufig hat die kommerzielle Internetseite wenig direkte Kontrolle über den Inhalt der Werbeanzeige. Viel mehr lädt die kommerzielle Internetseite einfach die Inhalte, die die Werbeanzeige umfasst von einer anderen Stelle des Internets. Wenn der Inhalt schädlichen Code umfasst, kann der entfernte Server darüber keine Anzeichen haben, bis sein Endnutzer 702 sich über Angriffe beschwert, die von der Internetseite herrühren, die der entfernte Server 708 bedient. Durch Voranstellen von Schutzmaßnahmen wird der entfernte Server 708 jedoch den Endnutzer 702 von Angriffen schützen, die irrtümlicherweise gesendet werden könnten, unabhängig davon, ob der Endnutzer 702 mit einem System assoziiert ist (wie etwa den Systemen, die in den Fig. 1 und Fig. 3 beschrieben sind), das ebenfalls Schutzmaßnahmen bereitstellen würde.
[0053] Der entfernte Server 708 ist mit einem Schutzserver 710 verbunden. In einer beispielhaften Ausführungsform ist der Schutzserver 710 einfach der Schutzserver 114, wie er mit Bezug auf die Fig. 1 beschrieben wurde und stellt dem entfernten Server 708 aktualisierte Schutzmaßnahmen bereit.
[0054] Nun mit Bezug auf die Fig. 9 stellt ein Blockdiagramm eine Netzwerkstruktur dar, die ein System 900 zur Laufzeitangriffsprävention gemäß einer dritten exemplarischen Ausführungsform der vorliegenden Erfindung implementiert. Ähnlich wie das System der Fig. 1 und Fig. 7 agiert das System zur Laufzeitangriffsprävention der Fig. 9 in dem es Antworten Schutzmaßnahmen voranstellt. Das System der Fig. 9 unterscheidet sich von dem System der Fig. 1 und Fig. 7 indem die Schutzmaßnahmen durch den Computer des Endnutzers 702 vorangestellt werden, viel eher als dass die Schutzmaßnahmen auf Netzwerkebene vorangestellt werden.
[0055] In einer beispielhaften Ausführungsform sendet der Computer des Endnutzers 902 eine Anfrage, die über das LAN 904 und das Internet 906 zu dem entfernten Server 908 läuft. Der entfernte Server 908 antwortet in dem er die Antwort über das Internet 906 und das LAN 904 an den Computer des Endnutzers 902 zurücksendet. Nach Empfangen der Antwort stellt der Computer des Endnutzers 902 bevor er die Nachricht an den Webbrowser weiterreicht der Antwort Schutzmaßnahmen voran. Der geschützten Antwort wird es dann ermöglicht zu dem Browser des Endnutzers 902 durch zu kommen, wo die geschützte Antwort ausgeführt wird. Der Computer des Endnutzers 902 kann mit einem Schutzserver 910 verbunden sein, der aktualisierte Schutzmaßnahmen bereitstellt. In einer beispielhaften Ausführungsform ist der Computer des Endnutzers 902 mit dem Schutzserver 910 über das Internet 906 verbunden und durch ein LAN 904 mit dem der Computer des Endnutzers 902 verbunden ist. In einer alternativen beispielhaften Ausführungsform kann der Schutzserver 910 lokal auf dem Computer des Endnutzers 902 sein oder kann innerhalb des LANs angeordnet sein, mit dem der Computer des Endnutzers 902 verbunden ist.
[0056] In einer alternativen beispielhaften Ausführungsform des Systems 900, dargelegt in Fig. 9, können die Schutzmaßnahmen ausführbarem Code vorangestellt werden, der von den Antworten verschieden ist, die von einem entfernten Server 908 erhalten werden. Beispielsweise können die Schutzmaßnahmen selber ausführbarer binärer Code sein und können existierenden ausführbaren Programmen vorangestellt werden.
[0057] In einer weiteren alternativen beispielhaften Ausführungsform können Schutzmaßnahmen vorangestellt werden, die den Zugriff modifizieren, die der ausführbare Code auf Systemlevelfunktionen hat, viel eher (oder zusätzlich zum) Voranstellen von Schutzmaßnahmen, die Funktionen in dem ausführbaren Code außer Kraft setzen. In dem Linux Betriebssystem kann beispielsweise auf bestimmte Systemfähigkeiten nur von Nutzern oder Prozessen zugegriffen werden, denen bestimmte Zulassungen gegeben worden sind. Selbst wenn ein Prozess mit der Ausführung beginnt, der Zugriff auf alle verfügbaren Funktionalitäten hat (der normalerweise als „root" oder „superuser" Zugriff bezeichnet wird), kann ein Prozess programmatisch bestimmte Zulassungen aufgeben, während die Ausführung fortschreitet. Sobald ein Prozess eine Zulassung abgetreten hat, kann er diese Zulassung nicht mehr zurückverlangen. Dementsprechend können Schutzmaßnahmen, die den Zugriff des ausführbaren Codes auf das System modifizieren, dem Code vorangestellt werden, bevor schädlicher darin enthaltender Code ausgeführt werden kann und wird ihn daran hindern Zulassungen zurückzuverlangen, die er aus der Perspektive des Systems freiwillig abgegeben hat.
[0058] Zum Beispiel muss ein Prozess einen bestimmten Satz von Zulassungen aufweisen, um in der Lage zu sein, auf Speicheradressen zuzugreifen, die Ein- / Ausgabe-Anschlüsse und Systemspeicher darstellen. Wenn überhaupt, erfordern einige wenige legitimierte Prozesse einen solchen Zugriff. Dementsprechend kann eine Schutzmaßnahme ausführbarem Code vorangestellt werden, die den Prozess zwingt, diesen Zugriff aufzugeben, wodurch schädlicher Code präventiv daran gehindert wird, diese Ressourcen zu manipulieren.
[0059] In ähnlicher Weise kann ein Prozess auch mit Bezug auf Systemressourcen, die ihm verfügbar sind, beschränkt werden. Ein Prozess kann zum Beispiel unter anderem darauf beschränkt werden auf Dateien von einer bestimmten maximalen Größe zuzugreifen, einen bestimmten Betrag des Speichers oder der Prozessornutzung, einer bestimmten Anzahl von offenen Dateien, einen bestimmten Betrag der Festplattennutzung und einer bestimmten Anzahl von Tochterprozessen. Ein Kennzeichen von einigen Angriffen, zum Beispiel Dienstverweigerungsangriffen (denial-of-service attack) ist das Hervorbringen von mehreren Tochterprozessen, die Systemressourcen besetzen, wodurch das System daran gehindert wird, auf legitimierte Anfragen zu antworten. Schutzmaßnahmen können ausführbarem Code vorangestellt werden, die die Anzahl von Tochterprozessen (oder anderen Systemressourcen) begrenzen, die ein Prozess erzeugen kann oder auf die er zugreifen kann, wodurch die Wahrscheinlichkeit, dass ein solcher Angriff auftritt, reduziert wird.
[0060] Nun mit Bezug auf die Fig. 2 ist ein Flussdiagramm eines beispielhaften Verfahrens 200 zum Einsetzen von Schutzmaßnahmen in Netzwerkverkehr unter Verwendung des Systems zur Laufzeitangriffsprävention der Fig. 1, Fig. 7 und Fig. 9 dargestellt und zusätzliche Merkmale der vorliegenden Erfindungen werden beschrieben. Die Fig. 2 wird mit Bezug auf die Fig. 1 diskutiert. Das Verfahren hebt funktionale Schlüsselmerkmale des Systems zur Laufzeitangriffsprävention hervor.
[0061] Ein Fachmann wird anerkennen, dass Prozessfunktionen oder Schritte, die von dem System zur Laufzeitangriffsprävention 100 ausgeführt werden einen programmierten Universalrechner, elektronische Schaltkreise, die ein elektronisches Gerät bilden, Firmware-Code, die auf einem Mikrocontroller oder einem Mikroprozessor ausgeführt wird, Zustandsmaschinen, die in anwendungsspezifischer oder programmierbaren Logik implementiert sind oder zahlreichen weiteren Formen umfassen, ohne von dem Geist und Geltungsbereich der vorliegenden Erfindung abzuweisen. Mit anderen Worten, die Erfindung kann als ein Computerprogramm bereitgestellt werden, das ein maschinenlesbares Medium umfasst, auf dem Anweisungen gespeichert sind, die verwendet werden können, um einen Computer (oder andere elektronische Gräte) zu programmieren, um einen Prozess gemäß der Erfindung auszuführen.
[0062] Das computerlesbare Medium kann umfassen, ohne darauf beschränkt zu sein: Floppy Discs, optische Discs, CD ROMs und magnetooptische Discs, ROMs, RAMs, EPROMs, EEPROMs, magnetische oder optische Karten, Flash Speicher, oder ein anderer Medientyp / maschinenlesbare Medien, die zum Speichern von elektronischen Anweisungen geeignet sind.
[0063] Bestimmte Schritte der Verfahren, die in den logischen Flussdiagrammen beschrieben werden, auf die unten Bezug genommen wird, müssen natürlicherweise anderen der Erfindung vorausgehen, um wie beschrieben, zu funktionieren. Die Erfindung ist jedoch nicht auf die Reihenfolge der beschriebenen Schritte begrenzt, wenn eine solche Ordnung oder Reihenfolge die Funktionalität der vorliegenden Erfindung nicht ändert. Das heißt es wird anerkannt, dass einige Schritte, nach oder parallel zu anderen Schritten durchgeführt werden können, ohne von dem Geltungsbereich und dem Geist der vorliegenden Erfindung abzuweichen. Darüber hinaus wird anerkannt werden, dass bestimmte Schritte in verschiedenen Reihenfolgen angeordnet werden können oder vollständig gelöscht werden können, ohne von dem Geltungsbereich und Geist der Erfindung abzuweichen. In anderen Worten: es wird anerkannt, dass die Schritte, die in den Flussdiagrammen veranschaulicht sind, einen Weg zum Erreichen eines gewünschten Resultats zum Schutz eines Netzwerks erzielen. Andere Wege können zusätzliche, verschiedene Schritte umfassen oder das Eliminieren von Schritten oder die Kombination des Eliminierens von Schritten und des Hinzufügens verschiedener Schritte sind für den Fachmann offensichtlich.
[0064] Zum Beispiel wird ein Fachmann bei einer Programmierung in der Lage sein, ein solches Computerprogramm zu schreiben oder geeignete Hardware-Schaltkreise zum Implementieren der offenbarten Erfindung ohne Schwierigkeiten auf der Grundlage der Flussdiagramme und der zugehörigen Beschreibung des Anmeldetextes zu identifizieren. Deshalb wird ein bestimmter Satz von Programmcodeanweisungen oder detaillierte Hardware-Geräte für ein adäquates Verständnis, wie die Erfindung ausgeführt und eingesetzt werden kann, nicht als notwendig erachtet. Die erfindungsgemäße Funktionalität der beanspruchten computerimplementierten Prozesse wird detaillierter in der nachfolgenden Beschreibung in Verbindung mit den verbleibenden Figuren, die andere Prozessflüsse veranschaulichen, erklärt.
[0065] Erneut mit Bezug auf die Fig. 2 ist der Schritt 205 der erste Schritt des Verfahrens 200 in dem Schutzmaßnahmen erzeugt werden. Der Prozess des Erzeugens von Schutzmaßnahmen wird detaillierter mit Bezug auf die Fig. 3 diskutiert werden. Bei Entscheidungsschritt 210 wird bestimmt, ob Schutzmaßnahmen in das Netzwerk eingefügt werden sollen. Wenn Schutzmaßnahmen in das Netzwerk eingefügt werden sollen, wird dem „Ja"-Zweig zu Schritt 215 gefolgt, wobei Schutzmaßnahmen in das Netzwerk eingefügt werden. Der Prozess des Einfügens von Schutzmaßnahmen in das Netzwerk wird detaillierter mit Bezug auf die Fig. 4 diskutiert werden. Das Verfahren 200 schreitet dann zum Entscheidungsschritt 220 fort. Falls andererseits bei Entscheidungsschritt 210 bestimmt wird, dass Schutzmaßnahmen nicht in das Netzwerk eingefügt werden sollen, wird dem „Nein"-Zweig zu Entscheidungsschritt 220 gefolgt.
[0066] Bei Entscheidungsschritt 220 wird bestimmt, ob die Schutzmaßnahmen beim entfernten Server 108 eingefügt werden sollen. Wenn die Schutzmaßnahmen in den entfernten Server 108 eingefügt werden sollen, wird dem „Ja"-Zweig zu Schritt 225 gefolgt, wobei die Schutzmaßnahmen in den entfernten Server 108 eingefügt werden. Der Prozess des Einfügens von Schutzmaßnahmen in den entfernten Server 108 wird detaillierter mit Bezug auf die Fig. 8 diskutiert werden. Das Verfahren 200 wird dann zu Entscheidungsschritt 230 fortschreiten. Wenn andererseits bei Entscheidungsschritt 220 festgestellt wird, dass Schutzmaßnahmen nicht in den entfernten Server 108 eingefügt werden, wird dem „Nein"-Zweig zu Entscheidungsschritt 230 gefolgt.
[0067] Bei Entscheidungsschritt 230 wird bestimmt, ob Schutzmaßnahmen in den Computer des Endnutzers 102 eingefügt werden. Wenn Schutzmaßnahmen in den Computer des Endnutzers 102 eingefügt werden, wird dem „Ja"-Zweig zu Schritt 235 gefolgt, wobei Schutzmaßnahmen in den Endnutzer 102 eingefügt werden. Der Prozess des Einfügens von Schutzmaßnahmen in den Endnutzer 102 wird detaillierter mit Bezug auf die Fig. 10 diskutiert werden. Das Verfahren 200 schreitet dann zu Entscheidungsschritt 240 fort. Wenn andererseits bei Entscheidungsschritt 230 bestimmt wird, dass Schutzmaßnahmen nicht in den Endnutzer 202 eingefügt werden, wird dem „Nein"-Zweig zu Entscheidungsschritt 240 gefolgt.
[0068] Bei Entscheidungsschritt 240 wird bestimmt, ob das System mit dem Schützen fortfährt. Wenn festgestellt wird, dass das System mit dem Schützen fortfährt, wird dem „Ja"-Zweig zu Schritt 205 gefolgt. Wenn andererseits festgestellt wird, dass das System mit dem Schützen nicht fortfährt, wird dem „Nein"-Zweig gefolgt und das Verfahren 200 endet.
[0069] Mit Bezug nun auf die Fig. 3 ist ein Verfahren 205 zum Erzeugen von Schutzmaßnahmen unter Verwendung der Laufzeitangriffsprävention der Fig. 1 beschrieben. Die Fig. 3 wird mit Bezug auf die Fig. 1 und Fig. 2 diskutiert. Der Schritt 300 ist der erste Schritt des Verfahrens 205, wobei gefährdete Verfahren identifiziert werden. Wie oben diskutiert, können in einer beispielhaften Ausführungsform der vorliegenden Erfindung gefährdete Verfahren durch Sicherheitsanalysten und Hacker identifiziert werden, die Schwachstellen in Software suchen und identifizieren. Schwachstellen können ferner identifiziert werden durch Lesen veröffentlichter Berichte von Schwachstellen in Programmen, durch Reverse Engineering Angriffe, die bereits stattgefunden haben, durch „Fuzzing" oder „Fuzz-Testen" eines Programms, das das Übergeben großer Mengen zufälliger oder anderer Weise ungültiger Daten an ein Programm beinhaltet und das Bestimmen, ob diese Daten in einem Ausfall resultieren und das Studieren von Patches (Flicken), Reparaturen (fixes) oder anderer Aktualisierungen, die ein Programmhersteller für ein Programm verteilt hat, da diese oft Schwachstellen früherer Versionen eines Programms beheben und dementsprechend benutzt werden können, solche Schwachstellen zu identifizieren.
[0070] Das Verfahren 205 schreitet dann zu Schritt 305 fort, wobei ein Code zum außer Kraft setzen gefährdeter Verfahren geschrieben wird und falls gewünscht, um die Ausführung des Inhalts zu modifizieren. Das Verfahren 205 schreitet dann zu Schritt 305 fort, wobei ein Code erzeugt wird, um Attribute der außer Kraft gesetzten gefährdeten Methoden nach bekannten Angriffen zu untersuchen. Das Verfahren 205 schreitet dann zum Schritt 315 fort, wobei ein Code erzeugt wird, um Zustandsinformationen zum Identifizieren von Angriffen zu untersuchen. Zum Beispiel könnte ein Code erzeugt werden, der die Anzahl der Null-Operationsfunktion (NOP) zählt, die aufgerufen wird, um einen potenziellen Angriff zu identifizieren, wenn die Anzahl der Null-Operationen eine vorbestimmte Schwelle überschreitet. Das Verfahren 205 schreitet dann zu Schritt 320 fort, wobei ein Alarmcode erzeugt wird, um den Endnutzer 102, den Netzwerkprovider und / oder andere interessierte Parteien, wie etwa dritte Parteien zu alarmieren, die in der Lage sind Informationen, die mit dem Alarm verbunden sind, nutzen zu können, um existierende Angriffe zu beheben und durch verbesserte Schutzmaßnahmen besser gegen zukünftige Angriffe zu schützen. Das Verfahren 205 schreitet dann zu Schritt 210 der Fig. 2 fort.
[0071] Nun mit Bezug auf die Fig. 4 ist ein Verfahren 215 zum Einsetzen von Schutzmaßnahmen in ein Netzwerk unter Verwendung des Systems zur Laufzeitangriffsprävention der Fig. 1 beschrieben. Die Fig. 4 wird mit Bezug auf die Fig. 1 und Fig. 2 diskutiert. Der Schritt 400 ist der erste Schritt in dem Verfahren 215, wobei der Endnutzer 102 Inhalte abfragt. Wie oben diskutiert, stammt in einer beispielhaften Ausführungsform die Abfrage von einem Internetbrowser, der auf dem Computer des Endnutzers 102 installiert ist, obwohl in alternativen Ausführungsformen die Abfrage irgendeine Abfrage von einem entfernten Server 108 nach Inhalten sein kann, die letztlich auf dem Computer des Endnutzers 102 ausgeführt werden. Das Verfahren 215 schreitet dann zu Schritt 405 fort, wobei Inhalte von dem Netzwerk empfangen werden. Das Verfahren 215 schreitet dann zu Schritt 410 fort, wobei die Schutzmaßnahmen der Antwort vorangestellt werden. In dieser beispielhaften Ausführungsform ist die Schutzmaschine 112 mit einem Proxy-Server 104 verbunden, der in dem Netzwerk installiert ist, der Antworten abfängt und Schutzmaßnahmen dagegen hinzufügt oder voranstellt, wie oben mit Bezug auf die Fig. 1 beschrieben. Der Prozess des Voranstellens mit Schutzmaßnahmen wird detaillierter mit Bezug auf die Fig. 5 beschrieben.
[0072] Das Verfahren 215 schreitet dann zu Schritt 415 fort, wobei der geschützte Inhalt an den Endnutzer 102 geliefert wird. In einer beispielhaften Ausführungsform leitet die Schutzmaschine 112 den geschützten Inhalt an den Proxy-Server 104 zurück (oder an die Stelle des Netzwerks von der er die Antwort abgefangen hat), der die Antworten zurück an den Endnutzer 102 leitet. Das Verfahren 215 schreitet dann zu Schritt 420 fort, wobei der geschützte Inhalt von dem Computer des Endnutzers 102 ausgeführt wird. In einer beispielhaften Ausführungsform wird der geschützte Inhalt innerhalb des Internetbrowsers des Endnutzers 102 ausgeführt. In einer alternativen beispielhaften Ausführungsform wird jedoch der geschützte Inhalt außerhalb des Browsers ausgeführt.
[0073] Das Verfahren 215 schreitet dann zu Schritt 425 fort, wobei die Schutzmaschine 112 ihre Schutzmaßnahmen aktualisiert. In einer beispielhaften Ausführungsform empfängt die Schutzmaschine 112 aktualisierte Schutzmaßnahmen von einen Schutzserver 114. Das Verfahren 215 schreitet dann zu Entscheidungsschritt 430 fort, wobei bestimmt wird, ob das Schützen fortgesetzt wird. Wenn festgestellt wird, dass das System mit dem Schützen fortfahren sollte, wird dem „Ja"-Zweig zurück zu Schritt 400 gefolgt. Wenn andererseits festgestellt wird, mit dem Schützen nicht fortzufahren, dann wird dem „Nein"-Zweig gefolgt und das Verfahren 215 kehrt zu Schritt 220 der Fig. 2 zurück.
[0074] Nun mit Bezug auf die Fig. 5 ist ein Verfahren 410 / 810 / 1015 zum Voranstellen von Schutzmaßnahmen unter Verwendung des Systems zur Laufzeitangriffsprävention der Fig. 1, Fig. 7 und Fig. 9 gezeigt. Die Fig. 5 wird mit Bezug auf die Fig. 1, Fig. 4, Fig. 8 und Fig. 10 diskutiert. Der Entscheidungsschritt 500 ist der erste Schritt des Verfahrens 410 / 810 / 1015, wobei bestimmt wird, ob die empfangenen Inhalte von einer vertrauenswürdigen Quelle stammen. Beispielsweise können Inhalte identifiziert werden, der von einer vertrauenswürdigen Quelle empfangen worden ist, wenn die Quelladresse der Inhalte in einer Datenbank von bekannten guten Sendern vorhanden ist (die oft als eine white list bezeichnet wird). Wenn festgestellt wird, dass die Inhalte von einer vertrauenswürdigen Quelle empfangen wurden, wird in der beispielhaften Ausführungsform dem „Ja"-Zweig gefolgt und das Verfahren 410 / 810 / 1015 kehrt zu Schritt 415 / 815 / 1020 zurück. In einer alternativen beispielhaften Ausführungsform kann das System konfiguriert sein Informationen, die sich auf die Quelle der Inhalte beziehen, zu ignorieren und kann ohne Rücksicht auf die Quelle Schutzmaßnahmen voranstellen.
[0075] Wiederum zurückkehrend zu Entscheidungsschritt 500, wenn festgestellt wird, dass die Inhalte nicht von einer vertrauenswürdigen Quelle stammen, dann wird dem „Nein"-Zweig zu Schritt 505 gefolgt, wobei der Typ der empfangenen Informationen bestimmt wird. Es wird beispielsweise bestimmt, ob die empfangenen Inhalte ausführbaren Code enthalten, der möglicherweise in einem Angriff, wie etwa JavaScript, Flash oder Silverlight benutzt werden kann. Das Verfahren 410 / 810 / 1015 schreitet dann zu Schritt 510 fort, wobei Schutzmaßnahmen identifiziert werden, die dem Inhaltstyp entsprechen, die in Schritt 505 identifiziert wurden. Bei bestimmten Gelegenheiten werden nur bestimmte Schutzmaßnahmen auf bestimmte Formen ausführbarer Inhalte anwendbar sein. Dementsprechend kann es die Leistungsfähigkeit verbessern, nur solche Schutzmaßnahmen zu identifizieren, die auf die vorliegenden Inhalte angewandt werden können.
[0076] Das Verfahren 410 / 810 / 1015 schreitet dann zu Entscheidungsschritt 515 fort, wobei die Schutzmaschine 112 bestimmt, ob sie Kenntnis der Endnutzerumgebung hat. In einer beispielhaften Ausführungsform erhält die Schutzmaschine 112 Informationen, die sich auf den Endnutzer beziehen von der Anfrage nach Inhalten. Alternativ kann die Schutzmaschine 112 Informationen speichern, die sich auf die Konfiguration des Endnutzers 102 in dem Netzwerk beziehen, die Endnutzerumgebungsinformationen umfassen. Wenn festgestellt wird, dass die Schutzmaschine 112 keine Kenntnis der Umgebung des Endnutzers 102 hat, wird dem „Nein"-Zweig zu Schritt 525 gefolgt, wobei die Schutzmaßnahmen, die in Schritt 510 identifiziert wurden, dem Inhalt vorangestellt werden. Das Verfahren 410 / 810 / 1015 kehrt dann zu Schritt 415 / 815 / 1020 zurück.
[0077] Wiederum mit Bezug auf Entscheidungsschritt 515, wenn festgestellt wird, dass die Schutzmaschine 112 Kenntnis von der Umgebung des Endnutzers 102 hat, wird dem „Ja"-Zweig zu Schritt 520 gefolgt, wobei Schutzmaßnahmen, die der Umgebung des Endnutzers 102 entsprechen, identifiziert werden. Falls die Umgebung des Endnutzers 102 beispielsweise Google Chrome als Webbrowser umfasst, dann müssen die Schutzmaßnahmen, die nur darauf gerichtet sind gegen ein Exploit zu schützen, das nur in der Microsoft Internet-Explorer Version 6 existiert, nicht vorangestellt werden. In einer beispielhaften Ausführungsform werden die Schutzmaßnahmen, die der Umgebung des Endnutzers 102 entsprechen, von einem Satz von Schutzmaßnahmen ausgewählt, die dem Inhaltstyp entsprechen. In einer alternativen Ausführungsform können die Schutzmaßnahmen, die der Umgebung des Endnutzers 102 entsprechen, getrennt von den Schutzmaßnahmen, die dem Inhaltstyp entsprechen, ausgewählt werden. Das Verfahren 410 / 810 / 1015 schreitet dann zu Schritt 525 fort, wobei alle identifizierten Schutzmaßnahmen den Inhalten vorangestellt werden. Das Verfahren 410 / 810 / 1015 kehrt dann zu Schritt 415 / 815 / 1020 zurück.
[0078] Nun der Fig. 6 zuwendend ist ein Verfahren 420 / 820 / 1020 zum Ausführen geschützter Inhalte unter Verwendung des Systems zur Laufzeitzugriffsprävention der Fig. 1, Fig. 7 und Fig. 9 gezeigt. Die Fig. 6 wird beschrieben mit Bezug auf die Fig. 1, Fig. 4, Fig. 8 und Fig. 10. Der Schritt 600 ist der erste Schritt des Verfahrens 420 / 820 / 1020, wobei der Systemzugriff, der den Inhalten geboten wird, modifiziert wird. Das Verfahren 420 / 820 / 1020 schreitet dann zu Schritt 605 fort, wobei die Funktion Verpackung ausgeführt wird. In einer beispielhaften Ausführungsform wird die Funktion Verpackung ausgeführt, wenn ausführbarer Code die geschützte Funktion aufruft (d.h. eine Funktion für die eine Schutzmaßnahme erzeugt worden ist). Das Verfahren 420 / 820 / 1020 schreitet dann zu Schritt 610 fort, wobei die Argumente, die an die geschützte Funktion weitergereicht wurden, in Hinblick auf Angriffe analysiert werden. Das Verfahren 420 / 820 / 1020 schreitet dann zu Schritt 615 fort, wobei die Zustandsinformationen analysiert werden. Die Zustandsinformationen können sich beispielsweise auf die Anzahl der Zeitpunkte beziehen, in denen eine bestimmte geschützte Funktion innerhalb einer gegebenen Browsing-Sitzung (browsing session) oder Zeitperiode aufgerufen worden ist, der zeitlichen Beziehung zwischen einem Aufruf der geschützten Funktion und einer weiteren geschützten Funktion oder anderer zustandsbasierter Informationen, die einen Angriff anzeigen.
[0079] Das Verfahren 420 / 820 / 1020 schreitet dann zu Schritt 620 fort, wobei bestimmt wird, ob die Zustandsinformationen oder die Argumente die Existenz einer potentiellen Bedrohung anzeigen. Wenn festgestellt wird, dass eine mögliche Bedrohung nicht existiert, wird dem „Nein"-Zweig zu Schritt 625 gefolgt, wobei dem außer Kraft gesetzten Verfahren erlaubt wird, normal ausgeführt zu werden. Das Verfahren 420 / 820 / 1020 schreitet dann zum Entscheidungsschritt 630 fort, wobei bestimmt wird, ob die Inhalte mehr lauffähigen Code enthalten. Wenn festgestellt wird, dass die Inhalte keinen weiteren lauffähigen Code enthalten, wird dem „Ja"-Zweig gefolgt und das Verfahren 420 / 820 / 1020 schreitet zu Schritt 605 fort. Wenn andererseits die Inhalte keinen weiteren lauffähigen Code enthalten, wird dem „Nein"-Zweig gefolgt und das Verfahren 420 / 820 / 1020 kehrt zu Schritt 425 / 825 / 1025 zurück.
[0080] Erneut mit Bezug auf Entscheidungsschritt 620, wenn festgestellt wird, dass eine Bedrohung erkannt ist, wird dem „Ja"-Zweig zu Schritt 635 gefolgt, bei dem die Ausführung der Inhalte beendet wird oder modifiziert wird. In einer beispielhaften Ausführungsform der vorliegenden Erfindung wird die Ausführung der Inhalte ohne Ausführen der Schutzfunktion beendet. In einer alternativen beispielhaften Ausführungsform kann die Ausführung der Inhalte modifiziert werden, um den Angriff ohne Beenden der Ausführung zu durchkreuzen. Das Verfahren 420 / 820 / 1020 schreitet dann zu Schritt 640 fort, wobei ein Alarm übertragen wird. Verschiedene Alarme können übertragen werden und die Alarme können an verschiedene Empfänger übertragen werden. In einer beispielhaften Ausführungsform wird der Alarm an den Netzwerkadministrator übertragen, der bestimmen kann, wie auf den Alarm zu antworten ist. In einer alternativen beispielhaften Ausführungsform wird der Alarm an den Endnutzer 102 übertragen. In einer weiteren alternativen Ausführungsform wird der Alarm an einen Dritten übertragen. Das Verfahren 420 / 820 / 1020 kehrt dann zu Schritt 425 / 825 / 1025 zurück.
[0081] Nun der Fig. 8 zuwendend ist ein Flussdiagramm gezeigt, das ein Verfahren 225 zum Einsetzen von Schutzmaßnahmen in einem Server unter Verwendung des Systems 700 zur Laufzeitangriffsprävention der Fig. 7 darstellt. Die Fig. 8 wird diskutiert mit Bezug auf die Fig. 7. Der Schritt 800 ist der erste Schritt des Verfahrens 225, wobei der entfernte Server 708 eine Anfrage nach Inhalten empfängt. Das Verfahren 225 schreitet dann zu Schritt 805 fort, wobei eine Antwort auf die Anfrage erzeugt wird. Das Verfahren 225 schreitet dann zu Schritt 810 fort, wobei Schutzmaßnahmen der Antwort vorangestellt werden. Der Prozess des Voranstellens von Schutzmaßnahmen für die Antwort ist oben mit Bezug auf die Fig. 5 beschrieben.
[0082] Das Verfahren 225 schreitet dann zu Schritt 815 fort, wobei die geschützte Antwort dem Endnutzer 702 über das Internet geliefert wird. Das Verfahren 225 schreitet dann zu Schritt 820 fort, wobei der geschützte Inhalt ausgeführt wird. Der Prozess des Ausführens von geschütztem Inhalt ist detaillierter mit Bezug auf die Fig. 6 beschrieben. Das Verfahren 225 schreitet dann zu Schritt 825 fort, wobei die Schutzmaßnahmen aktualisiert werden. Das Verfahren 225 schreitet dann zu Entscheidungsschritt 830 fort, wobei bestimmt wird, ob das System 700 mit dem Schützen fortfahren soll. Wenn festgestellt wird, dass das System 700 mit dem Schützen fortfahren wird, wird dem „Ja"-Zweig zu Schritt 800 gefolgt. Wenn andererseits bestimmt wird, dass das System mit dem Schützen aufhören sollte, wird dem „Nein"-Zweig gefolgt und das Verfahren 225 kehrt zu Schritt 230 zurück.
[0083] Nun der Fig. 10 zuwendend, ist ein Flussdiagramm gezeigt, das ein Verfahren 235 zum Einsetzen von Schutzmaßnahmen in den Computer eines Endnutzers 902 unter Verwendung des Systems 900 zur Laufzeitangriffsprävention der Fig. 9 darstellt. Die Fig. 10 wird mit Bezug auf die Fig. 9 diskutiert. Der Schritt 1000 ist der erste Schritt in dem Verfahren 235, wobei die Schutzmaßnahmen auf den Computer des Endnutzers 902 geladen werden. Das Verfahren 235 schreitet dann zu Schritt 1005 fort, wobei der Computer des Endnutzers 902 Inhalte von einem entfernten Server 908 abfragt. Das Verfahren 235 schreitet dann zu Schritt 1010 fort, wobei die Inhalte auf dem Computer des Endnutzers 902 empfangen werden. Das Verfahren 235 schreitet dann zu Schritt 1015 fort, wobei der Computer des Endnutzers 902 den Inhalten Schutzmaßnahmen voranstellt. Das Verfahren des Voranstellens von Schutzmaßnahmen wird detaillierter mit Bezug auf die Fig. 5 beschrieben. Das Verfahren 235 schreitet dann zu Schritt 1020 fort, wobei die geschützten Inhalte ausgeführt werden. Der Prozess des Ausführens geschützter Inhalte ist detaillierter mit Bezug auf die Fig. 6 beschrieben. Das Verfahren 235 schreitet dann zu Schritt 1025 fort, wobei Aktualisierungen geschützt werden. Das Verfahren 235 schreitet dann zu Entscheidungsschritt 1030 fort, wobei bestimmt wird, ob zusätzliche Inhalte angefragt werden. Wenn bestimmt wird, dass zusätzliche Inhalte angefragt werden, folgt das Verfahren 235 dem „Ja"-Zweig zu Schritt 1010. Wenn andererseits bei Schritt 630 bestimmt wird, dass keine zusätzlichen Inhalte angefragt werden, folgt das Verfahren 235 dem „Nein"-Zweig und das Verfahren 235 kehrt zu Schritt 240 zurück.
[0084] Alternative Ausführungsformen des Systems und des Verfahrens zur Laufzeitangriffsprävention werden für Fachleute offensichtlich, für die die vorliegende Erfindung einschlägig ist, ohne von dem Geist und Geltungsbereich dieser Offenbarung abzuweichen. Deshalb, obwohl diese Erfindung in beispielhafter Form mit einem gewissen Grad an Genauigkeit beschrieben worden ist, sollte verstanden werden, dass die vorliegende Offenbarung nur als Beispiel gemacht worden ist und dass zahlreiche Änderungen in den Details der Konstruktion und der Kombination und der Anordnung von Teilen oder Schritten ergriffen werden können ohne von dem Geist und Geltungsbereich der Erfindung abzuweichen. Demzufolge ist der Geltungsbereich der vorliegenden Erfindung durch die begleitenden Ansprüche definiert viel eher als durch die vorhergehende Beschreibung.< / script>
Claims
[1] A method for protecting a computer, comprising: intercepting content at a protection machine, the content being intended for a computer, the content being configured to access at least one function of the computer; Adding protective measures to the contents according to the function by the protection machine, with the protective measures configured to observe the function, wherein the step of adding protection measures comprises prefixing protection measures to the content; Transferring the contents and protection measures from the protection machine to the computer; and Executing the content and the protection measure on the computer; wherein the step of adding protection measures comprises: Determining a computing environment associated with the computer, the computing environment comprising at least one of the operating system, the Internet browser, and the applications installed on the computer; Identify initial protection measures according to the computer environment; and Adding initial protection measures to the content. [2] The method of claim 1, wherein observing the function comprises overriding the function. [3] The method of claim 1, wherein observing the function comprises analyzing the arguments passed to the function. [4] The method of claim 1, wherein the function comprises a function that reveals a vulnerability of the computer. [5] The method of claim 1, further comprising executing one of the protection measures in response to the call to the function, wherein executing the protection measure comprises determining whether the arguments of the contents passed to the function pose a threat to the computer. [6] The method of claim 5, further comprising the step of terminating execution of the contents without executing the function in response to determining that the arguments represent a threat. [7] The method of claim 5, further comprising the step of modifying the contents in response to determining that the arguments represent a threat. [8] The method of claim 5, further comprising the step of allowing the compromised function to perform normally in response to determining that no threat exists. [9] The method of claim 5, further comprising alerting at least one of an end user, a network administrator, and a third party of the threat in response to determining that the arguments constitute a threat. [10] The method of claim 1, further comprising the steps of: Determining a content type; Identify second protective measures that correspond to the type; and Adding the second protection measures to the content. [11] A system for protecting a computer, comprising: a first computer configured to receive content; a second computer configured to receive content from the first computer, the content configured to access at least one function of the second computer; a protection engine connected to the first computer, the protection engine being configured to intercept the content, add protection measures to the content, and transmit the protection measures and the content to the second computer, where adding protection measures to the content includes prefixing protection measures to the content, and where the protection measures override the function, so that the protection measures are executed when the content calls the function and determine whether the function poses a threat to the second computer, Executing the content and the protection measures on the second computer; wherein the step of adding protection measures comprises: Determining a computing environment associated with the second computer, the computing environment comprising at least one of the operating system, the Internet browser, and the applications installed on the second computer; Identify initial protection measures according to the computer environment; and Adding initial protection measures to the content. [12] The system of claim 11, wherein the protection measures are configured to modify the contents after determining that the function includes a threat. [13] The system of claim 11, wherein the protection measures are configured to terminate execution of the content after determining that the function includes a threat. [14] A method for runtime prevention of attacks on a computer, the method comprising: Receiving a request for executable content from a computer, the executable content configured to access at least one function of the computer; Adding protection measures to the content, where the protection measures override the functionality that the executable content can access, where adding safeguards includes putting the safeguards first; Transferring the protection measures and contents to the computer, and Executing the content and the protection measure on the computer; wherein the step of adding protection measures comprises: Determining a computing environment associated with the computer, the computing environment comprising at least one of the operating system, the Internet browser, and the applications installed on the computer; Identify initial protection measures according to the computer environment; and Adding initial protection measures to the content. [15] The method of claim 14, further comprising the step of executing the contents and the protection measures, comprising: Use the protection measures to determine whether the arguments passed to the executable contents of the function pose a threat to the computer. [16] The method of claim 15, further comprising terminating execution of the content in response to determining that the arguments pose a threat to the computer. [17] The method of claim 15, further comprising modifying the contents in response to determining that the arguments pose a threat to the computer. [18] A system for protecting a computer, comprising: a computer that exposes at least one function connected to a network, the computer configured to receive content over a network that is configured to access the function and execute the content upon receipt, the function comprising at least one argument; a protection engine connected to the network and configured to intercept the content before it is received by the computer and precede the content with a protection measure through the following steps: Determining a computing environment associated with the computer, the computing environment comprising at least one of the operating system, the Internet browser, and the applications installed on the computer; Identifying the protective measure appropriate to the computing environment; and Adding the protection measure to the content; wherein the protection measure is configured to be executed by the computer when the content attempts to perform the function, wherein the protection measure is further configured to analyze the argument to determine whether the argument includes a threat to the computer when passed to the function, wherein the protection measure is further configured to modify the execution of the contents in response to determining that the argument includes a threat to the computer when passed to the function, and wherein the protection measure is further configured to allow the function, as invoked by the content, to execute on the computer in response to determining that the argument does not include a threat to the computer when passed to the function, and execute the content and the protection measure on the computer in response to determining that the argument includes a threat to the computer. [19] The system of claim 18, wherein the protection measure is further configured to transmit an alert to at least one of an end user, a network administrator, and a third party in response to determining that the argument includes a threat to the computer when passed to the function.
Citation Information
Patent Citations
Method for protecting against denial of service attacks
US20070124687A1
System and method for inspecting dynamically generated executable code
US20070136811A1