-
HINTERGRUND
-
Eine oder mehrere Ausführungsformen, die in dieser Spezifikation offenbart sind, beziehen sich auf die Erkennung von Schwachstellen für Dokumentenobjektmodell-(DOM) basiertes Cross-Site-Scripting.
-
Mit dem Aufkommen von Internet-gestützten Technologien werden Web-Anwendungen immer anspruchsvoller. Wenn diese Technologien anspruchsvoller werden, werden sie außerdem anfällig für Angriffe durch skrupellose Benutzer, die auf die web-gestützten Anwendungen (im Folgenden ”Web-Anwendungen”) zugreifen. Diese Angriffe sind offenkundig schwer zu finden, insbesondere wenn ein Benutzer schädliche Nutzdaten an einen Server einer Web-Anwendung z. B. in einer Benutzer-Anforderung bereitstellt. Die Web-Anwendung kann besonders anfällig sein, wenn die Web-Anwendung für Antworten eine Maske wie etwa eine HTML-Antwortmaske verwendet, die unter Verwendung von dynamischen Werten wie etwa Anforderungsparametern, die durch einen Benutzer bereitgestellt werden, instanziiert wird.
-
Zur Erläuterung kann eine Benutzeranforderung während eines Cross-Site-Scripting-Angriffs (XSS-Angriffs) schädliche Nutzdaten enthalten, die HTML enthält, die ein JavaScriptTM-Code der Webseite nicht erwartet und diese HTML kann zur Laufzeit an das DOM der Web-Anwendung zurückgegeben werden. Für nachfolgende Clients kann die in dem DOM zurückgegebene HTML von anderen Teilen des DOM nicht unterschieden werden. Diese HTML kann die Weise verändern, wie die Web-Anwendung nachfolgende Benutzeranforderungen handhabt, und das kann die Weise verändern, wie die Web-Anwendung auf die Benutzeranforderungen antwortet. Schädliche Nutzdaten können z. B. bewirken, dass eine unerwünschte Antwort in einer HTML-DOM-Antwort, die von der Web-Anwendung an eine client-seitige Anwendung wie z. B. einen Web-Browser bereitgestellt wird, wiedergegeben wird.
-
KURZE ZUSAMMENFASSUNG
-
Eine oder mehrere Ausführungsformen, die in dieser Spezifikation offenbart werden, beziehen sich auf Schwachstellen für DOM-basiertes Cross-Site-Scripting.
-
Eine Ausführungsform kann ein Verfahren zum Prüfen einer web-basierten Anwendung auf Sicherheitsschwachstellen enthalten. Das Verfahren kann das Übertragen wenigstens einer Client-Anforderung, die Nutzdaten mit einer eindeutigen Kennung aufweist, zu der web-basierten Anwendung enthalten. Das Verfahren kann außerdem das Empfangen einer HTML-Antwort und eines zugehörigen Dokumentenobjektmodell-(DOM-)Objekts von der web-basierten Anwendung enthalten. Über einen Prozessor kann Inhalt, der den Nutzdaten entspricht, in dem DOM-Objekt über die eindeutige Kennung identifiziert werden. Des Weiteren kann ein Abschnitt des DOM-Objekts, der die Nutzdaten enthält, als nicht vertrauenswürdig identifiziert werden.
-
Eine weitere Ausführungsform kann ein Verfahren zum Prüfen einer web-basierten Anwendung auf Sicherheitsschwachstellen enthalten. Das Verfahren kann das Übertragen wenigstens einer Client-Anforderung, die Nutzdaten mit einer eindeutigen Kennung aufweist, zu der web-basierten Anwendung enthalten. Das Verfahren kann außerdem das Empfangen einer HTML-Antwort und eines zugehörigen Dokumentenobjektmodell-(DOM-)Objekts von der web-basierten Anwendung enthalten. Über einen Prozessor kann Inhalt, der den Nutzdaten entspricht, in dem DOM-Objekt über die eindeutige Kennung identifiziert werden. Eine DOM-Abstraktion kann aus dem DOM-Objekt erzeugt werden. Die DOM-Abstraktion kann einen Abschnitt des DOM-Objekts, der Inhalt enthält, der den Nutzdaten entspricht, einschließen und Abschnitte des DOM-Objekts, die keinen Inhalt enthalten, der den Nutzdaten entspricht, können von der DOM-Abstraktion ausgeschlossen werden. Die HTML-Antwort kann unter Verwendung der DOM-Abstraktion anstelle des DOM-Objekts wiedergegeben werden. Wenn die HTML-Antwort wiedergegeben wird, kann eine statische Sicherheitsanalyse an der HTML-Antwort ausgeführt werden, um Scriptcode, der HTML zugehörig ist, zu überwachen, der ausgeführt wird um festzustellen, ob wenigstens ein Zugriff auf die DOM-Abstraktion den Inhalt, der den Nutzdaten entspricht, abruft. Wenn der Zugriff auf die DOM-Abstraktion den Inhalt, der den Nutzdaten entspricht, abruft, kann ein Flag, das angibt, dass in der web-basierten Anwendung eine Schwachstelle vorhanden ist, erzeugt werden.
-
Eine weitere Ausführungsform kann ein Computerprogrammprodukt zum Prüfen einer web-basierte Anwendung auf Sicherheitsschwachstellen enthalten. Das Computerprogrammprodukt kann ein computerlesbares Speichermedium mit computerlesbarem Programmcode, der darauf verkörpert ist, enthalten, der zum Ausführen der verschiedenen Operationen und/oder Funktionen, die in dieser Spezifikation offenbart sind, konfiguriert ist.
-
Eine weitere Ausführungsform kann ein System enthalten, das ein computerlesbares Speichermedium mit computerlesbarem Programmcode, der darauf verkörpert ist, enthält, der zum Ausführen der verschiedenen Operationen und/oder Funktionen, die in dieser Spezifikation beschrieben sind, konfiguriert ist.
-
In einem weiteren Aspekt bezieht sich die Erfindung auf ein System, aufweisend: ein computerlesbares Speichermedium mit computerlesbarem Programmcode, der darauf verkörpert ist; und einen Prozessor, der mit dem computerlesbaren Speichermedium verbunden ist. In Reaktion auf die Ausführung des computerlesbaren Programmcodes ist der Prozessor zum Ausführen von ausführbaren Operationen konfiguriert, die aufweisen: Übertragen wenigstens einer Client-Anforderung, die Nutzdaten mit einer eindeutigen Kennung aufweist, zu der web-basierten Anwendung; Empfangen einer HTML-Antwort und eines zugehörigen Dokumentenobjektmodell-(DOM-)Objekts von der web-basierte Anwendung; mittels eines Prozessors Identifizieren von Inhalt, der den Nutzdaten in dem DOM-Objekt entspricht, über die eindeutige Kennung; und Identifizieren eines Abschnitts des DOM-Objekts, der die Nutzdaten aufweist, als nicht vertrauenswürdig.
-
Gemäß Ausführungsformen weisen ausführbare Operationen ferner auf: Erzeugen einer DOM-Abstraktion aus dem DOM-Objekt, wobei die DOM-Abstraktion einen Abschnitt des DOM-Objekts, der den den Nutzdaten entsprechenden Inhalt enthält, aufweist; und Ausgeben der HTML-Antwort unter Verwendung der DOM-Abstraktion anstelle des DOM-Objekts.
-
Gemäß Ausführungsformen weist das Erzeugen der DOM-Abstraktion aus dem DOM-Objekt auf: Ausschließen von Abschnitten des DOM-Objekts aus der DOM-Abstraktion, die nicht den den Nutzdaten entsprechenden Inhalt aufweisen.
-
Gemäß Ausführungsformen weisen die ausführbaren Schritte ferner auf: Ausgeben der HTML-Antwort, Ausführen einer statischen Sicherheitsanalyse an der HTML-Antwort, um HTML zugehörigen Scriptcode zu überwachen, der ausgeführt wird, um festzustellen, ob wenigstens ein Zugriff auf die DOM-Abstraktion den den Nutzdaten entsprechenden Inhalt abruft; und, wenn der Zugriff auf die DOM-Abstraktion den den Nutzdaten entsprechenden Inhalt abruft, Erzeugen eines Flag, das angibt, dass in der web-basierten Anwendung eine Schwachstelle vorhanden ist.
-
Gemäß Ausführungsformen weist das Ausführen der statischen Sicherheitsanalyse an der HTML-Antwort zum Überwachen von HTML zugehörigem Scriptcode, der ausgeführt wird, um festzustellen, ob wenigstens ein Zugriff auf die DOM-Abstraktion den den Nutzdaten entsprechenden Inhalt abruft, auf: Identifizieren eines Pop-up-Dialogs, der den Inhalt der Nutzdaten enthält.
-
Gemäß Ausführungsformen weisen die ausführbaren Schritte ferner auf: Empfangen einer Liste mit einer Vielzahl von Nutzdaten. Das Übertragen wenigstens einer Client-Anforderung, die die Nutzdaten mit der eindeutigen Kennung aufweist, zu der web-basierten Anwendung beinhaltet: automatisches Übertragen einer Vielzahl von Client-Anforderungen zu der web-basierten Anwendung, wobei jede der Client-Anforderungen entsprechende Nutzdaten aufweist, die aus der Liste mit der Vielzahl von Nutzdaten ausgewählt sind.
-
Gemäß Ausführungsformen weisen die Nutzdaten mit der eindeutigen Kennung Inhalt auf, der durch die web-basierte Anwendung an ein DOM einer Webseite zurückgegeben wird.
-
In einem weiteren Aspekt bezieht sich die Erfindung auf ein Computerprogrammprodukt zum Prüfen einer web-basierten Anwendung auf Sicherheitsschwachstellen. Das Computerprogrammprodukt weist auf:
ein computerlesbares Speichermedium mit darauf verkörpertem computerlesbaren Programmcode, wobei der computerlesbare Programmcode aufweist:
computerlesbaren Programmcode, der zum Übertragen wenigstens einer Client-Anforderung, die Nutzdaten mit einer eindeutigen Kennung aufweist, zu der web-basierten Anwendung, konfiguriert ist;
computerlesbaren Programmcode, der zum Empfangen einer HTML-Antwort und eines zugehörigen Dokumentenobjektmodell-(DOM-)Objekts von der web-basierten Anwendung konfiguriert ist;
computerlesbaren Programmcode, der zum Identifizieren von Inhalt, der den Nutzdaten in dem DOM-Objekt entspricht, über die eindeutige Kennung konfiguriert ist; und
computerlesbaren Programmcode, der konfiguriert ist, um einen Abschnitt des DOM-Objekts, der die Nutzdaten aufweist, als nicht vertrauenswürdig zu identifizieren.
-
Gemäß Ausführungsformen weist der computerlesbare Programmcode ferner auf:
computerlesbaren Programmcode, der konfiguriert ist, eine statische Sicherheitsanalyse an der HTML-Antwort auszuführen, wenn die HTML-Antwort ausgegeben wird, um HTML zugehörigen Scriptcode zu überwachen, der ausgeführt wird, um festzustellen, ob wenigstens ein Zugriff auf die DOM-Abstraktion den den Nutzdaten entsprechenden Inhalt abruft; und
computerlesbaren Programmcode, der konfiguriert ist, ein Flag zu erzeugen, das angibt, dass in der web-basierten Anwendung eine Schwachstelle vorhanden ist, wenn der Zugriff auf die DOM-Abstraktion den den Nutzdaten entsprechenden Inhalt abruft.
-
Gemäß Ausführungsformen weist das Ausführen der statische Sicherheitsanalyse an der HTML-Antwort, um HTML zugehörigen Scriptcode zu überwachen, der ausgeführt wird um festzustellen, ob wenigstens ein Zugriff auf die DOM-Abstraktion den den Nutzdaten entsprechenden Inhalt abruft, auf: Identifizieren eines Pop-up-Dialogs, der den Inhalt der Nutzdaten enthält.
-
Gemäß Ausführungsformen weist der computerlesbare Programmcode ferner auf: computerlesbaren Programmcode, der zum Empfangen einer Liste mit einer Vielzahl von Nutzdaten konfiguriert ist. Das Übertragen wenigstens einer Client-Anforderung, die die Nutzdaten mit der eindeutigen Kennung aufweist, zu der web-basierten Anwendung beinhaltet:
automatisches Übertragen einer Vielzahl von Client-Anforderungen an die web-basierte Anwendung, wobei jede der Client-Anforderungen entsprechende Nutzdaten aufweist, die aus der Liste mit der Vielzahl von Nutzdaten ausgewählt sind.
-
Gemäß Ausführungsformen weisen die Nutzdaten mit der eindeutigen Kennung Inhalt auf, der durch die web-basierte Anwendung an ein DOM einer Webseite zurückgegeben wird.
-
KURZE BESCHREIBUNG DER MEHREREN ZEICHNUNGSANSICHTEN
-
1 ist ein Blockschaubild, das ein System zum Erkennen einer Schwachstelle für DOM-basiertes Cross-Site-Scripting gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht.
-
2 ist ein Ablaufplan, der ein Verfahren zum Erkennen einer Schwachstelle für DOM-basiertes Cross-Site-Scripting gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht.
-
3 ist ein Blockschaubild, das ein System zum Erkennen einer Schwachstelle für DOM-basiertes Cross-Site-Scripting gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht.
-
GENAUE BESCHREIBUNG
-
Wie dem Fachmann klar ist, können Aspekte der vorliegenden Erfindung als ein System, Verfahren oder Computerprogrammprodukt verkörpert sein. Dementsprechend können Aspekte der vorliegenden Erfindung die Form einer reinen Hardware-Ausführungsform, einer reinen Software-Ausführungsform (darunter Firmware, residente Software, Mikrocode usw.) oder einer Ausführungsform, die Software- und Hardware-Aspekte kombiniert, annehmen, die hier alle allgemein als ”Schaltung”, ”Modul” oder ”System” bezeichnet werden können. Des Weiteren können Aspekte der vorliegenden Erfindung die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medien verkörpert ist, die computerlesbaren Programmcode, der darauf verkörpert ist, aufweisen.
-
Jede Kombination aus einem oder mehreren computerlesbaren Medien kann verwendet werden. Das computerlesbare Medium kann ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium sein. Ein computerlesbares Speichermedium kann z. B. ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, -vorrichtung oder -einheit oder jede geeignete Kombination des Vorhergehenden sein, ist jedoch nicht darauf beschränkt. Zu spezifischeren Beispielen (eine nicht erschöpfende Liste) des computerlesbaren Speichermediums würde Folgendes gehören: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, ein Festplattenlaufwerk (HDD), ein Festkörperlaufwerk (SSD), ein Direktzugriffsspeicher (RAM), ein Festwertspeicher (ROM), ein löschbarer programmierbarer Festwertspeicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Compactdisk-Festwertspeicher (CD-ROM), eine Digital Versatile Disc (DVD), eine optische Speichereinheit, eine magnetische Speichereinheit oder jede geeignete Kombination des Vorhergehenden. Im Kontext dieses Dokuments kann ein computerlesbares Speichermedium jedes materielle Medium sein, das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Befehlsausführung enthalten oder speichern kann.
-
Ein computerlesbares Signalmedium kann ein verbreitetes Datensignal mit einem computerlesbaren Programmcode, der darin z. B. im Basisband oder als Teil einer Trägerwelle verkörpert ist, enthalten. Ein derartiges verbreitetes Signal kann jede von einer Vielzahl von Formen annehmen, zu denen elektromagnetische, optische Formen oder jede geeignete Kombination hiervon gehören, die jedoch nicht darauf beschränkt sind. Ein computerlesbares Signalmedium kann jedes computerlesbare Medium sein, das kein computerlesbares Speichermedium ist und ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Befehlsausführung kommunizieren, verbreiten oder transportieren kann.
-
Programmcode, der auf einem computerlesbaren Medium verkörpert ist, kann unter Verwendung jedes geeigneten Mediums übertragen werden, darunter drahtlose, leitungsgestützte, Lichtwellenleiterkabel-, HF-Medien oder jede geeignete Kombination aus dem Vorhergehenden, die jedoch nicht darauf beschränkt sind. Computerprogrammcode zum Ausführen von Operationen für Aspekte der vorliegenden Erfindung kann in jeder Kombination aus einer oder mehreren Programmiersprachen geschrieben sein, darunter eine objektorientierte Programmiersprache wie JavaTM, Smalltalk, C++ oder dergleichen und herkömmliche prozedurale Programmiersprachen wie etwa die Programmiersprache ”C” oder ähnliche Programmiersprachen. Der Programmcode kann nur auf dem Computer eines Benutzers, teilweise auf dem Computer eines Benutzers, als ein selbstständiges Software-Paket, teilweise auf dem Computer eines Benutzers und teilweise auf einem fernen Computer oder nur auf dem fernen Computer oder Server ausgeführt werden. In dem zuletzt genannten Szenario kann der ferne Computer mit dem Computer des Benutzers durch jeden Netzwerktyp verbunden sein, einschließlich eines Lokalbereichs-Netzwerks (LAN) oder eines Weitbereichs-Netzwerks (WAN), oder die Verbindung kann zu einem externen Computer (z. B. über das Internet unter Verwendung eines Internet-Dienstanbieters) hergestellt werden.
-
Aspekte der vorliegenden Erfindung sind hier unter Bezugnahme auf Ablaufplan-Darstellungen und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es ist klar, dass jeder Block der Ablaufplan-Darstellungen und/oder Blockschaubilder und Kombinationen von Blöcken in den Ablaufplan-Darstellungen und/oder Blockschaubildern durch Computerprogrammbefehle umgesetzt werden können. Diese Computerprogrammbefehle können an einen Prozessor eines Universal-Computers, eines speziellen Computers oder eine andere programmierbare Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu bilden, so dass Befehle, die über den Prozessor des Computers oder der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, Mittel zum Umsetzen der Funktionen/Handlungen, die in dem Block oder den Blöcken des Ablaufplans und/oder Blockschaubilds spezifiziert sind, erzeugen.
-
Diese Computerprogrammbefehle können außerdem in einem computerlesbaren Medium gespeichert sein, das einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten anweisen kann, in einer bestimmten Weise zu funktionieren, so dass die in dem computerlesbaren Medium gespeicherten Befehle einen Herstellungsgegenstand produzieren, wozu Befehle gehören, die die Funktion/Handlung umsetzen, die in dem Block/den Blöcken des Ablaufplans und/oder Blockschaubilds spezifiziert ist.
-
Die Computerprogrammbefehle können außerdem in einen Computer, andere programmierbare Datenverarbeitungseinrichtungen oder andere Einheiten geladen werden, um eine Reihe von Operationsschritten zu bewirken, die auf dem Computer, der anderen programmierbaren Datenverarbeitungsvorrichtung oder anderen Einheiten ausgeführt werden sollen, um einen auf einem Computer implizierten Prozess zu erzeugen, so dass die Befehle, die auf dem Computer oder der anderen programmierbaren Vorrichtung ausgeführt werden, Prozesse zum Umsetzen der Funktionen/Handlungen, die in dem Block oder Blöcken des Ablaufplans und/oder Blockschaubilds spezifiziert sind, bereitstellen.
-
Die vorliegende Erfindung bezieht sich auf eine Methodik, die eine Verfolgung der Historie ermöglicht, was zu der Verwendung eines Dokumentenobjektmodell-(DOM-)Elements durch JavaScript-Code führt, so dass DOM-basierte XSS-Angriffe effizient und genau entdeckt werden können. Ein Sicherheits-Scanner kann gezielt mehrere Nutzdaten an eine web-basierte Anwendung (im Folgenden ”Web-Anwendung) senden, um zu versuchen, Schwachstellen in der Web-Anwendung zu identifizieren. Der hier verwendete Ausdruck ”Nutzdaten” bedeutet Scriptcode, der in einer Client-Anforderung an eine Web-Anwendung bereitgestellt wird.
-
Alle Nutzdaten können eine eindeutige Kennung enthalten, die in einem Webseiten-DOM-Objekt widergespiegelt werden könnte, wenn die Webseite auf die Nutzdaten anfällig wäre. Wenn die Web-Anwendung anschließend client-seitigen Scriptcode wie etwa JavaScriptTM-Code an einen Client bereitgestellt, kann der client-seitige Scriptcode in einer isolierten Datenverarbeitungsumgebung, die als ”Sandbox” bekannt ist, ausgeführt werden. Wenn es während der Ausführung des Scriptcode ein Anzeichen gibt, dass Nutzdaten durch den Scriptcode in verletzender Weise verwendet wurden, kann der Sicherheits-Scanner eine Anzeige erzeugen, dass in dem Scriptcode eine Schwachstelle vorhanden ist. Dementsprechend können Entwickler von Web-Anwendungen die Situation, dass eine Schwachstelle vorhanden ist, einschätzen und die Web-Anwendung modifizieren, um Schutzmaßnahmen zu ergreifen.
-
1 ist ein Blockschaubild, das ein System 100 zum Erfassen von Schwachstellen auf DOM-basiertes Cross-Site-Scripting gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht. Das System 100 kann einen Server 110 enthalten. Der Server 110 kann ein Verarbeitungssystem oder eine in geeigneter Weise konfigurierte Einheit sein, z. B. über die Ausführung eines Betriebssystems auf dem Server, um zumindest wenigstens eine Web-Anwendung 112 zu beherbergen. Die Web-Anwendung kann eine oder mehrere Webseiten 114 enthalten. Der Server 110 kann ebenfalls eine oder mehrere zusätzliche Web-Anwendungen beherbergen (nicht gezeigt). Der hier verwendete Ausdruck ”Web-Anwendung” bedeutet eine Anwendung, auf die über ein Netzwerk wie z. B. das Internet oder ein Intranet zugegriffen wird. Der hier verwendete Ausdruck ”Webseite” bedeutet ein Dokument oder eine Informationsressource, die zum Zugriff über ein Netzwerk wie z. B. das Internet oder ein Intranet zur Verfügung steht und auf die über eine Client-Anwendung wie etwa ein Web-Browser zugegriffen werden kann.
-
Das System kann ferner einen Client 120 enthalten. Der Client 120 kann in einer Ausführungsform ein Verarbeitungssystem oder eine Einheit sein, die für einen Datenaustausch mit dem Server 110 z. B. über ein oder mehrere Datenverarbeitungsnetzwerke oder über einen oder mehrere Eingabe/Ausgabe-(E/A-)Anschlüsse verbunden ist. Daher kann der Client 120 so konfiguriert sein, dass er ein Betriebssystem und eine oder mehrere client-seitige Anwendungen betreibt. Die client-seitigen Anwendungen können einen Sicherheits-Scanner 122 und eine DOM-modellierende Komponente 124, die hier genauer beschrieben wird, enthalten. In einer weiteren Ausführungsform können der Sicherheits-Scanner 122 und die DOM-modellierende Komponente 124 auf dem Server 110 betrieben werden.
-
Unabhängig davon, wo sich der Sicherheits-Scanner 122 und die DOM-modellierende Komponente 124 befinden, können diese Komponenten in einer Sandbox betrieben werden. Eine Sandbox stellt eine eng gesteuerte Gruppe von Ressourcen für die Ausführung von Gastprogrammen wie z. B. den Sicherheits-Scanner 122 und die DOM-modellierende Komponente 124 bereit. Eine Sandbox kann zur Erläuterung einen Arbeitsbereich im Speicher für eine derartige Ausführung bereitstellen. In einer Sandbox ist der Netzwerkzugriff, die Fähigkeit zum Inspizieren des Host-Systems oder zum Lesen von Eingabeeinheiten gewöhnlich gesperrt oder lediglich auf Operationen zum Ausführen einer Analyse und/oder Prüfung stark eingeschränkt. In diesem Sinn ist die Sandbox ein spezifisches Beispiel einer Virtualisierung.
-
Um einen DOM-basierten Cross-Site-Scripting-(XSS-)Angriff gegen die Webseite 114 zu simulieren, kann der Sicherheits-Scanner 122 betrieben werden, um eine oder mehrere Client-Anforderungen 130 automatisch an die Web-Anwendung 112 zu senden. Jede Client-Anforderung 130 kann gegebenenfalls mehrere Nutzdaten 132 enthalten. Die Nutzdaten 132 können Code enthalten, der durch den Sicherheits-Scanner 122 erzeugt oder abgerufen wurde, um Schwachstellen zu prüfen, die in der Web-Anwendung 112 vorhanden sein können. Zum Beispiel können Nutzdaten 132 Script enthalten, wie etwa JavaScriptTM und/oder ActionScriptTM, der vorgesehen ist, um bestimmten Inhalt der Nutzdaten 132 in das DOM der Webseite 114 zur Laufzeit zurückzugeben.
-
Wenn die Client-Anforderung
130 (und somit die Nutzdaten
132) durch die Web-Anwendung
112 verarbeitet wird, und wenn die Web-Anwendung
112 auf die Nutzdaten
132 anfällig ist, können die Nutzdaten an das DOM der Webseite zurückgegeben werden. Alle Nutzdaten
132 können eine eindeutige Kennung enthalten, die später erkannt werden kann, um die Erkennung einer Schwachstelle in der Webseite
114 zu ermöglichen. Ein Beispiel von Nutzdaten
132 lautet:
wobei document.cookie eine eindeutige Kennung enthält. Diese Nutzdaten können an die Web-Anwendung
112 übertragen werden, indem die Client-Anforderung
130 mit folgendem URL gesendet wird:
wobei ”www.some.site” die Web-Anwendung
112 ist, die analysiert wird.
-
Bei dem ursprünglichen Scriptcode in der Web-Anwendung
112 (z. B. in der Webseite
114) kann nicht erwartet werden, dass der Standardparameter HTML-Markup enthält und daher kann er einfach die HTML in das DOM der Webseite zur Laufzeit zurückgeben. Falls das HTML-Markup unter anderen Umständen an die Web-Anwendung
112 übertragen werden würde (z. B. nicht während der gegenwärtigen Sicherheitsanalyse) wenn eine HTML-Antwort
134 von der Web-Anwendung
112 empfangen wird, kann eine client-seitige Anwendung
112, wie etwa ein Web-Browser, die resultierende Seite ausgeben und das Script ausführen:
-
Das Ausführen eines derartigen Script könnte zur Folge haben, dass unerwünschte Informationen durch die client-seitige Anwendung präsentiert werden.
-
Dabei handelt es sich lediglich um ein Beispiel von Nutzdaten 132, die zu der Web-Anwendung 112 übertragen werden können. Wie angemerkt kann der Sicherheits-Scanner 122 mehrere Nutzdaten 132 zu der Web-Anwendung übertragen, wodurch die Web-Anwendung wirksam auf mehrere mögliche Schwachstellen geprüft wird. In einer Ausführungsform können eine oder mehrere Listen von Nutzdaten 132 für den Sicherheits-Scanner bereitgestellt und von diesem empfangen werden und der Sicherheits-Scanner 122 kann weiter die Client-Anforderungen 130 senden, bis alle Nutzdaten 132 zur Web-Anwendung 112 übertragen wurden.
-
In Reaktion auf die Client-Anforderung(en)
130 können eine HTML-Antwort
134, die der aufgerufenen Webseite
114 entspricht, und ein zugehöriges DOM-Objekt
136 von der Web-Anwendung
112 an den Client
120 übertragen werden. Wenn die Web-Anwendung
112 auf die oben dargestellten beispielhaften Nutzdaten
132 anfällig ist, kann ein Objekt document.location in dem DOM-Objekt
136 den folgenden String enthalten:
-
Der Client 120 kann in geeigneter Weise konfiguriert sein, um die HTML-Antwort 134 mit dem DOM-Objekt zu der DOM-modellierenden Komponente 124 zu leiten. Die HTML-Antwort 134 muss keine Nutzdaten des Angreifers enthalten. Die Nutzdaten können stattdessen zur Laufzeit beim Client 120 manifestiert werden, wenn Script, der der HTML-Antwort 134 zugehörig ist, ausgeführt wird. Wenn in Fortsetzung des oben dargestellten Beispiels ein fehlerhaftes Script auf das DOM mit einer Variablen document.location zugreift, kann das Script selbst annehmen, dass es nicht schädlich ist. Die hier dargestellte Analyse kann jedoch eine derartige schädliche Variable identifizieren.
-
Die DOM-modellierende Komponente 124 kann zum Empfangen der HTML-Antwort 134 und zum Bilden einer DOM-Abstraktion 126 konfiguriert sein, die so erzeugt wird, dass sie dem DOM-Objekt 136 entspricht. Die DOM-modellierende Komponente 124 kann insbesondere das DOM-Objekt 136 nach Fällen scannen, bei denen der Inhalt von Nutzdaten 132 an die Web-Anwendung 112 geliefert wurde. Die DOM-modellierende Komponente 124 kann diese Fälle des Nutzdateninhalts anhand der eindeutigen Kennungen, die für die Nutzdaten bereitgestellt werden, erkennen, die in entsprechenden Abschnitten des DOM-Objekts 136 widergespiegelt werden.
-
Wenn Inhalt, der dem Inhalt der Nutzdaten 132 entspricht, in dem DOM-Objekt 136 gefunden wird, kann die DOM-Struktur, in der der Inhalt der Nutzdaten 132 gefunden wird, in der DOM-Abstraktion 126 bewahrt werden. Des Weiteren kann der Inhalt der Nutzdaten 132 in der DOM-Abstraktion 126 als ein nicht vertrauenswürdiger DOM-Wert angegeben werden. Der Nutzdateninhalt kann z. B. hervorgehoben werden, mit einer bestimmten Farbe oder Schriftart dargestellt werden oder es können Kommentare in der DOM-Abstraktion 126 enthalten sein, um die Nutzdaten 132 zu identifizieren. Ein Grund, warum der Nutzdateninhalt als nicht vertrauenswürdig angegeben wird, besteht darin, dass Script-Code (z. B. JavaScriptTM-Code) diesen Bereich in dem DOM-Objekt passieren kann, um den DOM-Wert in einer möglicherweise ungeschützten Weise abzurufen, wenn die Nutzdaten unidentifiziert bleiben. Andere DOM-Bereiche, die keine nicht vertrauenswürdigen DOM-Werte enthalten (z. B. keinen Inhalt der Nutzdaten 132 enthalten), können sicher ignoriert werden und müssen deswegen nicht in der DOM-Abstraktion 126 enthalten sein.
-
Demzufolge kann die DOM-Abstraktion 126 lediglich einen kleinen Teil des ursprünglichen DOM-Objekts 136 enthalten, wodurch die DOM-Abstraktion 126 eine kleine, leicht zu handhabende Datei bleibt.
-
Nachdem die DOM-Abstraktion 126 erzeugt wurde, kann der Sicherheits-Scanner 122 eine statische Analyse an der HTML ausführen, wobei die DOM-Abstraktion 126 anstelle des DOM-Objekts 136 verwendet wird, wodurch die HTML wirksam modelliert werden kann. In diesem Zusammenhang kann der Sicherheits-Scanner 122 eine client-seitige Anwendung zum Ausgeben von HTML wie etwa einen Web-Browser enthalten oder auf diesen zugreifen. Wenn die HTML in der Sandbox ausgegeben wird, kann der HTML zugehörige Script-Code überwacht werden, der ausgeführt wird, um festzustellen, ob Zugriffe auf die DOM-Abstraktion 126 einen oder mehrere nicht vertrauenswürdige Werte abrufen. Der Sicherheits-Scanner 122 kann z. B. einen Pop-up-Dialog, der Inhalt der Nutzdaten 132 enthält, überwachen und identifizieren. Wenn ein nicht vertrauenswürdiger Wert identifiziert wird, kann der Sicherheits-Scanner 122 ein Flag erzeugen, das angibt, dass eine Schwachstelle identifiziert wurde. Das Flag kann die eindeutige Kennung der entsprechenden Nutzdaten 132 angeben, die Inhalt aufweisen, der dem nicht vertrauenswürdigen Wert entspricht.
-
Zur Erläuterung können bei Fortsetzung des obigen Beispiels jene Zugriffe identifiziert werden, bei denen ein Objekt document.location.href gelesen wird. Des Weiteren kann die Variable, die der Bewertung des folgenden Ausdrucks zugewiesen ist, als mängelbehaftet identifiziert werden:
-
Das Ergebnis der folgenden Verknüpfungsoperation ist deswegen ebenfalls mängelbehaftet:
-
Wegen der Verknüpfungsabläufe in der sicherheitsempfindlichen Operation document.write() kann der Sicherheits-Scanner 122 ein Flag erzeugen, das angibt, dass eine Schwachstelle erkannt wurde. Es sollte angemerkt werden, dass der gleiche Ablauf in einem Fall berichtet werden könnte, bei dem eine komplexe und seltene Bedingung die Ausführung von document.write() steuert, da die statische Analyse die Bedingung in herkömmlicher Weise behandeln und beiden Ausführungszweigen folgen kann.
-
An diesem Punkt sollte anschließend angemerkt werden, dass die Tatsache, dass die DOM-Abstraktion 126 auf einer kleinen Dateigröße gehalten wird, mehrere Implikationen für die oben beschriebene statische Analyse nach sich zieht. Erstens erfreut sich die Analyse vom Standpunkt der Leistungsfähigkeit und Skalierbarkeit eines Vorteils, dass sie lediglich einen kleinen Teil des ursprünglichen DOM-Objekts 136 modellieren und daraus schlussfolgern kann. Dies kann die Analyse im Vergleich zu einem Fall, bei dem das DOM-Objekt 136 in seiner Gesamtheit in der DOM-Abstraktion repräsentiert wird, um Größenordnungen effizienter und skalierbarer machen. Zweitens kann die Analyse sowohl völlig fehlerfrei als auch sehr genau sein. Die Fehlerfreiheit der Analyse besteht wegen der Bewahrung von DOM-Unterstrukturen, die zu potenziellen Schwachstellen führen, und die verbesserte Genauigkeit ergibt sich daraus, dass die Analyse nicht jeden aus dem DOM-Objekt 136 gelesenen Wert interpretieren muss, wodurch die Gefahr vermindert wird, dass DOM-Unterstrukturen fälschlicherweise als potenzielle Schwachstellen angegeben werden.
-
2 ist ein Ablaufplan, der ein Verfahren 200 zum Erfassen von Schwachstellen für DOM-basiertes Cross-Site-Scripting gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht. Im Schritt 202 kann wenigstens eine Client-Anforderung, die Nutzdaten mit einer eindeutigen Kennung aufweist, zu einer web-basierten Anwendung übertragen werden. Falls in der web-basierten Anwendung eine Schwachstelle vorhanden ist, kann Inhalt der Nutzdaten durch die web-basierte Anwendung zu einem DOM der Webseite zurückgegeben werden.
-
Im Schritt 204 können eine HTML-Antwort und ein zugehöriges Dokumentenobjektmodell-(DOM-)Objekt von der web-basierten Anwendung empfangen werden. Im Schritt 206 kann Inhalt, der den Nutzdaten in dem DOM-Objekt entspricht, über die eindeutige Kennung identifiziert werden. Im Schritt 208 kann eine DOM-Abstraktion aus dem DOM-Objekt erzeugt werden. Die DOM-Abstraktion kann einen oder mehrere Abschnitte des DOM-Objekts, die den den Nutzdaten entsprechenden Inhalt beinhalten, enthalten und Abschnitte des DOM-Objekts von der DOM-Abstraktion ausschließen, die keinen den Nutzdaten entsprechenden Inhalt enthalten.
-
Im Schritt 210 kann die HTML-Antwort unter Verwendung der DOM-Abstraktion anstelle des DOM-Objekts ausgegeben werden. Wenn die HTML-Antwort ausgegeben wird, kann im Schritt 212 eine statische Sicherheitsanalyse an der HTML-Antwort durchgeführt werden, um ausgeführten Script-Code zu überwachen, der HTML zugehörig ist, um festzustellen, ob wenigstens ein Zugriff auf die DOM-Abstraktion den den Nutzdaten entsprechenden Inhalt abruft. Wenn der Zugriff auf die DOM-Abstraktion den den Nutzdaten entsprechenden Inhalt abruft, kann im Schritt 214 ein Flag erzeugt werden, das angibt, dass in der web-basierten Anwendung eine Schwachstelle vorhanden ist.
-
3 ist ein Blockschaubild, das ein System 300 zum Erkennen von Schwachstellen für DOM-basiertes Cross-Site-Scripting gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht. Das System kann z. B. der Client 120 sein, der in Bezug auf 1 beschrieben wurde. Das System 300 kann wenigstens einen Prozessor 305 enthalten, der durch ein Bussystem 315 mit Speicherelementen 310 verbunden ist. Daher kann das System 300 Programmcode in den Speicherelementen 310 speichern. Der Prozessor 305 kann den Programmcode ausführen, der aus den Speicherelementen 310 über den Systembus 315 abgerufen wird. In einem Aspekt kann z. B. das System 300 als Computer umgesetzt werden, der zum Speichern und/oder Ausführen von Programmcode geeignet ist. Es sollte jedoch anerkannt werden, dass das System 300 in Form jedes Systems umgesetzt werden kann, das einen Prozessor und einen Speicher aufweist, die die in dieser Spezifikation beschriebenen Funktionen ausführen können.
-
Die Speicherelemente 310 können eine oder mehrere physische Speichereinheiten wie z. B. einen lokalen Speicher 320 und eine oder mehrere Massenspeichereinheiten 325 enthalten. Ein lokaler Speicher 320 bezeichnet einen Direktzugriffsspeicher oder andere nicht dauerhafte Speichereinheiten, die im Allgemeinen während der tatsächlichen Ausführung von Programmcode verwendet werden. Die Massenspeichereinheit(en) 325 können als ein Festplattenlaufwerk (HDD), Festkörperlaufwerk (SSD) oder eine andere dauerhafte Datenspeichereinheit umgesetzt sein. Das System 300 kann außerdem einen oder mehrere Cache-Speicher (nicht gezeigt) enthalten, die eine vorübergehende Speicherung von wenigstens einem Teil des Programmcode gewährleisten, um die Anzahl zu vermindern, wie oft Programmcode während der Ausführung von der Massenspeichereinheit 325 abgerufen werden muss.
-
Eingabe/Ausgabe-(E/A-)Einheiten wie etwa eine Tastatur 330, eine Anzeige 335 und eine Zeigeeinheit (nicht gezeigt) können wahlweise mit dem System 300 verbunden sein. Die E/A-Einheiten können entweder direkt oder über dazwischen liegende E/A-Steuereinheiten mit dem System 300 verbunden sein. Netzwerkadapter 340 können außerdem mit dem System 300 verbunden sein, damit das System 300 mit anderen Systemen, Computersystemen, fernen Druckern und/oder fernen Speichereinrichtungen über dazwischen angeordnete private oder öffentliche Netzwerke verbunden werden kann. Der (die) Netzwerkadapter 340 können z. B. ermöglichen, dass das System 300 mit dem Server 110 von 1 verbunden wird. Modems, Kabel-Modems und Ethernet-Karten sind Beispiele von verschiedenen Typen der Netzwerkadapter, die bei dem System 300 verwendet werden können.
-
Wie in 1 dargestellt können die Speicherelemente 110 einen Sicherheits-Scanner 122 und eine DOM-modellierende Komponente 124, die zuvor beschrieben wurden, speichern. Der Sicherheits-Scanner 122 und die DOM-modellierende Komponente 124, die in Form von ausführbarem Programmcode verkörpert sind, können durch das System 300 betrieben werden (z. B. über den Prozessor 305), um die hier beschriebenen Verfahren, Prozesse und Funktionen auszuführen.
-
In einer Ausführungsform können der Sicherheits-Scanner 122 und die DOM-modellierende Komponente 124 mittels IBM® Rational® AppScan® umgesetzt sein (wobei IBM, Rational und AppScan Handelsmarken der International Business Machines Corporation in den USA und/oder anderen Staaten sind).
-
Gleiche Zahlen wurden verwendet, um in der gesamten Spezifikation gleiche Elemente zu bezeichnen. Der Ablaufplan und Blockschaubilder in den Figuren veranschaulichen die Architektur, Funktionalität und den Betrieb von möglichen Umsetzungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedener Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in dem Ablaufplan oder Blockschaubildern ein Modul, Segment oder Abschnitt von Code, das/der einen oder mehrere ausführbare Befehle zum Umsetzen der spezifizierten logischen Funktion(en) aufweist, repräsentieren. Es sollte außerdem angemerkt werden, dass in einigen alternativen Umsetzungen die in dem Block angegebenen Funktionen nicht in der in den Figuren angegebenen Reihenfolge auftreten können. Zum Beispiel können zwei Blöcke, die nacheinander gezeigt sind, tatsächlich im Wesentlichen gleichzeitig ausgeführt werden oder die Blöcke können gelegentlich in Abhängigkeit von der beteiligten Funktionalität in der umgekehrten Reihenfolge ausgeführt werden. Es wird außerdem angemerkt, dass jeder Block der Blockschaubilder und/oder Ablaufplan-Darstellung und Kombinationen von Blöcken in den Blockschaubildern und/oder der Ablaufplan-Darstellung durch auf spezielle Hardware gestützte Systeme, die die spezifizierten Funktionen oder Handlungen ausführen, oder Kombinationen aus spezieller Hardware und Computerbefehlen umgesetzt werden können.
-
Die hier verwendete Terminologie dient lediglich dem Zweck der Beschreibung bestimmter Ausführungsformen und ist nicht vorgesehen, um die Erfindung einzuschränken. Es ist vorgesehen, dass die hier verwendeten Singularformen ”ein”/”eine” und ”der/die/das” ebenso die Pluralformen einschließen, falls im Kontext nicht ausdrücklich anders angegeben. Es ist ferner klar, dass die Ausdrücke ”aufweist” und/oder ”aufweisen”, wenn sie in dieser Beschreibung verwendet werden, das Vorhandensein von angegebenen Merkmalen, Ganzzahlen, Schritten, Operationen, Elementen und/oder Komponenten spezifizieren, jedoch nicht das Vorhandensein oder die Hinzufügung von einem oder mehreren anderen Merkmalen, Ganzzahlen, Schritten, Operationen, Elementen, Komponenten und/oder Gruppen hiervon ausschließen.
-
Es ist vorgesehen, dass die entsprechenden Strukturen, Materialien, Handlungen und Entsprechungen aller Mittel oder Schritte plus Funktionselemente in den nachfolgenden Ansprüchen jede Struktur, jedes Material oder jede Handlung zum Ausführen der Funktion in Kombination mit anderen beanspruchten Elementen in der speziell beanspruchten Weise enthalten. Die Beschreibung der vorliegenden Erfindung wurde für Zwecke der Erläuterung und Beschreibung präsentiert, es ist jedoch nicht vorgesehen, dass sie in der beschriebenen Form für die Erfindung erschöpfend oder einschränkend ist. Viele Modifikationen und Variationen werden einem Fachmann klar sein, ohne vom Umfang und Erfindungsgedanken der Erfindung abzuweichen. Die Ausführungsform wurde ausgewählt und beschrieben, um die Grundgedanken der Erfindung und ihre praktischen Anwendungsmöglichkeiten am besten zu erläutern und um andere Fachleute zu befähigen, die Erfindung im Hinblick auf verschiedene Ausführungsformen mit zahlreichen Modifikationen zu verstehen, die für die vorgesehene bestimmte Verwendung geeignet sind.