DE112011101943T5 - Verfahren und Einheit zum Entschärfen von seitenübergreifenden Sicherheitslücken - Google Patents

Verfahren und Einheit zum Entschärfen von seitenübergreifenden Sicherheitslücken Download PDF

Info

Publication number
DE112011101943T5
DE112011101943T5 DE201111101943 DE112011101943T DE112011101943T5 DE 112011101943 T5 DE112011101943 T5 DE 112011101943T5 DE 201111101943 DE201111101943 DE 201111101943 DE 112011101943 T DE112011101943 T DE 112011101943T DE 112011101943 T5 DE112011101943 T5 DE 112011101943T5
Authority
DE
Germany
Prior art keywords
input value
output
matching input
computer
traffic
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE201111101943
Other languages
English (en)
Inventor
Guy Podjarny
Adi Sharabani
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112011101943T5 publication Critical patent/DE112011101943T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Virology (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Information Transfer Between Computers (AREA)
  • Debugging And Monitoring (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

Ein Verfahren, um zu verhindern, dass zerstörerischer Code innerhalb einer Skriptsprache einer Web-Anwendung eingebettet wird, auf die durch einen Web-Browser (308) zugegriffen wird, wobei das Verfahren Folgendes umfasst: Überwachen sämtlichen eingehenden Datenverkehrs (310), der durch den Web-Browser erzeugt wird, und ausgehenden Datenverkehrs (326), der durch einen Server (318) erzeugt wird, um einen überwachten Datenverkehr zu bilden; Ermitteln, ob ein eindeutiges Element, das in einer Konfigurationsdatei definiert ist, mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, um einen übereinstimmenden Eingabewert zu bilden; in Reaktion auf eine Ermittlung, dass das eindeutige Element mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, Speichern des übereinstimmenden Eingabewertes, wobei ermittelt wird, ob eine Ausgabe den übereinstimmenden Eingabewert an einer erwarteten Position enthält; in Reaktion auf eine Ermittlung, dass die Ausgabe den übereinstimmenden Eingabewert an einer erwarteten Position enthält, Codieren des übereinstimmenden Eingabewertes mithilfe einer jeweiligen Definition aus der Konfigurationsdatei; und Zurückgeben der Ausgabe (330) an den Anforderer.

Description

  • TECHNISCHES GEBIET DER ERFINDUNG
  • Diese Offenbarung bezieht sich allgemein auf Sicherheitslücken in Bezug auf seitenübergreifendes Scripting in Web-Anwendungen in einem Datenverarbeitungssystem und, genauer gesagt, darauf zu verhindern, dass zerstörerischer Code in einer Skriptsprache einer Web-Anwendung eingebettet wird, auf die durch einen Web-Browser zugegriffen wird.
  • HINTERGRUND DER ERFINDUNG
  • Seitenübergreifendes Scripting (cross-site scripting, XSS) ist ein weit verbreitetes Problem, bei dem in einer Form eine Benutzereingabe von einem Client unverändert in die zurückgegebene Hypertext-Auszeichnungssprachen(HTML)-Ausgabe von einem Server reflektiert oder zurückgemeldet wird. Dieser Typ einer Sicherheitslücke bedeutet, dass ein Angreifer sehr spezifische Nutzdaten erstellen kann, die, wenn sie in der Ausgabe zurückgemeldet werden, ein Skript beinhalten, das in dem Browser ausgeführt wird. Da das Skript als Teil der Ausgabe zurückgegeben wird, hat das Skript Zugriff auf alle Cookies und Daten, die mit der Domäne (z. B. einer Website) in Zusammenhang stehen, die die Ausgabe zurückgegeben hat. Durch Senden der erstellten Nutzdaten an ein entfernt angeordnetes Opfer wird die anfällige Site veranlasst, das zerstörerische Skript zurückzugeben und dabei dem zerstörerischen Skript zu gestatten, ohne durch einen Sicherheitsmechanismus einer Same-Origin-Policy des Browsers angewendete Einschränkungen vollständig mit der anfälligen Site in Wechselwirkung zu treten.
  • Eine besonders einfache Lösung für Cross-Site-Scripting besteht in einer Eingabeprüfung, die jedes Zeichen oder Muster abweist, das in der zurückgegebenen Ausgabe zu einer skriptgesteuerten Aktion führen kann. Eine Eingabeprüfung wird mithilfe eines positiven Sicherheitsmodells, das definiert, was zulässig ist, eines negativen Sicherheitsmodells, das definiert, was nicht zulässig ist, oder einer Kombination von Modellen durchgeführt. In beiden Fällen wird eine Anforderung, die definierte Bedingungen nicht erfüllt, abgewiesen oder modifiziert.
  • Bei dem negativen Sicherheitsmodell werden üblicherweise bekannte Muster von Angriffen zum Blockieren definiert. Beispielsweise kann eine Eingabe mit dem Wert „<script>”, bei der es sich um bekannte Angriffsnutzdaten handelt, blockiert werden. Das Hauptproblem bei diesem Modell besteht darin, bei allen möglichen vorhandenen Exploit-Mustern auf dem Laufenden zu bleiben, insbesondere, wenn generische Muster verwendet werden. Durch eine negative Sicherheitseingabeprüfung wird üblicherweise kein vollständiger Schutz erzielt, und daher wird Entwicklern geraten, nach Möglichkeit ein positives Sicherheitsmodell zu verwenden.
  • Bei dem positiven Sicherheits-Eingabeprüfungsmodell kann aufgrund der Schwierigkeit, ein Cross-Site-Scripting-Problem mit ausschließlich alphanumerischen Zeichen auszunutzen, eine Definition angegeben werden, nach der ausschließlich alphanumerische Zeichen zulässig sind. Das Hauptproblem bei dem positiven Sicherheits-Eingabeprüfungsmodell besteht in einer Möglichkeit, die Anwendung zu unterbrechen. Beispielsweise kann die Logik der Anwendung die Verwendung von potenziell gefährlichen Zeichen erfordern, was zu einer zunehmend schwierigen Aufgabe führt, alle möglichen Cross-Site-Scripting-Angriffsvektoren abzudecken, ohne die Funktion der Anwendung zu unterbrechen.
  • Eine alternative Lösung für Cross-Site-Scripting besteht im Bereinigen der Ausgabe, indem die Ausgabe codiert wird. Durch Codieren der Eingabe, bevor die Eingabe der Ausgabe hinzugefügt wird, wird sichergestellt, dass der Browser die empfangene Eingabe in der Ausgabe nicht als Skript verarbeitet. Da die Eingabe, die zurückgemeldet wird, der Ausgabe in vielen verschiedenen Kontexten hinzugefügt werden kann, darunter als Teil eines zurückgegebenen Attributes, als Wert einer Kennung, innerhalb eines Kommentars oder innerhalb einer Skriptkennung, muss die Codierung der Eingabe dem jeweiligen Kontext entsprechen.
  • Es wird beispielsweise eine Anforderung in den folgenden Codeausschnitten mit der folgenden URL betrachtet:
    http://server/welcome.jsp?name=John
  • Das Beispiel gibt den Namensparameter unverändert in zwei verschiedenen Kontexten in einer Ausgabe wie zum Beispiel der folgenden zurück:
    Figure 00030001
  • Um das Cross-Site-Scripting in der „Hello”-Anweisung auszunutzen, würde der Angreifer eine Anforderung wie die folgende senden:
    http://server/welcome.jsp?name=John<script>hijack()</script>
  • Die Anforderung wird dann wie folgt zurückgegeben:
    Figure 00030002
  • Das Skript wird aufgrund des ersten zurückgemeldeten Inhalts erfolgreich ausgenutzt, und bei dem Wert in dem Attribut handelt es sich um einen einfachen Wert. Die Lösung dieses Problems bestünde in der Verwendung der HTML-Codierungstechnik und insbesondere im Erzsetzen des Symbols „<” durch das Symbol „&lt”.
  • Um das Cross-Site-Scripting im zweiten Fall auszunutzen, würde der Angreifer eine andere Anforderung senden, zum Beispiel folgende:
    http://server/welcome.jsp?name=John”;hijack()//
  • Die Anforderung wird dann wie folgt zurückgegeben:
    Figure 00040001
  • Das Skript in dem Beispiel wird aufgrund der zweiten Instanz des zurückgemeldeten Inhalts und des neu hinzugefügten JavaScriptTM-Codes (Java und alle Marken und Logos auf der Grundlage von Java sind Marken oder eingetragene Marken von Oracle und/oder seinen verbundenen Unternehmen) erfolgreich ausgenutzt. Der Begrüßungstext bleibt einfacher Text. Die Lösung des Problems des Beispiels bestünde in der Verwendung der STRING-Codierungstechnik, bei der die doppelten Anführungszeichen durch \" (einen umgekehrten Schrägstrich + doppelte Anführungszeichen) ersetzt werden.
  • Die soeben beschriebenen Lösungen sind fundiert und klar strukturiert, erfordern jedoch eine Modifizierung des Anwendungscodes, wobei es sich um einen kostspieligen und bisweilen schwierigen Prozess handelt, insbesondere bei traditionellen Anwendungen, Modulen von Fremdanbietern und ausgegliederten Anwendungen. Die Modifizierung von Code erfordert Zeit, wodurch das System ungeschützt ist, wenn es bereits implementiert ist, bis der Code korrigiert ist.
  • Automatisierte Werkzeuge wie zum Beispiel eine Firewall für eine Web-Anwendung lösen dieses Problem durch Bereitstellen einer Eingabebereinigungslösung. Eine Eingabebereinigung verwendet üblicherweise negative Sicherheitsmuster, zum Beispiel komplizierte reguläre Ausdrücke, die versuchen, alle möglichen Nutzdaten auszuschließen. Dieser Ansatz ist zweckdienlich, jedoch nur eine Teillösung, da mögliche Varianten von Cross-Site-Scripting-Angriffen praktisch unbegrenzt sind. Die Werkzeuge bieten häufig allgemeine negative Sicherheitsregeln, die angeben, welche Muster nicht zulässig sind, und ermöglichen dem Benutzer, konkretere Sicherheitsregeln zu bestimmen, diese Regeln sind jedoch schwierig zu pflegen. Daher besteht ein Bedarf nach einer automatisierten Lösung für Einschleusungsangriffe wie zum Beispiel Cross-Site-Scripting-Angriffe.
  • US 2008/0 263 650 offenbart eine wirksame Abwehr von seitenübergreifenden Angriffen, bei der Web-Seiten auf einer Site gespeichert werden. Die Web-Seiten werden in Einstiegsseiten, die keine Eingabe zulassen, und in geschützte Seiten geordnet, bei denen es sich nicht um Einstiegsseiten handelt.
  • US 2007/0 113 282 offenbart eine Einheit zum Empfangen und Verarbeiten von Dateninhalt, der zumindest einen Aufruf einer ursprünglichen Funktion aufweist, die einen Hook-Skriptgenerator und ein Skriptverarbeitungsmodul beinhaltet. Der Hook-Skriptgenerator ist so konfiguriert, dass er ein Hook-Skript erzeugt, das zumindest eine Hook-Funktion aufweist. Jede Hook-Funktion ist so konfiguriert, dass sie eine entsprechende ursprüngliche Funktion ersetzt. Die Hook-Funktion stellt eine Erkennung und Steuerung der Dateninhaltsverarbeitung zur Laufzeit bereit.
  • US 2004/0 260 754 offenbart ein Verfahren zum Entschärfen von Cross-Site-Scripting-Angriffen. Wenn eine HTTP-Anforderung von einem Benutzercomputer empfangen wird, wird die HTTP-Anforderung ausgewertet, um festzustellen, ob sie eine Skriptkonstruktion beinhaltet. Insbesondere werden Daten auf das Vorhandensein von Skriptkonstruktionen untersucht, die von einer externen Quelle stammen, die in der HTTP-Anforderung enthalten ist. Das Vorhandensein einer Skriptkonstruktion weist darauf hin, dass ein Cross-Site-Scripting-Angriff ausgeführt wird, und der Server-Computer ist in der Lage zu verhindern, dass der Angriff durchgeführt wird.
  • KURZDARSTELLUNG DER ERFINDUNG
  • Gemäß einer Ausführungsform ein computerimplementierter Prozess zum Entschärfen von Einschleusungsangriffen. Der computerimplementierte Prozess überwacht sämtlichen eingehenden Datenverkehr und ausgehenden Datenverkehr, um einen überwachten Datenverkehr zu bilden, ermittelt, ob ein eindeutiges Element mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, um einen übereinstimmenden Eingabewert zu bilden, und speichert in Reaktion auf eine Ermittlung, dass das eindeutige Element mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, den übereinstimmenden Eingabewert. Der computerimplementierte Prozess ermittelt des Weiteren, ob eine Ausgabe den übereinstimmenden Eingabewert an einer erwarteten Position enthält, und codiert in Reaktion auf eine Ermittlung, dass die Ausgabe den übereinstimmenden Eingabewert an einer erwarteten Position enthält, den übereinstimmenden Eingabewert mithilfe einer jeweiligen Definition aus einer Konfigurationsdatei und gibt die Ausgabe an den Anforderer zurück.
  • Gemäß einer weiteren Ausführungsform umfasst ein Computerprogrammprodukt zum Entschärfen von Einschleusungsangriffen ein computerbeschreibbares Medium, das einen darauf gespeicherten computerausführbaren Programmcode enthält. Der computerausführbare Programmcode umfasst einen computerausführbaren Programmcode zum Überwachen sämtlichen eingehenden Datenverkehrs und ausgehenden Datenverkehrs, um einen überwachten Datenverkehr zu bilden, einen computerausführbaren Programmcode zum Ermitteln, ob ein eindeutiges Element mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, um einen übereinstimmenden Eingabewert zu bilden, einen computerausführbaren Programmcode, der auf eine Ermittlung reagiert, dass das eindeutige Element mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, um den übereinstimmenden Eingabewert zu speichern, einen computerausführbaren Programmcode zum Ermitteln, ob eine Ausgabe den übereinstimmenden Eingabewert an einer erwarteten Position enthält, einen computerausführbaren Programmcode, der auf eine Ermittlung reagiert, dass die Ausgabe den übereinstimmenden Eingabewert an einer erwarteten Position enthält, um den übereinstimmenden Eingabewert mithilfe einer jeweiligen Definition aus einer Konfigurationsdatei zu codieren, und einen computerausführbaren Programmcode zum Zurückgeben der Ausgabe an den Anforderer.
  • Gemäß einer weiteren Ausführungsform umfasst eine Vorrichtung zum Entschärfen von Einschleusungsangriffen eine Datenaustauschstruktur, einen Speicher, der mit der Datenaustauschstruktur verbunden ist, wobei der Speicher computerausführbaren Programmcode enthält, eine mit der Datenaustauschstruktur verbundene Datenaustauscheinheit, eine mit der Datenaustauschstruktur verbundene Eingabe/Ausgabe-Einheit, eine mit der Datenaustauschstruktur verbundene Anzeige und eine mit der Datenaustauschstruktur verbundene Prozessoreinheit. Die Prozessoreinheit führt den computerausführbaren Programmcode aus, um die Vorrichtung so zu steuern, dass sie sämtlichen eingehenden Datenverkehr und ausgehenden Datenverkehr überwacht, um einen überwachten Datenverkehr zu bilden, dass sie ermittelt, ob ein eindeutiges Element mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, um einen übereinstimmenden Eingabewert zu bilden, und dass sie in Reaktion auf eine Ermittlung, dass das eindeutige Element mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, den übereinstimmenden Eingabewert speichert. Die Prozessoreinheit führt des Weiteren den computerausführbaren Programmcode aus, um die Vorrichtung so zu steuern, dass sie ermittelt, ob eine Ausgabe den übereinstimmenden Eingabewert an einer erwarteten Position enthält, und in Reaktion auf eine Ermittlung, dass die Ausgabe den übereinstimmenden Eingabewert an einer erwarteten Position enthält, den übereinstimmenden Eingabewert mithilfe einer jeweiligen Definition aus einer Konfigurationsdatei codiert und die Ausgabe an den Anforderer zurückgibt.
  • Von einem ersten Aspekt aus betrachtet, stellt die vorliegende Erfindung ein Verfahren bereit, um zu verhindern, dass zerstörerischer Code innerhalb einer Skriptsprache einer Web-Anwendung eingebettet wird, auf die durch einen Web-Browser zugegriffen wird, wobei das Verfahren Folgendes umfasst: Überwachen sämtlichen eingehenden Datenverkehrs, der durch den Web-Browser erzeugt wird, und ausgehenden Datenverkehrs, der durch einen Server erzeugt wird, um einen überwachten Datenverkehr zu bilden; Ermitteln, ob ein eindeutiges Element, das in einer Konfigurationsdatei definiert ist, mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, um einen übereinstimmenden Eingabewert zu bilden; in Reaktion auf eine Ermittlung, dass das eindeutige Element mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, Speichern des übereinstimmenden Eingabewertes, wobei ermittelt wird, ob eine Ausgabe den übereinstimmenden Eingabewert an einer erwarteten Position enthält; in Reaktion auf eine Ermittlung, dass die Ausgabe den übereinstimmenden Eingabewert an einer erwarteten Position enthält, Codieren des übereinstimmenden Eingabewertes mithilfe einer jeweiligen Definition aus einer Konfigurationsdatei; und Zurückgeben der Ausgabe an den Anforderer.
  • Die vorliegende Erfindung stellt bevorzugt ein Verfahren bereit, wobei das Ermitteln, ob eine Ausgabe den übereinstimmenden Eingabewert an einer erwarteten Position enthält, des Weiteren Folgendes umfasst: Ermitteln, ob ein jeweiliges eindeutiges Element in der Ausgabe zurückgemeldet wird; und Identifizieren einer Position und eines Kontextes, die einem eindeutigen Element zugehörig sind, in der Ausgabe, wobei das Ermitteln und Identifizieren des Weiteren eine Einschleusung von eindeutigen Werten beinhaltet.
  • Die vorliegende Erfindung stellt bevorzugt ein Verfahren bereit, wobei das Ermitteln, ob ein eindeutiges Element mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, des Weiteren Folgendes umfasst: Identifizieren einer Seite einer Anwendung und zugehöriger Eingaben der Seite, um einen Satz von identifizierten Eingaben zu bilden; Umwandeln jeder Eingabe in dem Satz von identifizierten Eingaben, um ein jeweiliges eindeutiges Element zu bilden; und erneutes Senden der Eingabe mithilfe der jeweiligen eindeutigen Elemente.
  • Die vorliegende Erfindung stellt bevorzugt ein Verfahren bereit, wobei das Identifizieren einer Position und eines Kontextes, die einem eindeutigen Element zugehörig sind, in der Ausgabe des Weiteren Folgendes umfasst: Exportieren eines Überprüfungsergebnisses in die Konfigurationsdatei.
  • Die vorliegende Erfindung stellt bevorzugt ein Verfahren bereit, wobei die Konfigurationsdatei eine Liste jeder Eingabe des Satzes von identifizierten Eingaben und jeweiligen erwarteten Ausgabepositionen und -kontexten enthält.
  • Die vorliegende Erfindung stellt bevorzugt ein Verfahren bereit, wobei in Reaktion auf eine Ermittlung, dass das eindeutige Element nicht mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, die Überwachung sämtlichen eingehenden und ausgehenden Datenverkehrs fortgesetzt wird.
  • Die vorliegende Erfindung stellt bevorzugt ein Verfahren bereit, wobei in Reaktion auf eine Ermittlung, dass die Ausgabe den übereinstimmenden Eingabewert nicht an einer erwarteten Position enthält, der übereinstimmende Eingabewert mithilfe einer Standarddefinition codiert wird.
  • Von einem weiteren Aspekt aus betrachtet, stellt die vorliegende Erfindung ein Computerprogrammprodukt zum Entschärfen von Einschleusungsangriffen bereit, wobei das Computerprogrammprodukt Folgendes umfasst: ein computerbeschreibbares Medium, das darauf gespeicherten computerausführbaren Programmcode enthält, wobei der computerausführbare Programmcode Folgendes umfasst: einen computerausführbaren Programmcode zum Überwachen sämtlichen eingehenden Datenverkehrs und ausgehenden Datenverkehrs, um einen überwachten Datenverkehr zu bilden; einen computerausführbaren Programmcode zum Ermitteln, ob ein eindeutiges Element mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, um einen übereinstimmenden Eingabewert zu bilden, einen computerausführbaren Programmcode, der auf eine Ermittlung reagiert, dass das eindeutige Element mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, um den übereinstimmenden Eingabewert zu speichern, einen computerausführbaren Programmcode zum Ermitteln, ob eine Ausgabe den übereinstimmenden Eingabewert an einer erwarteten Position enthält; einen computerausführbaren Programmcode, der auf eine Ermittlung reagiert, dass die Ausgabe den übereinstimmenden Eingabewert an einer erwarteten Position enthält, um den übereinstimmenden Eingabewert mithilfe einer jeweiligen Definition aus einer Konfigurationsdatei zu codieren; und einen computerausführbaren Programmcode zum Zurückgeben der Ausgabe an den Anforderer.
  • Die vorliegende Erfindung stellt bevorzugt ein Computerprogrammprodukt bereit, wobei der computerausführbare Programmcode zum Ermitteln, ob ein eindeutiges Element mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, des Weiteren Folgendes umfasst: einen computerausführbaren Programmcode zum Identifizieren einer Seite einer Anwendung und zugehöriger Eingaben der Seite, um einen Satz von identifizierten Eingaben zu bilden; einen computerausführbaren Programmcode zum Umwandeln jeder Eingabe in dem Satz von identifizierten Eingaben, um ein jeweiliges eindeutiges Element zu bilden; und einen computerausführbaren Programmcode zum erneuten Senden der Ausgabe mithilfe der jeweiligen eindeutigen Elemente.
  • Die vorliegende Erfindung stellt bevorzugt ein Computerprogrammprodukt bereit, wobei der computerausführbare Programmcode zum Ermitteln, ob eine Ausgabe den übereinstimmenden Eingabewert an einer erwarteten Position enthält, des Weiteren Folgendes umfasst: einen computerausführbaren Programmcode zum Ermitteln, ob ein jeweiliges eindeutiges Element in der Ausgabe zurückgemeldet wird; und einen computerausführbaren Programmcode zum Identifizieren einer Position und eines Kontextes, die einem eindeutigen Element zugehörig sind, in der Ausgabe, wobei der computerausführbare Programmcode zum Ermitteln und Identifizieren des Weiteren einen computerausführbaren Programmcode zum Einschleusen von eindeutigen Werten beinhaltet.
  • Die vorliegende Erfindung stellt bevorzugt ein Computerprogrammprodukt bereit, wobei der computerausführbare Programmcode zum Identifizieren einer Position und eines Kontextes, die einem eindeutigen Element zugehörig sind, in der Ausgabe des Weiteren Folgendes umfasst: einen computerausführbaren Programmcode zum Exportieren eines Überprüfungsergebnisses in die Konfigurationsdatei.
  • Die vorliegende Erfindung stellt bevorzugt ein Computerprogrammprodukt bereit, wobei die Konfigurationsdatei eine Liste jeder Eingabe des Satzes von identifizierten Eingaben und jeweiligen erwarteten Ausgabepositionen und -kontexten enthält.
  • Die vorliegende Erfindung stellt bevorzugt ein Computerprogrammprodukt bereit, wobei der computerausführbare Programmcode, der auf eine Ermittlung reagiert, dass das eindeutige Element nicht mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, des Weiteren einen computerausführbaren Programmcode zum Fortsetzen der Überwachung sämtlichen eingehenden und ausgehenden Datenverkehrs umfasst.
  • Die vorliegende Erfindung stellt bevorzugt ein Computerprogrammprodukt bereit, wobei ein computerausführbarer Programmcode, der auf eine Ermittlung reagiert, dass die Ausgabe den übereinstimmenden Eingabewert nicht an einer erwarteten Position enthält, des Weiteren einen computerausführbaren Programmcode zum Codieren des übereinstimmenden Eingabewertes mithilfe einer Standarddefinition umfasst.
  • Von einem weiteren Aspekt aus betrachtet, stellt die vorliegende Erfindung eine Vorrichtung zum Entschärfen von Einschleusungsangriffen bereit, wobei die Vorrichtung Folgendes umfasst: eine Datenaustauschstruktur, einen Speicher, der mit der Datenaustauschstruktur verbunden ist, wobei der Speicher computerausführbaren Programmcode enthält; eine mit der Datenaustauschstruktur verbundene Datenaustauscheinheit; eine mit der Datenaustauschstruktur verbundene Eingabe/Ausgabe-Einheit; eine mit der Datenaustauschstruktur verbundene Anzeige; und eine mit der Datenaustauschstruktur verbundene Prozessoreinheit, wobei die Prozessoreinheit den computerausführbaren Programmcode ausführt, um die Vorrichtung zu Folgendem zu steuern: Überwachen sämtlichen eingehenden Datenverkehrs und ausgehenden Datenverkehrs, um einen überwachten Datenverkehr zu bilden; Ermitteln, ob ein eindeutiges Element mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, um einen übereinstimmenden Eingabewert zu bilden; in Reaktion auf eine Ermittlung, dass das eindeutige Element mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, Speichern des übereinstimmenden Eingabewertes, Ermitteln, ob eine Ausgabe den übereinstimmenden Eingabewert an einer erwarteten Position enthält; in Reaktion auf eine Ermittlung, dass die Ausgabe den übereinstimmenden Eingabewert an einer erwarteten Position enthält, Codieren des übereinstimmenden Eingabewertes mithilfe einer jeweiligen Definition aus einer Konfigurationsdatei; und Zurückgeben der Ausgabe an den Anforderer.
  • Die vorliegende Erfindung stellt bevorzugt eine Vorrichtung bereit, in der die Prozessoreinheit des Weiteren den computerausführbaren Programmcode ausführt, um zu ermitteln, ob ein eindeutiges Element mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, um die Vorrichtung zu Folgendem zu steuern: Identifizieren einer Seite einer Anwendung und zugehöriger Eingaben der Seite, um einen Satz von identifizierten Eingaben zu bilden; Umwandeln jeder Eingabe in dem Satz von identifizierten Eingaben, um ein jeweiliges eindeutiges Element zu bilden; und erneutes Senden der Eingabe mithilfe der jeweiligen eindeutigen Elemente.
  • Die vorliegende Erfindung stellt bevorzugt eine Vorrichtung bereit, in der die Prozessoreinheit des Weiteren den computerausführbaren Programmcode ausführt, um zu ermitteln, ob eine Ausgabe den übereinstimmenden Eingabewert an einer erwarteten Position enthält, um die Vorrichtung zu Folgendem zu steuern: Ermitteln, ob ein jeweiliges eindeutiges Element in der Ausgabe zurückgemeldet wird; und Identifizieren einer Position und eines Kontextes, die in der Ausgabe einem eindeutigen Element zugehörig sind, in der die Vorrichtung zum Ermitteln und Identifizieren weiterer Anzeigeoptionen zum Einschleusen eindeutiger Werte gesteuert wird.
  • Die vorliegende Erfindung stellt bevorzugt eine Vorrichtung bereit, wobei die Prozessoreinheit des Weiteren den computerausführbaren Programmcode ausführt, um eine Position und einen Kontext, die einem eindeutigen Element zugehörig sind, in der Ausgabe zu identifizieren, um die Vorrichtung zu Folgendem zu steuern: Exportieren eines Überprüfungsergebnisses in die Konfigurationsdatei.
  • Die vorliegende Erfindung stellt bevorzugt eine Vorrichtung bereit, wobei die Konfigurationsdatei eine Liste jeder Eingabe des Satzes von identifizierten Eingaben und jeweiligen erwarteten Ausgabepositionen und -kontexten enthält.
  • Die vorliegende Erfindung stellt bevorzugt eine Vorrichtung bereit, wobei die Prozessoreinheit des Weiteren den computerausführbaren Programmcode in Reaktion auf eine Ermittlung, dass die Ausgabe den übereinstimmenden Eingabewert nicht an einer erwarteten Position enthält, ausführt, um die Vorrichtung so zu steuern, dass sie den übereinstimmenden Eingabewert mithilfe einer Standarddefinition codiert.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Eine bevorzugte Ausführungsform der vorliegenden Erfindung wird nun lediglich als Beispiel unter Bezugnahme auf die beigefügten Zeichnungen beschrieben, für die gilt:
  • 1 ist ein Blockschaubild eines beispielhaften Netzwerk-Datenverarbeitungssystems, das für verschiedene bevorzugte Ausführungsformen der vorliegenden Erfindung eingesetzt werden kann;
  • 2 ist ein Blockschaubild eines beispielhaften Datenverarbeitungssystems in dem Netzwerk-Datenverarbeitungssystem von 1, das für verschiedene bevorzugte Ausführungsformen der vorliegenden Erfindung eingesetzt werden kann;
  • 3 ist ein Blockschaubild eines Systems zum Entschärfen von Einschleusungsangriffen gemäß verschiedener bevorzugter Ausführungsformen der vorliegenden Erfindung;
  • 4 ist ein Ablaufplan eines Prozesses unter Verwendung des Systems zum Entschärfen von Einschleusungsangriffen von 3 gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung; und
  • 5 ist ein Ablaufplan eines Konfigurationsdatei-Erstellungsprozesses, der mit dem Prozess von 4 gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung verwendet wird.
  • GENAUE BESCHREIBUNG DER ERFINDUNG
  • Wenngleich im Folgenden eine veranschaulichende Umsetzung einer oder mehrerer Ausführungsformen bereitgestellt wird, können die offenbarten Systeme und/oder Verfahren mithilfe einer beliebigen Anzahl von Techniken umgesetzt werden. Diese Offenbarung soll in keiner Weise auf die veranschaulichenden Umsetzungen, Zeichnungen und Techniken, die im Folgenden veranschaulicht werden, wie zum Beispiel die hierin veranschaulichten und beschriebenen beispielhaften Entwürfe und Umsetzungen beschränkt werden, sondern sie kann innerhalb des Umfangs der beigefügten Ansprüche zusammen mit dem vollen Umfang ihrer gleichartigen Ansprüche modifiziert werden.
  • Wie für einen Fachmann zu erkennen ist, kann die vorliegende Offenbarung als System, Verfahren oder Computerprogrammprodukt verkörpert werden. Dementsprechend kann die vorliegende Offenbarung eine reine Hardware-Ausführungsform, eine reine Software-Ausführungsform (darunter Firmware, residente Software, Mikrocode usw.) oder eine Ausführungsform annehmen, in der Software- und Hardware-Aspekte kombiniert werden, die sämtlich hierin verallgemeinernd als „Schaltung”, „Modul” oder „System” bezeichnet werden können. Des Weiteren kann die vorliegende Erfindung die Form eines Computerprogrammprodukts annehmen, das greifbar in einem beliebigen Ausdrucksmedium verkörpert ist, wobei computerverwendbarer Programmcode in dem Medium verkörpert ist.
  • Computerprogrammcode zum Ausführen von Vorgängen der vorliegenden Offenbarung kann in jeder Kombination einer oder mehrerer Programmiersprachen geschrieben werden, zum Beispiel in einer objektorientierten Programmiersprache wie etwa JavaTM, Smalltalk, C++ oder dergleichen und in herkömmlichen verfahrensorientierten Programmiersprachen wie zum Beispiel der Programmiersprache „C” oder ähnlichen Programmiersprachen. Java und alle Marken und Logos auf der Grundlage von Java sind Marken oder eingetragene Marken von Oracle und/oder seinen verbundenen Unternehmen. Der Programmcode kann vollständig auf dem Computer des Benutzers, zum Teil auf dem Computer des Benutzers, als eigenständiges Software-Paket, zum Teil auf dem Computer des Benutzers und zum Teil auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In letzterem Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch jede Art von Netzwerk verbunden sein, zum Beispiel durch ein lokales Netzwerk (local area network, LAN) oder ein Weitverkehrs-Netzwerk (wide area network, WAN), oder die Verbindung kann mit einem externen Computer (zum Beispiel über das Internet mithilfe eines Internet-Diensteanbieters) hergestellt werden.
  • Die vorliegende Offenbarung wird nachfolgend unter Bezugnahme auf Ablaufpläne und/oder Blockschaubilder von Verfahren, Vorrichtungen, Systemen und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Ablaufpläne und/oder Blockschaubilder und Kombinationen von Blöcken in den Ablaufplänen und/oder Blockschaubildern durch Computerprogrammbefehle umgesetzt werden kann/können.
  • Diese Computerprogrammbefehle können für einen Prozessor eines Universalcomputers, eines Spezialcomputers oder einer sonstigen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Befehle, die über den Prozessor des Computers oder einer sonstigen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel zum Umsetzen der Funktionen/Vorgänge erzeugen, die in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben sind. Diese Computerprogrammbefehle können auch in einem computerlesbaren Medium gespeichert werden, das einen Computer oder eine sonstige programmierbare Datenverarbeitungsvorrichtung so steuern kann, dass sie in einer bestimmten Weise funktionieren, sodass die in dem computerlesbaren Medium gespeicherten Befehle einen hergestellten Gegenstand (article of manufacture) erzeugen, der Befehlsmittel beinhaltet, die die Funktion/Handlung umsetzen, die in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben ist.
  • Die Computerprogrammbefehle können außerdem auf einen Computer oder eine sonstige programmierbare Datenverarbeitungsvorrichtung geladen werden, um zu bewirken, dass eine Reihe von Schritten eines Vorgangs auf dem Computer oder einer sonstigen programmierbaren Vorrichtung ausgeführt wird, um einen computerimplementierten Prozess zu erzeugen, sodass die auf dem Computer oder einer sonstigen programmierbaren Vorrichtung ausgeführten Befehle Prozesse bereitstellen, um die in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegebenen Funktionen/Vorgänge umzusetzen.
  • Es werden nun unter Bezugnahme auf die Figuren und insbesondere unter Bezugnahme auf 1 und 2 beispielhafte Schaubilder von Datenverarbeitungsumgebungen bereitgestellt, in denen veranschaulichende Ausführungsformen umgesetzt werden können. Es ist zu beachten, dass 1 und 2 lediglich als Beispiele dienen und nicht dazu bestimmt sind, eine Einschränkung in Bezug auf die Umgebungen, in denen verschiedene Ausführungsformen umgesetzt werden können, geltend zu machen oder zu implizieren. Es können zahlreiche Modifizierungen an den dargelegten Umgebungen vorgenommen werden.
  • 1 legt eine bildliche Darstellung eines Netzwerks von Datenverarbeitungssystemen dar, in dem veranschaulichende Umgebungen umgesetzt werden können. Bei einem Netzwerk-Datenverarbeitungssystem 100 handelt es sich um ein Netzwerk von Computern, in dem die veranschaulichenden Ausführungsformen umgesetzt werden können. Das Netzwerk-Datenverarbeitungssystem 100 enthält ein Netzwerk 102, bei dem es sich um das Medium handelt, das zum Bereitstellen von Datenaustauschverbindungen zwischen verschiedenen Einheiten und Computern verwendet wird, die innerhalb des Netzwerk-Datenverarbeitungssystems 100 miteinander verbunden sind. Das Netzwerk 102 kann Verbindungen wie zum Beispiel drahtgebundene und drahtlose Datenaustauschverbindungen oder Lichtwellenleiterkabel beinhalten.
  • In dem dargelegten Beispiel sind ein Server 104 und ein Server 106 zusammen mit einer Speichereinheit 108 mit dem Netz 102 verbunden. Darüber hinaus sind Clients 110, 112 und 114 mit dem Netzwerk 102 verbunden. Bei den Clients 110, 112 und 114 kann es sich zum Beispiel um Personalcomputer oder Netzwerkcomputer handeln. In dem dargelegten Beispiel stellt der Server 104 den Clients 110, 112 und 114 Daten wie zum Beispiel Startdateien, Betriebssystemabbilder und Anwendungen bereit. In diesem Beispiel handelt es sich bei den Clients 110, 112 und 114 um Clients des Servers 104. Das Netzwerk-Datenverarbeitungssystem 100 kann zusätzliche Server, Clients und sonstige Einheiten beinhalten, die nicht dargestellt sind.
  • In dem dargestellten Beispiel handelt es sich bei dem Netzwerk-Datenverarbeitungssystem 100 um das Internet, wobei das Netzwerk 102 einen weltweiten Bestand von Netzwerken und Gateways darstellt, die die Transmission-Control-Protocol/Internet-Protocol(TCP/IP)-Gruppe von Protokollen dazu verwenden, Daten miteinander auszutauschen. Im Kern des Internet befindet sich eine Zentralverbindung aus Hochgeschwindigkeits-Datenaustauschverbindungen zwischen Hauptknoten oder Host-Computern, die aus Tausenden von kommerziellen, behördlichen, Bildungs- und sonstigen Computersystemen bestehen, die Daten und Nachrichten weiterleiten. Selbstverständlich kann das Netzwerk-Datenverarbeitungssystem 100 auch als eine Reihe verschiedener Netzwerktypen wie zum Beispiel ein Intranet, ein lokales Netzwerk (LAN) oder ein Weitverkehrs-Netzwerk (WAN) umgesetzt werden. 1 ist als Beispiel gemeint und nicht als architektonische Einschränkung der verschiedenen veranschaulichenden Ausführungsformen.
  • Was 2 betrifft, so wird ein Blockschaubild eines beispielhaften Datenverarbeitungssystems dargestellt, das für verschiedene Ausführungsformen der Offenbarung eingesetzt werden kann. Bei diesem veranschaulichenden Beispiel beinhaltet ein Datenverarbeitungssystem 200 eine Datenaustauschstruktur 202, die einen Datenaustausch zwischen einer Prozessoreinheit 204, einem Speicher 206, einem nichtflüchtigen Speicher 208, einer Datenaustauscheinheit 210, einer Eingabe/Ausgabe(E/A)-Einheit 212 und einer Anzeige 214 bereitstellt.
  • Die Prozessoreinheit 204 dient zum Ausführen von Befehlen für Software, die in den Speicher 206 geladen werden kann. Bei der Prozessoreinheit 204 kann es sich abhängig von der jeweiligen Umsetzung um einen Satz aus einem oder mehreren Prozessoren oder um einen Mehrprozessorkern handeln. Des Weiteren kann die Prozessoreinheit 204 mithilfe eines oder mehrerer heterogener Prozessorsysteme umgesetzt werden, in denen sich ein Hauptprozessor mit untergeordneten Prozessoren auf einem einzigen Chip befindet. Als weiteres veranschaulichendes Beispiel kann es sich bei der Prozessoreinheit 204 um ein symmetrisches Mehrprozessorsystem handeln, das mehrere Prozessoren desselben Typs enthält.
  • Der Speicher 206 und der nichtflüchtige Speicher 208 sind Beispiele für Speichereinheiten 216. Eine Speichereinheit ist eine Hardware, die in der Lage ist, Informationen wie Daten, Programmcode in funktionaler Form und/oder sonstige Daten entweder zeitweilig und/oder dauerhaft zu speichern, wobei die genannten Beispiele keine Einschränkung bedeuten sollen. Bei dem Speicher 206 kann es sich in diesen Beispielen etwa um einen Direktzugriffsspeicher oder eine beliebige sonstige geeignete flüchtige oder nichtflüchtige Speichereinheit handeln. Der nichtflüchtige Speicher 208 kann abhängig von der jeweiligen Umsetzung verschiedene Formen annehmen. Beispielsweise kann der nichtflüchtige Speicher 208 eine oder mehrere Komponenten oder Einheiten enthalten. Bei dem nichtflüchtigen Speicher 208 kann es sich zum Beispiel um eine Festplatte, einen Flash-Speicher, eine wiederbeschreibbare optische Speicherplatte, ein wiederbeschreibbares Magnetband oder um eine Kombination der Obigen handeln. Die durch den nichtflüchtigen Speicher 208 verwendeten Medien können auch auswechselbar sein. Beispielsweise kann eine Wechselfestplatte als nichtflüchtiger Speicher 208 verwendet werden.
  • Die Datenaustauscheinheit 210 stellt in diesen Beispielen einen Datenaustausch mit sonstigen Datenverarbeitungssystemen oder -einheiten bereit. In diesen Beispielen handelt es sich bei der Datenaustauscheinheit 210 um eine Netzwerk-Schnittstellenkarte. Die Datenaustauscheinheit 210 kann einen Datenaustausch durch die Verwendung entweder von physischen oder von drahtlosen Datenaustauschverbindungen oder unter Verwendung beider bereitstellen.
  • Die Eingabe/Ausgabe-Einheit 212 ermöglicht die Eingabe und Ausgabe von Daten mit sonstigen Einheiten, die mit dem Datenverarbeitungssystem 200 verbunden sein können. Die Eingabe/Ausgabe-Einheit 212 kann zum Bespiel eine Verbindung für Benutzereingaben durch eine Tastatur, eine Maus und/oder eine sonstige geeignete Eingabeeinheit bereitstellen. Des Weiteren kann die Eingabe/Ausgabe-Einheit 212 Ausgaben an einen Drucker senden. Die Anzeige 214 stellt einen Mechanismus zum Anzeigen von Daten für einen Benutzer bereit.
  • Befehle für das Betriebssystem, Anwendungen und/oder Programme können sich in den Speichereinheiten 216 befinden, die durch die Datenaustauschstruktur 202 Daten mit der Prozessoreinheit 204 austauschen. In diesen veranschaulichenden Beispielen liegen die Befehle in einer funktionalen Form in dem nichtflüchtigen Speicher 208 vor. Diese Befehle können zur Ausführung durch die Prozessoreinheit 204 in den Speicher 206 geladen werden. Die Prozesse der verschiedenen Ausführungsformen können durch die Prozessoreinheit 204 mithilfe von computerimplementierten Befehlen ausgeführt werden, die sich in einem Speicher wie zum Beispiel dem Speicher 206 befinden können.
  • Diese Befehle werden als Programmcode, computerverwendbarer Programmcode oder computerlesbarer Programmcode bezeichnet, der von einem Prozessor in der Prozessoreinheit 204 gelesen und ausgeführt werden kann. Der Programmcode in den verschiedenen Ausführungsformen kann auf verschiedenen physischen oder greifbaren computerlesbaren Medien wie zum Beispiel dem Speicher 206 oder dem nichtflüchtigen Speicher 208 verkörpert sein.
  • Der Programmcode 218 befindet sich in einer funktionalen Form auf computerlesbaren Medien 220, die selektiv entfernbar sind, und kann zur Ausführung durch die Prozessoreinheit 204 in das Datenverarbeitungssystem 200 geladen oder übertragen werden. Der Programmcode 218 und die computerlesbaren Medien 220 bilden in diesen Beispielen ein Computerprogrammprodukt 222. In einem Beispiel können die computerlesbaren Medien 220 in einer greifbaren Form wie zum Beispiel als optische Platte oder Magnetplatte vorliegen, die zur Übertragung auf eine Speichereinheit wie zum Beispiel ein Festplattenlaufwerk, das einen Teil des nichtflüchtigen Speichers 208 bildet, in ein Laufwerk oder eine sonstige Einheit eingelegt werden, bei der es sich um einen Teil des nichtflüchtigen Speichers 208 handelt. In einer greifbaren Form können die computerlesbaren Medien 220 auch die Form eines nichtflüchtigen Speichers wie zum Beispiel eines Festplattenlaufwerks, eines USB-Speichersticks oder eines Flash-Speichers annehmen, das/der mit dem Datenverarbeitungssystem 200 verbunden ist. Die greifbare Form der computerlesbaren Medien 220 wird auch als computerbeschreibbares Speichermedium bezeichnet. In einigen Fällen ist es möglich, dass die computerlesbaren Medien 220 nicht entfernbar sind.
  • Alternativ kann der Programmcode 218 von den computerlesbaren Medien 220 durch eine Datenaustauschverbindung mit der Datenaustauscheinheit 210 und/oder durch eine Verbindung mit der Eingabe/Ausgabe-Einheit 212 zu dem Datenverarbeitungssystem 200 übertragen werden. Die Datenaustauschverbindung und/oder die Verbindung können in den veranschaulichenden Beispielen physisch oder drahtlos sein. Die computerlesbaren Medien können außerdem die Form von nicht greifbaren Medien wie zum Beispiel Datenaustauschverbindungen oder drahtlosen Übertragungen annehmen, die den Programmcode enthalten.
  • In einigen veranschaulichenden Ausführungsformen kann der Programmcode 218 zur Verwendung innerhalb des Datenverarbeitungssystems 200 von einer/einem weiteren Einheit oder Datenverarbeitungssystem über ein Netzwerk in den nichtflüchtigen Speicher 208 heruntergeladen werden. Beispielsweise kann in einem computerlesbaren Speichermedium in einem Server-Datenverarbeitungssystem gespeicherter Programmcode über ein Netzwerk von dem Server auf das Datenverarbeitungssystem 200 heruntergeladen werden. Bei dem Datenverarbeitungssystem, das den Programmcode 218 bereitstellt, kann es sich um einen Server-Computer, einen Client-Computer oder eine sonstige Einheit handeln, die in der Lage sind, den Programmcode 218 zu speichern und zu übertragen.
  • Mithilfe des Datenverarbeitungssystems 100 von 1 als Beispiel können ein Server wie etwa der Server 104 und ein Client wie etwa der Client 110, beide von 1, auf charakteristischen Systemen entweder getrennt oder auf demselben System umgesetzt werden. Des Weiteren können ein Proxy und ein Server auf demselben oder einem anderen Server wie zum Beispiel dem Server 104 umgesetzt werden, wobei der Proxy einen Client wie zum Beispiel den Client 110 von dem Anwendungs-Server trennt. Bei einer veranschaulichenden Ausführungsform einer Vorrichtung zum Entschärfen einer Einschleusung überwacht eine Prozessoreinheit wie zum Beispiel die Prozessoreinheit 204 von 2 sämtlichen eingehenden und ausgehenden Datenverkehr, der durch die Datenaustauscheinheit 210 von 2 empfangen wird, um einen überwachten Datenverkehr zu bilden. Die Prozessoreinheit 204 ermittelt, ob ein eindeutiges Element mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, um einen übereinstimmenden Eingabewert zu bilden, und speichert in Reaktion auf eine Ermittlung, dass das eindeutige Element mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, den übereinstimmenden Eingabewert in den Speichereinheiten 216 von 2. Die Prozessoreinheit 204 ermittelt des Weiteren, ob eine Ausgabe von dem Anwendungs-Server auf dem Server 104 den übereinstimmenden Eingabewert an einer erwarteten Position enthält, und codiert in Reaktion auf eine Ermittlung, dass die Ausgabe den übereinstimmenden Eingabewert an einer erwarteten Position enthält, den übereinstimmenden Eingabewert mithilfe einer jeweiligen Definition aus der Konfigurationsdatei. Die Prozessoreinheit 204 gibt die Ausgabe mithilfe der Datenaustauscheinheit 210 an den Anforderer zurück.
  • In einem weiteren Beispiel umfasst ein computerimplementierter Prozess zum Entschärfen von Einschleusungsangriffen, der den Programmcode 218 verwendet, der in dem Speicher 206 oder als Computerprogrammprodukt 222 gespeichert ist, ein computerbeschreibbares Speichermedium wie zum Beispiel das computerbeschreibbare Medium 220, das darauf gespeicherten computerausführbaren Programmcode enthält. Der computerausführbare Programmcode umfasst einen computerausführbaren Programmcode für einen computerimplementierten Prozess zum Entschärfen von Einschleusungsangriffen.
  • Bei einer weiteren veranschaulichenden Ausführungsform kann der Prozess zum Entschärfen von Einschleusungsangriffen in einer Vorrichtung umgesetzt werden, die eine Datenaustauschstruktur, einen Speicher, der mit der Datenaustauschstruktur verbunden ist, wobei der Speicher computerausführbaren Programmcode enthält, eine mit der Datenaustauschstruktur verbundene Datenaustauscheinheit, eine mit der Datenaustauschstruktur verbundene Eingabe/Ausgabe-Einheit, eine mit der Datenaustauschstruktur verbundene Anzeige und eine mit der Datenaustauschstruktur verbundene Prozessoreinheit umfasst. Die Prozessoreinheit der Vorrichtung führt den computerausführbaren Programmcode aus, um die Vorrichtung so zu steuern, dass sie den Prozess zum Entschärfen von Einschleusungsangriffen durchführt.
  • Unter Bezugnahme auf 3 wird ein Blockschaubild eines Systems zum Entschärfen von Einschleusungsangriffen gemäß verschiedenen Ausführungsformen der Offenbarung dargestellt. Bei einem System 300 zum Entschärfen von Einschleusungsangriffen handelt es sich um ein Beispiel für ein Datenverarbeitungssystem, das um eine Funktion zum Entschärfen eines Einschleusungsangriffs wie zum Beispiel eines Cross-Site-Scripting-Angriffs erweitert ist.
  • Das System 300 zum Entschärfen von Einschleusungsangriffen stellt eine Anzahl von Komponenten in drei Hauptbereichen, darunter in denjenigen von Client-Diensten 302, Proxy-Diensten 304 und Anwendungsdiensten bereit 306. Die Client-Dienste 302 beinhalten einen typischen Browser wie zum Beispiel einen Browser 308, um beispielsweise eine überwachte Eingabe 310 und eine Eingabe 316 einzugeben und eine Ausgabe in Form einer codierten Ausgabe 330 zu empfangen.
  • Die Proxy-Dienste 304 werden durch einen Proxy 312 bereitgestellt, der einen Bildschirm 314, eine Überprüfungseinheit 322 und eine Codiereinheit 328 beinhaltet. Der Bildschirm 314 stellt eine Funktion zum Überwachen des eingehenden und ausgehenden Datenverkehrs zwischen dem Browser 308 und einem Server 318 bereit. Der überwachte eingehende Datenverkehr beinhaltet die überwachte Eingabe 310 und die Eingabe 316, während der überwachte ausgehende Datenverkehr eine Ausgabe 326 und die codierte Ausgabe 330 beinhaltet. Das Überwachen wird verwendet, um zu ermitteln, welche Codefragmente innerhalb des Eingabedatenstroms und in welchem Kontext verarbeitet werden müssen.
  • Der Proxy 312 ist logisch oder physisch zwischen dem Browser 308 und einer Web-Anwendung wie zum Beispiel einer überprüften Web-Anwendung 320 auf dem Server 318 angeordnet, um jegliche Eingabe, die in der Ausgabe reflektiert wird, programmgesteuert zu codieren und dadurch zu verhindern, dass eine reflektierte Eingabe durch die Hypertext-Auszeichnungssprache als Skript interpretiert wird. Die Umsetzung blockiert wirksam jeglichen Cross-Site-Scripting-Angriff, da die eingeschleusten Nutzdaten in der Ausgabe codiert werden und keinerlei Skripte in den Nutzdaten ausgeführt werden.
  • Wenn zum Beispiel der Parameterwert „<script>hijack()</script>” übergeben wird, ersetzt die Codiereinheit 328 des Proxy 312 jedes Auftreten dieses Wertes durch „&lt;script&gt;hijack()&lt;/script&gt;”. Die Lösung ist zweckdienlich, es bestehen jedoch Einschränkungen. Diese Codierung ist zwar für das erste, oben beschriebene Szenario passend, für die Verwendung an der zweiten reflektierten Position ist die Codierung jedoch nicht korrekt. Um das zweite Auftreten der Eingabe zu bereinigen, muss ein anderes Codierungsverfahren verwendet werden, zum Beispiel eine Zeichenfolgencodierung, bei der die doppelten Anführungszeichen mithilfe eines vorausgehenden umgekehrten Schrägstrichs codiert werden. Wie oben erwähnt, muss der Proxy 308 des Weiteren Kenntnis von dem Kontext haben, in dem die Eingabe zurückgemeldet wird, um eine geeignete, zu verwendende Codierung zu identifizieren.
  • Mithilfe einer Web-Anwendungsüberprüfungseinheit wie zum Beispiel einer Überprüfungseinheit 322 werden die Eingabe, die in der überprüften Anwendung reflektiert wird, und der Kontext, in dem das Reflektieren erfolgt, identifiziert. Die Überprüfungseinheit 322 sendet einen Testwert an jedes in der überwachten Eingabe 310 gefundene Eingabefeld, um zu ermitteln, ob der Wert zurückmeldet wurde. Für jede Instanz eines Wertes, der in der Ausgabe 326 zurückgemeldet wird, werden eine Position und ein Kontext identifiziert. Da die Überprüfungseinheit 322 den eingeschleusten Wert steuert, verwendet die Überprüfungseinheit 322 einen Wert, der eindeutig genug ist, um in der zurückgegebenen Ausgabe leicht identifiziert zu werden. Die Überprüfungseinheit 322 kann außerdem Fälle unterstützen, in denen dieselbe Eingabe mehrmals und an verschiedenen Positionen und in verschiedenen Kontexten innerhalb derselben Ausgabe zurückgemeldet wird. Die Ausgabe der Überprüfungseinheit 322 erzeugt eine Liste der Vorkommen, die zur Wiederverwendung gespeichert werden können, bei einer Ausführungsform zum Beispiel in Form einer Konfigurationsdatei 324 in der erweiterbaren Auszeichnungssprache (extensible markup language, XML).
  • Die Codiereinheit 328 codiert programmgesteuert eine Eingabe, die in der Ausgabe 326 reflektiert wird, um die codierte Ausgabe 330 zu erstellen. Die Überprüfungseinheit 322 identifiziert programmgesteuert die geeignete Position und Codierung für jede Instanz der Eingabe, die in der Ausgabe reflektiert wird.
  • Die offenbarte Ausführungsform wird im Zusammenhang mit Cross-Site-Scripting dargestellt; die beschriebene Technik ist auf alle Arten von Einschleusungsangriffen anwendbar. Wenn ein Proxy zum Beispiel in der Lage ist, die gesamte SQL-Aktivität zu überwachen, und feststellt, dass eine Eingabe, zum Beispiel ein Hypertext-Transportprotokoll-Parameterwert unverändert in einem Structured-Query-Language(SQL)-Befehl eingebettet ist, kann der Proxy programmgesteuert den Wert an diesem identifizierten Punkt codieren. Ähnlich wie bei dem Beispiel des Cross-Site-Scripting hängt in diesem Beispiel der genaue zu codierende Bereich und der zu verwendende Codierungstyp von dem Kontext ab, in dem die Benutzerdaten in den Structured-Query-Language-Befehl eingebettet werden, was bedeutet, dass für den Proxy 312 zur Unterstützung die korrekten Daten konfiguriert sein müssten. Um dies zu lösen, schleust die Überprüfungseinheit 322 eine eindeutige Eingabe ein und identifiziert, wo, wenn überhaupt, die Eingabe in den SQL-Befehl eingeschleust wird.
  • Cross-Site-Scripting ist tatsächlich ein Beispiel für einen Einschleusungsangriff in Hypertext-Auszeichnungssprache, bei dem der Angreifer durch den Angreifer bereitgestellte Skripte in die Ausgabe einschleust. Die Eingabe wird gewissermaßen in den Hypertext-Auszeichnungssprachenbefehl eingeschleust.
  • Die Beispiele offenbaren zwar eine Überwachung für und eine Codierung der gesamten Eingabe, die eingegeben wird, die veranschaulichenden Ausführungsformen gelten jedoch gleichermaßen für Teile der Eingabe, zum Beispiel, wenn die ersten zehn Zeichen der Eingabe zurückgemeldet werden. Zum Zweck der Offenbarung wird die gesamte Eingabe verwaltet, die Ausführungsformen beinhalten jedoch ebenso das Verwalten von Teilen der Eingabe.
  • Unter Bezugnahme auf 4 wird ein Ablaufplan eines Prozesses unter Verwendung des Systems zum Entschärfen von Einschleusungsangriffen von 3 gemäß einer Ausführungsform der Offenbarung dargestellt. Ein Prozess 400 ist ein Beispiel für einen Prozess unter Verwendung des Systems zum Entschärfen von Einschleusungsangriffen 300 von 3. In der Beschreibung der Ausführungsform wird folgendes Beispiel verwendet:
    Figure 00250001
  • Ein Prozess 400 beginnt (Schritt 402) und überwacht sämtlichen eingehenden Datenverkehr und ausgehenden Datenverkehr (Schritt 404). Eingehender Datenverkehr wird durch einen Browser erzeugt und fließt durch einen Proxy zu einer Web-Anwendung auf dem Anwendungs-Server. Ausgehender Datenverkehr entsteht auf dem Server und verläuft durch den Proxy zu dem Client auf dem Browser.
  • Der Prozess 400 ermittelt, ob ein eindeutiges Element, das in einer Konfigurationsdatei definiert ist, mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt (Schritt 406). Das eindeutige Element wurde als Ergebnis einer Überprüfung einer Web-Anwendung mithilfe einer Überprüfungseinheit wie zum Beispiel der Überprüfungseinheit 322 von 3 erstellt und gespeichert. Wenn ermittelt wird, dass das in einer Konfigurationsdatei definierte eindeutige Element mit einem Eingabewert des gespeicherten, überwachten Datenverkehrs übereinstimmt, wird ein Ergebnis „ja” zurückgegeben. Wenn ermittelt wird, dass das in einer Konfigurationsdatei definierte eindeutige Element nicht mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, wird ein Ergebnis „nein” zurückgegeben.
  • Wenn in Schritt 406 ein „nein”-Ergebnis bezogen wird, führt der Prozess 400 eine Schleife zurück durch, um den Schritt 404 durchzuführen. Wenn in Schritt 406 ein „ja” bezogen wird, speichert der Prozess 400 einen übereinstimmenden Eingabewert (Schritt 408). Der Prozess 400 ermittelt, ob eine Ausgabe den übereinstimmenden Eingabewert an einer erwarteten Position enthält (Schritt 410). Wenn ermittelt wird, dass die Ausgabe den übereinstimmenden Eingabewert an einer erwarteten Position enthält, wird ein „ja”-Ergebnis bezogen. Wenn ermittelt wird, dass die Ausgabe den übereinstimmenden Eingabewert nicht an einer erwarteten Position enthält, wird ein „nein”-Ergebnis bezogen.
  • Wenn in Schritt 410 ein „ja”-Ergebnis bezogen wird, codiert der Prozess 400 den übereinstimmenden Eingabewert mithilfe einer jeweiligen Definition in der Konfigurationsdatei (Schritt 412). Der übereinstimmende Eingabewert wird mithilfe der Daten codiert, die in der Konfigurationsdatei enthalten sind, zum Beispiel der Positions- und Kontextdaten. Es wird daher eine geeignete Codierung verwendet, um den übereinstimmenden Eingabewert zu codieren, der in der Ausgabe enthalten ist. Der Prozess 400 gibt die Ausgabe an den Anforderer zurück (Schritt 414) und endet anschließend (Schritt 416).
  • Wenn in Schritt 410 ein „nein”-Ergebnis bezogen wird, codiert der Prozess 400 den übereinstimmenden Eingabewert mithilfe einer Standarddefinition (Schritt 418) und endet anschließend (Schritt 416). Die Standarddefinition wird verwendet, da der übereinstimmende Eingabewert an einer anderen Position als der Position identifiziert wurde, der in einem Eintrag der Konfigurationsdatei ausgewiesen wurde. Wenngleich die Position unterschiedlich war, stimmte der Eingabewert überein und wurde entsprechend zum Schutz codiert.
  • Der Proxy verstärkt auf diese Weise den Schutz mithilfe des soeben beschriebenen Prozesses. Der Proxy empfängt die Konfigurationsdatei in der erweiterbaren Auszeichnungssprache oder greift auf sie zu und überwacht sämtlichen eingehenden und ausgehenden Datenverkehr. Immer, wenn er auf eine in der Konfigurationsdatei genannte Eingabe stößt, speichert der Proxy den Wert der Eingabe. Wenn eine Ausgabe gebildet wird, ermittelt der Proxy, ob der Eingabewert an der/den erwarteten Position oder Positionen auftritt, und wenn dies der Fall ist, codiert er den Eingabewert auf der Grundlage des/der konfigurierten Kontextes oder Kontexte für jeden Eingabewert.
  • Wenn zum Beispiel der Parameter „name” einen Wert <script>hijack(”this”)</script> aufweist, wird dieser Wert so modifiziert, dass er beim ersten Auftreten in der Ausgabe zu &lt;script&gt;hijack(&quot;this&quot;)&lt;/script&gt; wird und beim zweiten Auftreten in der Ausgabe zu <script>hijack(\”this\”)</script> wird.
  • Befehle dazu, welcher Eingabewert codiert werden soll, könnten erheblich komplexer werden und den Kontext, der beschreibt, welche zusätzlichen Parameter oder Cookies in der Anforderung auftreten, eine Eingabe, die Teil eines Pfades ist, eine Eingabe, die auf eine andere Eingabe folgt, und sonstige typische Vorkommen beinhalten. Die Beschreibung einer Position in der Ausgabe kann auf viele verschiedene Arten erfolgen. Das Verfahren einer Positionsbeschreibung kann variieren.
  • Bei einer Ausführungsform kann zum Beispiel ein XPath-Ausdruck verwendet werden. Unter Verwendung dieses Beispiels kann eine Überprüfungseinheit die Hypertext-Auszeichnungssprache in erweiterbare Hypertext-Auszeichnungssprache (extensible hypertext markup language, XHTML) normalisieren und anschließend einen XML-Path-, einen XPath-Ausdruck verwenden, um die Position der zurückgegebenen Nutzdaten zu beschreiben. Unter Verwendung des obigen, vorherigen Beispiels würden die beiden Positionen mithilfe einer XPath-Schreibweise wie folgt codiert:
    /html/body/H1/b/text()
    /html/body/img/@alt/string(). Dieses Beispiel würde lediglich in XPath 2.0
    funktionieren.
  • Bei einer weiteren Ausführungsform werden reguläre Ausdrücke verwendet, um die Position in der Ausgabe zu beschreiben. Bei diesem Ansatz, wie auch bei dem XPath-Ansatz, werden üblicherweise weniger wichtige Teile der Ausgabe, die sich wahrscheinlich ändern werden, ignoriert, da die Seiten nicht sehr statisch sind. Eine verwendete Technik erwartet, dass die Struktur der Hypertext-Auszeichnungssprache der Ausgabe gleich bleibt, ignoriert jedoch den Kontext selbst.
  • Beispielsweise können in dem vorherigen Beispiel, unter der Annahme der Verwendung von $1 zur Beschreibung der zurückgemeldeten Ausgabe die folgenden regulären Ausdrücke verwendet werden:
    Figure 00280001
  • Um Fälle zu lösen, in denen die Beschreibung zu spezifisch war und der Eingabewert an einem anderen Punkt zurückgemeldet wurde, wird der Proxy in die Lage versetzt, eine Ausweichstandardcodierung umzusetzen. Die Standardcodierung weist eine höhere Wahrscheinlichkeit auf, die Anwendung zu unterbrechen, erhöht jedoch die Sicherheit, wenn sie angewendet wird. Der Proxy ist zum Beispiel so eingerichtet, dass er die Hypertext-Auszeichnungssprache verwendet, um jegliches Auftreten von Nutzdaten in der Ausgabe zu codieren, wenn diese Nutzdaten von einer Eingabe, von der bekannt ist, dass sie Daten zurückmeldet, und daher von der ursprünglichen Konfiguration stammen und länger als acht Zeichen sind.
  • Unter Bezugnahme auf 5 wird ein Ablaufplan eines Konfigurationsdatei-Erstellungsprozesses, der mit dem Prozess von 4 verwendet wird, gemäß einer Ausführungsform der Offenbarung dargestellt. Bei dem Prozess 500 handelt es sich um einen Konfigurationsprozess, der zum Erstellen einer Konfigurationsdatei wie zum Beispiel der XML-Konfigurationsdatei 324 von 3 verwendet wird, die identifizierte Eingabewerte wie zum Beispiel Positions- und Kontextdaten enthält, die mit dem Prozess 400 von 4 verwendet werden.
  • Die Beschreibung der Ausführungsform verwendet das folgende Beispiel: Anforderung: http://server/welcome.jsp?name=John Antwort:
    Figure 00290001
  • Bei einer Ausführungsform erkennt eine Überprüfungseinheit wie zum Beispiel die Überprüfungseinheit 322 von 3 sämtliche Positionen, an denen eine Benutzereingabe in einer Ausgabe zurückgemeldet wird. Um die Positionen zu identifizieren, würde die Überprüfungseinheit eine Site, die eine Web-Anwendung enthält, automatisch durchsuchen und dabei alle Seiten und Eingaben einer Web-Anwendung entdecken, die Cookies, Formularfelder und Pfade beinhalten. Für jede solche Eingabe modifiziere den Eingabewert in einen eindeutigen Wert wie zum Beispiel „AppScan_Value”, sende die Eingabe erneut und ermittle, ob dieser Wert in der Ausgabe zurückgemeldet wird. Wenn der Wert in der Ausgabe zurückgemeldet wird, bemerkt die Überprüfungseinheit die Eingabe, die geändert wurde, zum Beispiel den universellen Ortsangeber für Ressourcen (universal resource locator, URL), den Parameternamen, die Position(en) und den/die Kontext(e) in der Ausgabe, die die zurückgemeldete Eingabe enthält. Nach Abschluss der Überprüfung exportiert die Überprüfungseinheit eine Liste dieser Positionen, beispielsweise in einem erweiterbaren Auszeichnungssprachenformat.
  • Überprüfungseinheiten für die Sicherheit von Web-Anwendungen, die zurzeit erhältlich sind, führen bereits ein automatisches Durchsuchen, Modifizieren von Werten und Erstellen von Konfigurationen für zahlreiche vorhandene Tests durch, wodurch der Aufwand verringert wird, der zum Hinzufügen dieser zusätzlichen Nutzdaten erforderlich ist. Eine erste Umsetzung befasst sich möglicherweise lediglich mit Eingaben, die tatsächlich anfällig für Cross-Site-Scripting-Angriffe sind, und überspringt einfach zurückgemeldete Eingaben, die als nicht anfällig für Cross-Site-Scripting-Angriffe gehalten wurden, vermutlich weil typische Codelösungen verfügbar waren.
  • In dem obigen Beispiel gibt die Überprüfungseinheit in einer veranschaulichenden Ausführungsform an, dass der Parameter „name” an dem universellen Ortsangeber für Ressourcen „http://server/welcome.jsp” in der Ausgabe zweimal zurückgemeldet wird und jeweils die Position und den Kontext beschreibt.
  • Der Prozess 500 beginnt (Schritt 502) und identifiziert eine Seite einer Web-Anwendung und zugehörige Eingaben der Seite, um einen Satz von identifizierten Eingaben zu bilden (Schritt 504). Positionsdaten und Kontextdaten, die der Position zugehörig sind, werden erfasst. Für jede Eingabe in dem Satz von identifizierten Eingaben wandelt der Prozess 500 die Eingabe in eine Form eines eindeutigen Elements um (Schritt 506). Der Prozess 500 bildet ein eindeutiges Element, um den Eingabewert als potenziellen Wert eines Einschleusungsangriffs zu identifizieren.
  • Der Prozess 500 sendet eine Eingabe erneut unter Verwendung des eindeutigen Elements (Schritts 508). Das eindeutige Element stellt den überprüften Eingabewert dar. Der Prozess 500 ermittelt, ob das eindeutige Element in einer Ausgabe zurückgemeldet wird (Schritt 510). Wenn ermittelt wird, dass das eindeutige Element in der Ausgabe zurückgemeldet wird, wird ein Ergebnis „ja” bezogen. Wenn ermittelt wird, dass das eindeutige Element nicht in der Ausgabe zurückgemeldet wird, wird ein Ergebnis „nein” bezogen. Wenn in Schritt 510 ein „nein”-Ergebnis bezogen wird, springt der Prozess 500 zu Schritt 514 vor.
  • Wenn in Schritt 510 ein „ja”-Ergebnis bezogen wird, identifiziert der Prozess 500 eine Position und einen Kontext in der Ausgabe, die die zurückgemeldete Eingabe des eindeutigen Elements enthält (Schritt 512). Der Prozess 500 ermittelt, ob weitere Seiten zu verarbeiten sind (Schritt 514). Wenn ermittelt wird, dass weitere Seiten zu verarbeiten sind, wird ein Ergebnis „ja” bezogen. Wenn ermittelt wird, dass keine weiteren Seiten zu verarbeiten sind, wird ein Ergebnis „nein” bezogen. Wenn in Schritt 514 ein „ja”-Ergebnis bezogen wird, führt der Prozess 500 eine Schleife zurück zu Schritt 504 durch, um die verbleibenden Seiten zu verarbeiten.
  • Wenn in Schritt 514 ein „nein”-Ergebnis bezogen wird, exportiert der Prozess 500 ein Überprüfungsergebnis in eine Konfigurationsdatei, die eine Liste von identifizierten Positionen enthält, (Schritt 516), und der Prozess 500 endet anschließend (Schritt 518). Jeder identifizierte Eingabewert mit zugehörigen Positions- und Kontextdaten wird als Eintrag in der resultierenden Konfigurationsdatei platziert, die durch die Codiereinheit wie zum Beispiel die Codiereinheit 328 von 3 verwendet wird.
  • Auf diese Weise wird bei einer Ausführungsform ein computerimplementierter Prozess zum Entschärfen von Einschleusungsangriffen bereitgestellt, der sämtlichen eingehenden und ausgehenden Datenverkehr überwacht, um einen überwachten Datenverkehr zu bilden, ermittelt, ob ein eindeutiges Element mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, um einen übereinstimmenden Eingabewert zu bilden, und in Reaktion auf eine Ermittlung, dass das eindeutige Element mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, den übereinstimmenden Eingabewert speichert. Der computerimplementierte Prozess ermittelt des Weiteren, ob eine zurückgegebene Ausgabe den übereinstimmenden Eingabewert an einer erwarteten Position enthält, und codiert in Reaktion auf eine Ermittlung, dass die Ausgabe den übereinstimmenden Eingabewert an einer erwarteten Position enthält, den übereinstimmenden Eingabewert mithilfe einer jeweiligen Definition aus einer Konfigurationsdatei und gibt die Ausgabe an den Anforderer zurück.
  • Die Ablaufpläne und Blockschaubilder in den Figuren veranschaulichen die Architektur, Funktionalität und Arbeitsweise möglicher Umsetzungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedener Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaubildern ein Modul, ein Segment oder einen Abschnitt eines Codes darstellen, der einen oder mehrere ausführbare Befehle zum Umsetzen einer angegebenen logischen Funktion umfasst. Es ist außerdem zu beachten, dass bei einigen alternativen Umsetzungen die in dem Block vermerkten Funktionen in einer anderen Reihenfolge als in den Figuren vermerkt auftreten können. Beispielsweise können je nach einbezogener Funktionalität zwei nacheinander dargestellte Blöcke sogar im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können bisweilen in der umgekehrten Reihenfolge ausgeführt werden. Es ist ferner zu beachten, dass jeder Block der Blockschaubilder und/oder der Ablaufpläne und Kombinationen von Blöcken in den Blockschaubildern und/oder in den Ablaufplänen durch Spezialsysteme auf der Grundlage von Hardware, die die angegebenen Funktionen oder Vorgänge ausführen, oder durch Kombinationen von Spezial-Hardware und Computerbefehlen umgesetzt werden können.
  • Die entsprechenden Strukturen, Materialien, Vorgänge und Entsprechungen aller Mittel bzw. Schritte sowie die Funktionselemente in den nachstehenden Ansprüchen sollen jede Struktur, jedes Material bzw. jeden Vorgang zum Durchführen der Funktion in Kombination mit sonstigen beanspruchten Elementen als ausdrücklich beansprucht beinhalten. Die Beschreibung der vorliegenden Erfindung erfolgte zum Zweck der Veranschaulichung und Beschreibung, ist jedoch nicht erschöpfend bzw. auf die Erfindung in der dargestellten Form beschränkt gemeint. Viele Modifizierungen und Varianten sind für Fachleute ersichtlich, ohne vom Umfang und Gedanken der Erfindung abzuweichen. Die Ausführungsform wurde ausgewählt und beschrieben, um die Grundgedanken der Erfindung und die praktische Anwendung am besten zu erläutern und um anderen Fachleuten das Verständnis der Erfindung für verschiedene Ausführungsformen mit verschiedenen, für den in Betracht gezogenen Einsatz geeigneten Modifizierungen zu ermöglichen.
  • Die Erfindung kann eine reine Hardware-Ausführungsform, eine reine Software-Ausführungsform bzw. eine Ausführungsform annehmen, die sowohl Hardware- als auch Software-Elemente enthält. Bei einer bevorzugten Ausführungsform wird die Erfindung in Software umgesetzt, was Firmware, residente Software, Mikrocode und sonstige Software-Medien beinhaltet, die von einem Fachmann zu erkennen sind, jedoch nicht darauf beschränkt ist.
  • Es muss darauf hingewiesen werden, dass die vorliegende Erfindung zwar im Zusammenhang eines voll funktionsfähigen Datenverarbeitungssystems beschrieben worden ist, Fachleuten jedoch ersichtlich ist, dass die Prozesse der vorliegenden Erfindung in Form eines computerlesbaren Befehlsmediums und in einer Vielfalt von Formen vertrieben werden können und dass die vorliegende Erfindung unabhängig von dem jeweiligen Typ der signaltragenden Medien, die für die eigentliche Verteilung verwendet werden, gleichermaßen gültig ist. Zu Beispielen für computerlesbare Medien zählen beschreibbare Medien wie zum Beispiel eine Diskette, ein Festplattenlaufwerk, ein RAM, CD-ROMs, DVD-ROMs und Übertragungsmedien wie zum Beispiel digitale und analoge Datenaustauschverbindungen, drahtgebundene oder drahtlose Datenaustauschverbindungen, die Übertragungsformen wie zum Beispiel Funkübertragung und Lichtwellenübertragung verwenden. Die computerlesbaren Medien können die Form von codierten Formaten annehmen, die für die jeweilige Verwendung in einem bestimmten Datenverarbeitungssystem decodiert werden.
  • Ein Datenverarbeitungssystem, das zum Speichern und/oder Ausführen von Programmcode geeignet ist, beinhaltet zumindest einen Prozessor, der direkt bzw. indirekt durch einen Systembus mit Speicherelementen verbunden ist. Zu den Speicherelementen können ein lokaler Speicher, der während der tatsächlichen Ausführung des Programmcodes eingesetzt wird, ein Massenspeicher und Cachespeicher gehören, die eine vorübergehende Speicherung von zumindest einem Teil des Programmcodes bereitstellen, um die Häufigkeit zu verringern, mit der der Code während der Ausführung aus dem Massenspeicher abgerufen werden muss.
  • Eingabe/Ausgabe- bzw. E/A-Einheiten (zum Beispiel Tastaturen, Anzeigen, Zeigeeinheiten usw., jedoch nicht auf diese beschränkt) können entweder direkt oder durch eingreifende E/A-Steuereinheiten mit dem System verbunden sein.
  • Netzwerkadapter können ebenfalls mit dem System verbunden sein, um dem Datenverarbeitungssystem zu ermöglichen, durch eingreifende private oder öffentliche Netzwerke mit anderen Datenverarbeitungssystemen oder entfernt angeordneten Druckern oder Speichereinheiten verbunden zu werden. Modems, Kabelmodems und Ethernet-Karten sind nur einige der gegenwärtig verfügbaren Arten von Netzwerkadaptern.
  • Die Beschreibung der vorliegenden Erfindung erfolgte zum Zweck der Veranschaulichung und Beschreibung, ist jedoch nicht erschöpfend bzw. auf die Erfindung in der dargestellten Form beschränkt gemeint. Zahlreiche Modifizierungen und Varianten sind für den Fachmann ersichtlich. Die Ausführungsform wurde ausgewählt und beschrieben, um die Grundgedanken der Erfindung und die praktische Anwendung am besten zu erläutern und um anderen Fachleuten das Verständnis der Erfindung für verschiedene Ausführungsformen mit verschiedenen, für den in Betracht gezogenen Einsatz geeigneten Modifizierungen zu ermöglichen.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 2008/0263650 [0017]
    • US 2007/0113282 [0018]
    • US 2004/0260754 [0019]

Claims (12)

  1. Verfahren zum Verhindern, dass zerstörerischer Code innerhalb einer Skriptsprache einer Web-Anwendung eingebettet wird, auf die durch einen Web-Browser zugegriffen wird, wobei das Verfahren Folgendes umfasst: Überwachen sämtlichen eingehenden Datenverkehrs, der durch den Web-Browser erzeugt wird, und ausgehenden Datenverkehrs, der durch einen Server erzeugt wird, um einen überwachten Datenverkehr zu bilden; Ermitteln, ob ein eindeutiges Element, das in einer Konfigurationsdatei definiert ist, mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, um einen übereinstimmenden Eingabewert zu bilden; in Reaktion auf eine Ermittlung, dass das eindeutige Element mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, Speichern des übereinstimmenden Eingabewertes, Ermitteln, ob eine Ausgabe den übereinstimmenden Eingabewert an einer erwarteten Position enthält; in Reaktion auf eine Ermittlung, dass die Ausgabe den übereinstimmenden Eingabewert an einer erwarteten Position enthält, Codieren des übereinstimmenden Eingabewertes mithilfe einer jeweiligen Definition aus der Konfigurationsdatei; und Zurückgeben der Ausgabe an den Anforderer.
  2. Verfahren nach Anspruch 1, wobei das Ermitteln, ob eine Ausgabe den übereinstimmenden Eingabewert an einer erwarteten Position enthält, des Weiteren Folgendes umfasst: Ermitteln, ob ein jeweiliges eindeutiges Element in der Ausgabe identifiziert wird; und Identifizieren einer Position und eines Kontextes, die einem eindeutigen Element zugehörig sind, in der Ausgabe, wobei das Ermitteln und das Identifizieren des Weiteren ein Einbetten von eindeutigen Werten umfasst.
  3. Verfahren nach Anspruch 2, wobei das Ermitteln, ob ein eindeutiges Element mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, des Weiteren Folgendes umfasst: Identifizieren einer Seite einer Web-Anwendung und zugehöriger Eingaben der Seite, um einen Satz von identifizierten Eingaben zu bilden; Umwandeln jeder Eingabe in dem Satz von identifizierten Eingaben, um ein jeweiliges eindeutiges Element zu bilden; und erneutes Senden der Eingabe unter Verwendung der jeweiligen eindeutigen Elemente.
  4. Verfahren nach Anspruch 2, wobei das Identifizieren einer Position und eines Kontextes, die einem eindeutigen Element zugehörig sind, in der Ausgabe des Weiteren Folgendes umfasst: Exportieren eines Überprüfungsergebnisses in die Konfigurationsdatei.
  5. Verfahren nach Anspruch 1, wobei die Konfigurationsdatei eine Liste jeder Eingabe des Satzes von identifizierten Eingaben und jeweiligen erwarteten Ausgabepositionen und -kontexten enthält.
  6. Verfahren nach Anspruch 1, wobei in Reaktion auf eine Ermittlung, dass das eindeutige Element nicht mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, das Überwachen sämtlichen eingehenden und ausgehenden Datenverkehrs fortgesetzt wird.
  7. Verfahren nach Anspruch 1, wobei in Reaktion auf eine Ermittlung, dass die Ausgabe den übereinstimmenden Eingabewert nicht an einer erwarteten Position enthält, der übereinstimmende Eingabewert mithilfe einer Standarddefinition codiert wird.
  8. Vorrichtung zum Verhindern, dass zerstörerischer Code innerhalb einer Skriptsprache einer Web-Anwendung eingebettet wird, auf die durch einen Web-Browser zugegriffen wird, wobei das Verfahren Folgendes umfasst: Mittel zum Überwachen sämtlichen eingehenden Datenverkehrs, der durch den Web-Browser erzeugt wird, und ausgehenden Datenverkehrs, der durch einen Server erzeugt wird, um einen überwachten Datenverkehr zu bilden; Mittel zum Ermitteln, ob ein eindeutiges Element, das in einer Konfigurationsdatei definiert ist, mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, um einen übereinstimmenden Eingabewert zu bilden; in Reaktion auf eine Ermittlung, dass das eindeutige Element mit einem Eingabewert des überwachten Datenverkehrs übereinstimmt, Mittel zum Speichern des übereinstimmenden Eingabewertes, Mittel zum Ermitteln, ob eine Ausgabe den übereinstimmenden Eingabewert an einer erwarteten Position enthält; in Reaktion auf eine Ermittlung, dass die Ausgabe den übereinstimmenden Eingabewert an einer erwarteten Position enthält, Mittel zum Codieren des übereinstimmenden Eingabewertes mithilfe einer jeweiligen Definition aus der Konfigurationsdatei; und Mittel zum Zurückgeben der Ausgabe an den Anforderer.
  9. Vorrichtung nach Anspruch 8, die des Weiteren Folgendes umfasst: Mittel zum Identifizieren einer Seite einer Anwendung und zugehöriger Eingaben der Seite, um einen Satz von identifizierten Eingaben zu bilden; Mittel zum Umwandeln jeder Eingabe in dem Satz von identifizierten Eingaben, um ein jeweiliges eindeutiges Element zu bilden; und Mittel zum erneuten Senden der Ausgabe unter Verwendung der jeweiligen eindeutigen Elemente.
  10. Vorrichtung nach Anspruch 8, wobei die Konfigurationsdatei eine Liste jeder Eingabe des Satzes von identifizierten Eingaben und jeweiligen erwarteten Ausgabepositionen und -kontexten enthält.
  11. Vorrichtung nach Anspruch 8, die des Weiteren in Reaktion auf eine Ermittlung, dass die Ausgabe den übereinstimmenden Eingabewert nicht an einer erwarteten Position enthält, ein Mittel zum Codieren des übereinstimmenden Eingabewertes mithilfe einer Standarddefinition umfasst.
  12. Computerprogramm, das einen Computerprogrammcode umfasst, um sämtliche Schritte des Verfahrens nach einem der Ansprüche 1 bis 7 durchzuführen, wenn er in ein Computersystem geladen und ausgeführt wird.
DE201111101943 2010-06-10 2011-06-08 Verfahren und Einheit zum Entschärfen von seitenübergreifenden Sicherheitslücken Pending DE112011101943T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CACA2704863 2010-06-10
CA 2704863 CA2704863A1 (en) 2010-06-10 2010-06-10 Injection attack mitigation using context sensitive encoding of injected input
PCT/EP2011/059508 WO2011154454A1 (en) 2010-06-10 2011-06-08 Method and device for mitigating cross-site vulnerabilities

Publications (1)

Publication Number Publication Date
DE112011101943T5 true DE112011101943T5 (de) 2013-07-18

Family

ID=42634745

Family Applications (1)

Application Number Title Priority Date Filing Date
DE201111101943 Pending DE112011101943T5 (de) 2010-06-10 2011-06-08 Verfahren und Einheit zum Entschärfen von seitenübergreifenden Sicherheitslücken

Country Status (7)

Country Link
US (1) US9009821B2 (de)
CN (1) CN102893576A (de)
CA (1) CA2704863A1 (de)
DE (1) DE112011101943T5 (de)
GB (1) GB2491059B (de)
TW (1) TW201220119A (de)
WO (1) WO2011154454A1 (de)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10296558B1 (en) * 2012-02-27 2019-05-21 Amazon Technologies, Inc. Remote generation of composite content pages
US9230105B1 (en) * 2013-09-30 2016-01-05 Symantec Corporation Detecting malicious tampering of web forms
US9703948B2 (en) 2014-03-28 2017-07-11 Intel Corporation Return-target restrictive return from procedure instructions, processors, methods, and systems
US9699142B1 (en) * 2014-05-07 2017-07-04 Amazon Technologies, Inc. Cross-site scripting defense using document object model template
EP3281143A4 (de) * 2015-04-10 2018-11-21 Entit Software LLC Modifizierung eines webseitencodes zur einbeziehung eines codes zum schutz der ausgabe
US10826936B2 (en) * 2017-05-10 2020-11-03 Ad Lightning, Inc. Detecting and attributing undesirable automatic redirects
US10853457B2 (en) 2018-02-06 2020-12-01 Didi Research America, Llc System and method for program security protection
CN112346726B (zh) * 2020-03-16 2023-12-12 成都华微电子科技股份有限公司 一种基于表单信息自动化生成设计代码的方法
CN113746818B (zh) * 2021-08-23 2023-03-24 国网山东省电力公司济南供电公司 针对虚假数据注入攻击的电力***安全防御方法及装置
CN114915501B (zh) * 2022-07-15 2022-09-13 北京微步在线科技有限公司 基于进程行为图的入侵事件检测方法、装置及电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040260754A1 (en) 2003-06-20 2004-12-23 Erik Olson Systems and methods for mitigating cross-site scripting
US20070113282A1 (en) 2005-11-17 2007-05-17 Ross Robert F Systems and methods for detecting and disabling malicious script code
US20080263650A1 (en) 2007-04-23 2008-10-23 Sap Ag Enhanced cross-site attack prevention

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8225408B2 (en) 1997-11-06 2012-07-17 Finjan, Inc. Method and system for adaptive rule-based content scanners
US7343626B1 (en) * 2002-11-12 2008-03-11 Microsoft Corporation Automated detection of cross site scripting vulnerabilities
JP2007004685A (ja) 2005-06-27 2007-01-11 Hitachi Ltd 通信情報監視装置
US20070136809A1 (en) * 2005-12-08 2007-06-14 Kim Hwan K Apparatus and method for blocking attack against Web application
US7934253B2 (en) * 2006-07-20 2011-04-26 Trustwave Holdings, Inc. System and method of securing web applications across an enterprise
US20090119769A1 (en) 2007-11-05 2009-05-07 Microsoft Corporation Cross-site scripting filter
CN101350745B (zh) * 2008-08-15 2011-08-03 北京启明星辰信息技术股份有限公司 一种入侵检测方法及装置
CN102224505B (zh) * 2008-11-19 2014-06-04 安全工程有限公司 用于运行时攻击预防的***和方法
US8615804B2 (en) * 2010-02-18 2013-12-24 Polytechnic Institute Of New York University Complementary character encoding for preventing input injection in web applications
US9009330B2 (en) * 2010-04-01 2015-04-14 Cloudflare, Inc. Internet-based proxy service to limit internet visitor connection speed

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040260754A1 (en) 2003-06-20 2004-12-23 Erik Olson Systems and methods for mitigating cross-site scripting
US20070113282A1 (en) 2005-11-17 2007-05-17 Ross Robert F Systems and methods for detecting and disabling malicious script code
US20080263650A1 (en) 2007-04-23 2008-10-23 Sap Ag Enhanced cross-site attack prevention

Also Published As

Publication number Publication date
GB2491059A (en) 2012-11-21
CA2704863A1 (en) 2010-08-16
US9009821B2 (en) 2015-04-14
US20130081135A1 (en) 2013-03-28
WO2011154454A1 (en) 2011-12-15
TW201220119A (en) 2012-05-16
GB2491059B (en) 2013-01-09
GB201214630D0 (en) 2012-10-03
CN102893576A (zh) 2013-01-23

Similar Documents

Publication Publication Date Title
DE112011101943T5 (de) Verfahren und Einheit zum Entschärfen von seitenübergreifenden Sicherheitslücken
DE112011101831B4 (de) Schutz vor websiteübergreifenden Scripting-Attacken
DE69922857T2 (de) Rechnersicherheit durch Virusuntersuchung
DE10249428B4 (de) Verfahren zum Definieren der Sicherheitsanfälligkeiten eines Computersystems
DE112004000428B4 (de) Verfahren und Systeme zum Verwalten von Sicherheitsrichtlinien
DE112013000387B4 (de) Dynamisches Abtasten einer Webanwendung durch Verwendung von Webdatenverkehrs- Informationen
DE112020001038T5 (de) Detektion von phishing-kampagnen
DE102012218704A1 (de) Erkennung von schwachstellen für dom-basiertes cross-site-scripting
EP2299650A1 (de) Verfahren zur Anomalie-Erkennung in einem Kontrollnetzwerk
DE112010003454T5 (de) Bedrohungserkennung in einem Datenverarbeitungssystem
DE112011103273B4 (de) Verfahren, Computerprogrammprodukt und Vorrichtung zur Weitergabe von Identitäten über Anwendungsebenen unter Verwendung von kontextabhängiger Zuordnung und gesetzten Werten
DE112021006206T5 (de) Lernen aus verteilten Traces für Anomalieerkennung und Ursachenanalyse
DE10249427A1 (de) System und Verfahren zum Definieren des Sicherheitszustands eines Computersystems
DE112012002624T5 (de) Regex-Kompilierer
DE112014002789T5 (de) Netzwerksicherheitssystem
DE112018004408B4 (de) Identifikation von angriffsströmen in einer mehrschichtigen netzwerktopologie
DE112014000578T5 (de) System und Verfahren zum Erkennen eines kompromittierten Computersystems
DE112018000525T5 (de) Systeme und Verfahren für die Authentifizierung von Platform Trust bzw. Plattform-Vertrauen in einerNetzwerkfunktions-Virtualisierungsumgebung
DE112014001997T5 (de) Kennzeichnen von Client-Zuständen
DE102020112592A1 (de) Anwendungsverhaltensbezogene Fingerabdrücke
DE102016207546A1 (de) Verfahren und Integritätsprüfsystem zur rückwirkungsfreien Integritätsüberwachung
DE102016102945A1 (de) Code-Analyse zum Bereitstellen von Datenschutz in ETL-Systemen
DE112021004808T5 (de) Erkennen von malware durch analyse verteilter telemetriedaten
DE112021005656T5 (de) Analyse der rollenerreichbarkeit mit transitiven tags
WO2017167490A1 (de) Reduzieren einer angriffsmöglichkeit auf eine schwachstelle eines gerätes über eine netzwerkzugangsstelle

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: H04L0029060000

Ipc: G06F0021640000

R016 Response to examination communication