-
HINTERGRUND
-
Eine oder mehrere in dieser Beschreibung offenbarte Ausführungsformen beziehen sich auf Sicherheitstests von Software.
-
Ein Testen von Einheiten wird häufig dazu verwendet sicherzustellen, dass eine Software-Einheit ihre funktionale Spezifikation einhält. Bei dem Testen von Einheiten handelt es sich um ein Verfahren, durch das einzelne Einheiten von Programmcode getestet werden, um zu ermitteln, ob sie ordnungsgemäß funktionieren und sich wie beabsichtigt verhalten. Allgemein ausgedrückt ist eine Einheit der kleinste testbare Teil einer Anwendung. In der prozeduralen Programmierung kann eine Einheit ein gesamtes Modul sein, häufiger handelt es sich jedoch um eine einzelne Funktion oder Prozedur. In der objektorientierten Programmierung ist eine Einheit häufig eine gesamte Schnittstelle wie zum Beispiel eine Klasse, es kann sich jedoch auch um eine einzelne Methode handeln. Einheitentests werden üblicherweise durch Software-Entwickler geschrieben und ausgeführt. Ihre Implementierung kann von einem sehr manuellen Vorgang bis zu einer Formalisierung als Teil einer Build-Automatisierung variieren.
-
KURZDARSTELLUNG
-
Eine oder mehrere in dieser Beschreibung offenbarte Ausführungsformen beziehen sich auf ein Durchführen einer Sicherheitsanalyse an einem im Test befindlichen Computerprogramm (computer program under test, CPUT).
-
Eine Ausführungsform kann über einen Prozessor ein Analysieren des CPUT beinhalten, um Daten zu identifizieren, die für potenzielle Sicherheitslücken des CPUT relevant sind. Das Verfahren kann des Weiteren ein automatisches Synthetisieren zumindest eines ersten Einheitentests beinhalten, der dazu eingerichtet ist, eine bestimmte Einheit eines Programmcodes innerhalb des CPUT zu testen, wobei der erste Einheitentest dazu eingerichtet ist, zumindest einen Parameter zu initialisieren, der durch die bestimmte Einheit des Programmcodes innerhalb des CPUT verwendet wird. Das Verfahren kann außerdem ein Bereitstellen zumindest einer ersten Testnutzdatenmenge für den ersten Einheitentest beinhalten, die dazu eingerichtet ist, zumindest eine potenzielle Sicherheitslücke des CPUT auszunutzen. Das Verfahren kann des Weiteren ein dynamisches Verarbeiten des ersten Einheitentests, um die erste Testnutzdatenmenge an die bestimmte Einheit des Programmcodes innerhalb des CPUT zu übertragen, um zu ermitteln, ob die erste Testnutzdatenmenge eine tatsächliche Sicherheitslücke des CPUT ausnutzt, und ein Ausgeben eines Sicherheitsanalyseberichts beinhalten, der angibt, ob die erste Testnutzdatenmenge eine tatsächliche Sicherheitslücke des CPUT ausnutzt.
-
Eine weitere Ausführungsform kann über einen Prozessor ein Durchführen einer statischen Analyse des CPUT beinhalten, um Daten zu identifizieren, die für potenzielle Sicherheitslücken des CPUT relevant sind. Das Verfahren kann des Weiteren ein automatisches Synthetisieren zumindest eines ersten Einheitentests beinhalten, der dazu eingerichtet ist, eine bestimmte Einheit eines Programmcodes innerhalb des CPUT zu testen, wobei der erste Einheitentest dazu eingerichtet ist, zumindest einen Parameter zu initialisieren, der durch die bestimmte Einheit des Programmcodes innerhalb des CPUT verwendet wird. Das Verfahren kann außerdem ein Bereitstellen zumindest einer ersten Testnutzdatenmenge, die dazu eingerichtet ist, zumindest eine potenzielle Sicherheitslücke des CPUT auszunutzen, ein dynamisches Verarbeiten des ersten Einheitentests, um die erste Testnutzdatenmenge an die bestimmte Einheit des Programmcodes innerhalb des CPUT über eine Hypertext-Transfer-Protocol(HTTP)-Anforderung zu übertragen, um zu ermitteln, ob die erste Testnutzdatenmenge eine tatsächliche Sicherheitslücke des CPUT ausnutzt, und ein Ausgeben eines Sicherheitsanalyseberichts beinhalten, der angibt, ob die erste Testnutzdatenmenge eine tatsächliche Sicherheitslücke des CPUT ausnutzt.
-
Eine weitere Ausführungsform kann ein Computerprogrammprodukt zum Durchführen einer Sicherheitsanalyse an einem im Test befindlichen Computerprogramm (CPUT) beinhalten. Das Computerprogrammprodukt kann ein computerlesbares Speichermedium beinhalten, in dem computerlesbarer Programmcode verkörpert ist, wobei der computerlesbare Programmcode computerlesbaren Programmcode aufweist, der dazu eingerichtet ist, die verschiedenen Vorgänge und/oder Funktionen durchzuführen, die in dieser Beschreibung offenbart werden.
-
Eine weitere Ausführungsform kann ein System beinhalten, das einen Prozessor beinhalten kann, der dazu eingerichtet ist, Vorgänge/ausführbare Vorgänge/usw. durchzuführen, wie sie in dieser Beschreibung beschrieben werden.
-
KURZBESCHREIBUNG DER VERSCHIEDENEN ANSICHTEN DER ZEICHNUNGEN
-
1 ist ein Blockschaubild, das ein System zum automatischen Synthetisieren von Einheitentests für Sicherheitstests gemäß einer Ausführungsform veranschaulicht, die in dieser Beschreibung offenbart wird.
-
2 ist ein Blockschaubild, das ein Verarbeitungssystem gemäß einer Ausführungsform veranschaulicht, die in dieser Beschreibung offenbart wird.
-
3 ist ein Ablaufplan, der ein Verfahren zum Durchführen einer Sicherheitsanalyse an einem CPUT gemäß einer weiteren Ausführungsform veranschaulicht, die in dieser Beschreibung offenbart wird.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Wie für einen Fachmann ersichtlich ist, können Aspekte der vorliegenden Erfindung als System, Verfahren oder Computerprogrammprodukt verkörpert werden. Dementsprechend können Aspekte der vorliegenden Erfindung 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 können Aspekte der vorliegenden Erfindung die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medien verkörpert wird, auf denen computerlesbarer Programmcode verkörpert, z. B. gespeichert, ist.
-
Es kann eine beliebige Kombination eines oder mehrerer computerlesbarer Medien verwendet werden. Bei dem computerlesbaren Medium kann es sich um ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium handeln. Bei dem computerlesbaren Speichermedium kann es sich im Sinne einer nicht abschließenden Aufzählung zum Beispiel um ein(e) elektronische(s), magnetische(s), optische(s), elektromagnetische(s), Infrarot- bzw. Halbleitersystem, -vorrichtung oder -einheit oder um eine beliebige geeignete Kombination aus Obigem handeln. Zu konkreteren Beispielen (einer nicht erschöpfenden Liste) des computerlesbaren Speichermediums würden folgende gehören: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, ein Festplattenlaufwerk (hard disk drive, HDD), ein Halbleiterlaufwerk (solid state drive, SDD), ein Direktzugriffsspeicher (random access memory, RAM), ein Festwertspeicher (read-only memory, ROM), ein löschbarer, programmierbarer Festwertspeicher (erasable programmable read-only memory, EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Compact-Disk-Festwertspeicher (CD-ROM), eine digitale, vielseitige Scheibe (digital versatile disc, DVD) eine optische Speichereinheit, eine Magnetspeichereinheit oder eine beliebige geeignete Kombination der Obigen. Im Rahmen dieses Dokuments kann ein computerlesbares Speichermedium jedes greifbare Medium sein, das ein Programm zur Verwendung durch ein System, eine Vorrichtung oder Einheit zur Befehlsausführung bzw. in Verbindung mit diesen enthalten oder speichern kann.
-
Ein computerlesbares Signalmedium kann ein sich ausbreitendes Datensignal, in dem computerlesbarer Programmcode verkörpert wird, zum Beispiel im Basisband oder als Teil einer Trägerwelle beinhalten. Ein solches sich ausbreitendes Signal kann eine Vielfalt von Formen annehmen, darunter eine elektromagnetische Form, eine optische Form oder eine beliebige geeignete Kombination derselben, ohne auf diese beschränkt zu sein. Bei einem computerlesbaren Signalmedium kann es sich um ein beliebiges computerlesbares Medium handeln, das kein computerlesbares Speichermedium ist und das ein Programm zur Verwendung durch ein System, eine Vorrichtung oder Einheit zur Befehlsausführung bzw. in Verbindung mit diesen austauschen, verbreiten oder transportieren kann.
-
Auf einem computerlesbaren Medium verkörperter Programmcode kann mithilfe eines beliebigen geeigneten Mediums übertragen werden, zum Beispiel drahtlos, drahtgebunden, über Lichtwellenleiter, Kabel, Hochfrequenz (HF) usw. oder über eine beliebige geeignete Kombination der Obigen, ohne auf diese beschränkt zu sein. Computerprogrammcode zum Ausführen von Vorgängen für Aspekte der vorliegenden Erfindung kann in einer beliebigen Kombination einer oder mehrerer Programmiersprachen geschrieben werden, zum Beispiel in einer objektorientierten Programmiersprache wie etwa JavaTM, Smalltalk, C++ oder dergleichen und in herkömmlichen prozeduralen Programmiersprachen wie zum Beispiel der Programmiersprache „C” oder ähnlichen Programmiersprachen. 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 eine beliebige 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.
-
Aspekte der vorliegenden Erfindung werden 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 Computerprogramm befehle implementiert 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, einer sonstigen programmierbaren Datenverarbeitungsvorrichtung, oder sonstige Einheiten ausgeführt werden, ein Mittel zum Implementieren 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, eine sonstige programmierbare Datenverarbeitungsvorrichtung oder sonstige Einheiten so steuern kann, dass sie in einer bestimmten Weise funktionieren, sodass die in dem computerlesbaren Medium gespeicherten Befehle einen Herstellungsgegenstand erzeugen, der Befehle beinhaltet, die die/den Funktion/Vorgang implementieren, die/der 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, eine sonstige programmierbare Datenverarbeitungsvorrichtung oder sonstige Einheiten geladen werden, um zu bewirken, dass eine Reihe von Schritten eines Vorgangs auf dem Computer, einer sonstigen programmierbaren Vorrichtung oder sonstigen Einheiten 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 zu implementieren.
-
Die hierin beschriebenen Anordnungen beziehen sich auf die Sicherheitsanalyse und das Testen eines im Test befindlichen Computerprogramms (CPUT) wie zum Beispiel einer Anwendung auf der Grundlage des Web. Im Besonderen können Daten, die sich auf das CPUT beziehen, extrahiert und verarbeitet werden, um Einheitentests dynamisch zu erstellen, die speziell zum Testen auf Sicherheitslücken gestaltet sind, die in dem CPUT vorhanden sein können. Die Einheitentests können auf der Grundlage der Daten, die für den Programmcode des CPUT abgerufen werden, automatisch synthetisiert werden. Dementsprechend können die Einheitentests, die automatisch erstellt werden, CPUT-spezifisch sein und können das CPUT anwenden, um Sicherheitslücken zu ermitteln. Im Besonderen können die Einstiegspunkte des CPUT identifiziert werden, und für jeden Einstiegspunkt können Hypertext-Transfer-Protocol(HTTP)-Parameter festgelegt werden, die dem Einstiegspunkt entsprechen. Diese Einstiegspunkte können mithilfe eines oder mehrerer Einheitentests angewendet werden, um Testdaten, beispielsweise Testnutzdaten, die zerstörerischen Programmcode enthalten, Werte oder dergleichen in einen oder mehrere Parameter zu injizieren, die durch die Einstiegspunkte des CPUT verarbeitet werden. Dementsprechend können die Einheitentests dazu verwendet werden, das CPUT zu testen, um zu ermitteln, ob das CPUT anfällig für zerstörerische Daten ist, die potenziell durch einen Endbenutzer injiziert werden können, wenn das CPUT aktiv ist (d. h. implementiert ist und in seiner beabsichtigten Weise arbeitet).
-
So, wie der Begriff hierin verwendet wird, handelt es sich bei einem Einheitentest um einen computerlesbaren Programmcode, der einen Test an einer bestimmten Einheit eines CPUT-Programmcodes (z. B. einem kleinsten testbaren Teil des CPUT) durchführt und zumindest einen Parameter initialisiert, der durch die bestimmte Einheit verwendet wird. Zu Beispielen für Programmcode zählen Quellcode, Byte-Code (d. h. portierbarer Code oder P-Code), Binärcode und dergleichen, ohne jedoch auf diese beschränkt zu sein. Eine oder mehrere Mengen von Nutzdaten wie zum Beispiel Programmcode (z. B. ein Skript), Werte oder dergleichen können einem Einheitentest bereitgestellt werden, damit sie für einen Sicherheitstest in das CPUT injiziert werden. So, wie der Begriff hierin verwendet wird, handelt es sich bei einer Einheit des CPUT um eine Funktion, ein Modul oder eine beliebige sonstige Gruppe einer oder mehrerer Zeilen des CPUT-Programmcodes, die einen bestimmten Vorgang durchführen. Nachstehend kann innerhalb der folgenden Beschreibung und/oder Ansprüche eine Einheit des CPUT als „Einheit des Programmcodes” bezeichnet werden.
-
1 ist ein Blockschaubild, das ein System 100 zum automatischen Synthetisieren von Einheitentests 112 für Sicherheitstests gemäß einer Ausführungsform veranschaulicht, die in dieser Beschreibung offenbart wird. Das System kann eine Sicherheitsanalyseanwendung 110 und ein CPUT 120 beinhalten, das durch die Sicherheitsanalyseanwendung 110 auf Sicherheitslücken getestet wird.
-
Bei einer Ausführungsform können die Sicherheitsanalyseanwendung 110 und ein CPUT 120 auf demselben Verarbeitungssystem ausgeführt werden. Dementsprechend können die Kosten für die Bandbreite der Datenübertragungen für die Sicherheitsanalyseanwendung 110 und das CPUT 120 beseitigt werden. Zur Veranschaulichung, die Latenzzeit für die Datenübertragung kann so weit wie möglich verringert werden, und Mehraufwandsprozesse, die zur Unterstützung von Datenübertragungen zwischen ungleichartigen Systemen erforderlich sind, können beseitigt werden.
-
Im Betrieb kann die Sicherheitsanalyseanwendung 110 das CPUT 120 analysieren, um Daten zu identifizieren, die für potenzielle Sicherheitslücken des CPUT 120 relevant sind. Beispielsweise kann die Sicherheitsanalyseanwendung 110 den Programmcode für das CPUT 120 abrufen und eine statische Analyse des Programmcodes durchführen, um Rohdaten zu identifizieren und zu extrahieren, die mit Einheiten des CPUT 120, die Benutzereingaben empfangen, und der Weise in Zusammenhang stehen, in der solche Benutzereingaben bearbeitet werden. Beispielsweise kann die Sicherheitsanalyseanwendung 110 Programmcode für Anweisungen in dem CPUT, die eine Benutzereingabe in das CPUT 120 einlesen, und Programmcode für Einheiten des CPUT identifizieren, die mit dem Verarbeiten von Daten in Zusammenhang stehen, die von Benutzern an diesen Einstiegspunkten empfangen werden.
-
Bei einer Anordnung, bei der es sich bei dem CPUT 120 um eine Web-Anwendung handelt, kann die Sicherheitsanalyseanwendung 110 Programmcode für jede Einheit des CPUT (d. h. Einheit des Programmcodes), die mit dem Empfangen von HTTP-Anforderungen in Zusammenhang steht, und Programmcode für jede Einheit des CPUT analysieren und abrufen, die mit dem Verarbeiten solcher HTTP-Anforderungen in Zusammenhang steht. Mit anderen Worten, zusätzlich zu dem Analysieren des Programmcodes, der mit dem Bereitstellen einer Schnittstelle für eine Benutzerinteraktion mit dem CPUT 120 in Zusammenhang steht, kann die Sicherheitsanalyseanwendung 110 eine statische Analyse an dem Programmcode durchführen, der mit einer Back-End-Verarbeitung in Zusammenhang steht, die durch das CPUT 120 durchgeführt wird. Dementsprechend kann die statische Analyse, die durch die Sicherheitsanalyseanwendung 110 durchgeführt wird, sehr gründlich sein und potenzielle Sicherheitslücken identifizieren, die anderenfalls übersehen würden, wenn lediglich eine dynamische Analyse angewendet würde. Darüber hinaus können die vorliegenden Ausführungsformen die Verwendung sehr kostspieliger HTTP-Datenübertragungen durch Synthetisieren von Einheitentests auf der Seite des Servers beseitigen.
-
Auf der Grundlage solcher Identifizierungen kann die Sicherheitsanalyseanwendung 110 die Einheitentests 112 dynamisch synthetisieren, die versuchen, Sicherheitslücken auszunutzen, die potenziell in einer oder mehreren Einheiten des CPUT 120 vorhanden sein können. Im Besonderen kann jeder Einheitentest 112 dazu eingerichtet sein, einen oder mehrere Parameter zu initialisieren, die durch eine bestimmte Einheit des CPUT 120 verarbeitet werden.
-
Bei einer Ausführungsform, bei der die Einheitentests 112 künstliche HTTP-Anforderungen 130 erzeugen, kann die Sicherheitsanalyseanwendung 110 ein Mocking-Framework implementieren, das Unterstützung für die Sicherheitsanalyseanwendung 110 zum Synthetisieren der Einheitentests 112 bereitstellt, die künstliche HTTP-Anforderungen 130 erzeugen. Solche Mocking-Frameworks sind nach dem Stand der Technik bekannt. Zur Veranschaulichung, das Mocking-Framework kann, statt eine herkömmliche Benutzeroberfläche zu verwenden, die durch das CPUT 120 bereitgestellt wird, durch die Endbenutzer mit dem CPUT 120 interagieren, eine synthetische Klasse beinhalten, die ein Mock-Objekt implementiert, das durch den/die Einheitentest(s) 112 erzeugte HTTP-Anforderungen in geeigneter Weise für die Verarbeitung durch das CPUT 120 strukturiert. In dieser Hinsicht kann das Mocking-Framework die Weise nachahmen, in der eine herkömmliche Benutzeroberfläche Parameter von einem Benutzer empfängt und herkömmliche HTTP-Anforderungen erzeugt. Der Prozess des Nachahmens der Arbeitsweise einer herkömmlichen Benutzeroberfläche wird nach dem Stand der Technik häufig als „Mocking” bezeichnet.
-
Des Weiteren können eine oder mehrere Testnutzdatenmengen für jeden Einheitentest 112 bereitgestellt werden, die der Einheitentest 112 an das CPUT übertragen (z. B. dort hinein injizieren) kann, und die dazu führen können, dass eine Zieleinheit des CPUT 120 in unerwünschter Weise ausgeführt wird, wenn die Testnutzdatenmengen durch das CPUT 120 empfangen und verarbeitet werden. Die Sicherheitsanalyseanwendung 110 kann die Testnutzdatenmengen in beliebiger geeigneter Weise erstellen. Beispielsweise kann die Sicherheitsanalyseanwendung 110 auf eine Bibliothek von Testnutzdaten-Werten zugreifen, die verschiedenen während der statischen Analyse identifizierten Parametern entsprechen können, die durch das CPUT 120 verarbeitet werden. Insofern können die Testnutzdaten vordefiniert werden, wenngleich die Erfindung nicht in dieser Hinsicht beschränkt ist. Beispielsweise kann ein Benutzer auswählen, welche Testnutzdaten ausgeführt werden sollen, oder die Testnutzdaten können auf der Grundlage der Analyse des CPUT-Programmcodes dynamisch angepasst werden.
-
Als Beispiel werde angenommen, dass eine Einheit des CPUT 120 dazu eingerichtet ist, einen Parameter „name” zu verarbeiten, der durch einen Endbenutzer bereitgestellt wird, beispielsweise mithilfe einer Anweisung „get name” im Programmcode des CPUT 120. Da der Parameter „name” zum Beispiel mithilfe einer HTTP-Anforderung durch den Endbenutzer bereitgestellt wird, kann er als nicht vertrauenswürdiger Parameter betrachtet werden; bestimmte skrupellose Endbenutzer könnten versuchen, mithilfe dieses Parameters zerstörerische Nutzdaten in das CPUT 120 zu injizieren. Die Sicherheitsanalyseanwendung 110 kann auf der Grundlage der statischen Analyse erkennen, dass ein solcher nicht vertrauenswürdiger Parameter durch eine Einheit des CPUT 120 verwendet wird, und den Einheitentest 112 synthetisieren, um den Parameter „name” zu definieren und diesen Parameter zu initialisieren. Des Weiteren kann die Sicherheitsanalyseanwendung 110 dem Einheitentest 112 eine Testnutzdatenmenge bereitstellen, die als Parameter „name” an das CPUT 120 übertragen werden soll. Ein Beispiel für die Nutzdatenmenge kann zum Beispiel ein Skript-Tag (z. B. ”<script type = 'text/javascript' name = 'name' > 'alert' </script>”) sein. Insofern kann die Testnutzdatenmenge dazu eingerichtet werden, durch das CPUT 120 verarbeitet zu werden, um einen bestimmten Test an der Anweisung „get name” in der Einheit des im Test befindlichen CPUT 120 durchzuführen. Nichtsdestotrotz ist die Erfindung nicht auf dieses spezifische Beispiel beschränkt. Beispielsweise kann eine Testnutzdatenmenge einen beliebigen sonstigen Programmcode, einen oder mehrere Werte oder dergleichen enthalten, die dazu eingerichtet sind, das CPUT auf Sicherheitslücken zu testen.
-
Die Sicherheitsanalyseanwendung 110 kann den/die Einheitentest(s) 112 verarbeiten, um die Testnutzdatenmenge(n) an das CPUT 120 zu übertragen. Beispielsweise kann ein Einheitentest 112 bei einer Ausführungsform verarbeitet werden, um eine oder mehrere künstliche HTTP-Anforderungen 130 zu erzeugen und die künstlichen HTTP-Anforderungen 130 an das CPUT 120 zu übertragen. Jede künstliche HTTP-Anforderung 130 kann eine oder mehrere Testnutzdatenmengen beinhalten. So, wie der Begriff hierin verwendet wird, handelt es sich bei einer künstlichen HTTP-Anforderung um eine HTTP-Anforderung, die automatisch zum Zweck des Testens eines CPUT und nicht direkt durch einen Benutzer erzeugt wird.
-
In Reaktion auf das Empfangen der künstlichen HTTP-Anforderung 130 wie auch jeglicher Testnutzdatenmengen, die in der künstlichen HTTP-Anforderung 130 enthalten oder dieser auf andere Weise zugehörig sind, kann das CPUT 120 eine HTTP-Antwort 140 erzeugen. Die Sicherheitsanalyseanwendung 110 kann die HTTP-Antwort 140 analysieren, um zu ermitteln, ob das CPUT 120 in unerwünschter Weise auf die künstliche HTTP-Anforderung 130 reagiert. Darüber hinaus kann die Sicherheitsanalyseanwendung 110 auch sonstige Prozesse überwachen, die durch das CPUT 120 ausgeführt werden, um zu ermitteln, ob das CPUT 120 in unerwünschter Weise reagiert. Beispielsweise kann die Sicherheitsanalyseanwendung 110 eine Gültigkeitsprüfungslogik implementieren, um eine Dateneingabe-/-ausgabeaktivität zu überwachen, die durch das CPUT 120 durchgeführt wird, beispielsweise Senden zusätzlicher künstlicher HTTP-Anforderungen, Erzeugen von Daten, Speichern von Daten, Abrufen von Daten und dergleichen.
-
Bei einer Anordnung kann die Sicherheitsanalyseanwendung 110 die HTTP-Antwort 140 verarbeiten, um zusätzliche Daten zu identifizieren, die für potenzielle Sicherheitslücken des CPUT relevant sind, wie zum Beispiel zusätzliche Sicherheitslücken in dem CPUT oder zusätzliche Aspekte einer bestimmten Lücke, die identifiziert worden ist. Auf der Grundlage solcher Identifizierungen kann die Sicherheitsanalyseanwendung 110 einen oder mehrere nachfolgende Einheitentests 112 dynamisch synthetisieren, die versuchen, Sicherheitslücken auszunutzen, die potenziell in dem CPUT 120 vorhanden sein können. Zur Veranschaulichung, die Sicherheitsanalyseanwendung 110 kann einen oder mehrere sonstige Einheitentests 112 synthetisieren, die eine oder mehrere sonstige Testnutzdatenmenge(n) aufweisen, die dazu eingerichtet sind, das CPUT auf potenzielle Sicherheitslücken zu testen, und den/die sonstigen Einheitentest(s) 112 dynamisch ausführen, um eine oder mehrere weitere Testnutzdatenmenge(n) über eine oder mehrere sonstige künstliche HTTP-Anforderungen an das CPUT 120 zu übertragen, beispielsweise wie zuvor beschrieben. Die Sicherheitsanalyseanwendung 110 kann nachfolgende HTTP-Antworten empfangen und/oder das CPUT 120 überwachen, wie zuvor beschrieben, um zu ermitteln, ob das CPUT 120 in unerwünschter Weise auf den/die nachfolgenden Einheitentest(s) 112 reagiert.
-
Die Sicherheitsanalyseanwendung 110 kann die HTTP-Antwort 140, jegliche sonstige Antworten, die von dem CPUT 120 empfangen werden, und/oder eine Dateneingabe-/ausgabeaktivität, die durch das CPUT 120 durchgeführt wird, analysieren, um Sicherheitslücken in dem CPUT 120 zu identifizieren. Auf der Grundlage einer solchen Analyse kann die Sicherheitsanalyseanwendung 110 einen Sicherheitsanalysebericht 150 erzeugen, der Sicherheitslücken angibt, die mit dem CPUT 120 in Zusammenhang stehen. Zur Veranschaulichung, die Sicherheitsanalyseanwendung 110 kann den Sicherheitsanalysebericht 150 an eine Benutzeroberfläche 160, eine computerlesbare Speichereinheit oder dergleichen ausgeben. Die Benutzeroberfläche 160 kann durch das Verarbeitungssystem dargestellt werden, auf dem die Sicherheitsanalyseanwendung 110 ausgeführt wird, dies muss jedoch nicht der Fall sein.
-
2 ist ein Blockschaubild, das ein Verarbeitungssystem 200 gemäß einer Ausführungsform veranschaulicht, die in dieser Beschreibung offenbart wird. Das Verarbeitungssystem 200 kann zumindest einen Prozessor 205 beinhalten, der durch einen Systembus 215 oder sonstige geeignete Schaltungen mit Speicherelementen 210 verbunden ist. Insofern kann das Verarbeitungssystem 200 computerlesbaren Programmcode innerhalb der Speicherelemente 210 speichern. Der Prozessor 105 kann den computerlesbaren Programmcode ausführen, der von den Speicherelementen 210 über den Systembus 215 abgerufen wird. In einem Aspekt kann das Verarbeitungssystem 200 zum Beispiel als Computer implementiert werden, der zum Speichern und/oder Ausführen von Programmcode geeignet ist. Es ist jedoch zu beachten, dass das Verarbeitungssystem 200 in Form eines beliebigen Systems implementiert werden kann, das einen Prozessor und einen Speicher beinhaltet, das in der Lage ist, die Funktionen und/oder Vorgänge durchzuführen, die in dieser Beschreibung beschrieben werden.
-
Die Speicherelemente 210 können eine oder mehrere physische Speichereinheiten wie zum Beispiel einen lokalen Speicher 220 und einen oder mehrere Massenspeichereinheiten 225 beinhalten. Der lokale Speicher 220 bezieht sich auf einen Direktzugriffsspeicher oder eine oder mehrere sonstige nichtdauerhafte Speichereinheiten, die im Allgemeinen während einer eigentlichen Ausführung des Programmcodes verwendet werden. Die Massenspeichereinheit(en) 225 kann/können als Festplattenlaufwerk (HDD), Halbleiterlaufwerk (SSD) oder sonstige dauerhafte Datenspeichereinheit implementiert werden. Das Verarbeitungssystem 200 kann außerdem einen oder mehrere (nicht dargestellte) Cachespeicher beinhalten, die eine vorübergehende Speicherung zumindest eines Teils des Programmcodes bereitstellen, um die Häufigkeit zu verringern, mit der Programmcode während der Ausführung aus der Massenspeichereinheit 225 abgerufen werden muss.
-
Eingabe-/Ausgabe(E/A)-Einheiten wie zum Beispiel eine Tastatur 230, eine Anzeige 235 und eine Zeigeeinheit 240 können optional mit dem Verarbeitungssystem 200 verbunden werden. Die E/A-Einheiten können entweder direkt oder durch dazwischengeschaltete E/A-Steuereinheiten mit dem Verarbeitungssystem 200 verbunden werden. Ein oder mehrere Netzwerkadapter 245 können ebenfalls mit dem Verarbeitungssystem 200 verbunden werden, um dem Verarbeitungssystem 200 zu ermöglichen, durch dazwischengeschaltete private oder öffentliche Netzwerke mit sonstigen Systemen, Computersystemen, entfernt angeordneten Druckern und/oder Speichereinheiten verbunden zu werden. Modems, Kabelmodems, Ethernet-Karten, drahtlose Netzwerkadapter und persönliche Netzwerkeinheiten sind Beispiele für verschiedene Arten der Netzwerkadapter 245, die mit dem Verarbeitungssystem 200 verwendet werden können.
-
Wie in 2 dargestellt, können die Speicherelemente 210 die Sicherheitsanalyseanwendung 110 und das CPUT 120 speichern. Die Sicherheitsanalyseanwendung 110, die in Form von ausführbarem Programmcode implementiert ist, kann durch das Verarbeitungssystem 200 ausgeführt werden und kann insofern als Teil des Verarbeitungssystems 200 betrachtet werden.
-
Die Sicherheitsanalyseanwendung 110 kann durch den Prozessor 205 ausgeführt werden, um die hierin beschriebenen Verfahren und Prozesse durchzuführen. Beispielsweise kann die Sicherheitsanalyseanwendung 110 ausgeführt werden, um das CPUT 120 zu analysieren, um Daten zu identifizieren, die für potenzielle Sicherheitslücken des CPUT relevant sind, automatisch/dynamisch zumindest einen Einheitentest 112 zu synthetisieren und den/die Einheitentest(s) 112 dynamisch zu verarbeiten, um eine oder mehrere Testnutzdatenmengen an das CPUT 120 zu übertragen, um auf potenzielle Sicherheitslücken zu testen, die in dem CPUT 120 vorhanden sind.
-
Die Sicherheitsanalyseanwendung 110 kann die Ergebnisse eines solchen Tests an die Speicherelemente 210 ausgeben und darin speichern. So, wie der Begriff hierin verwendet wird, kann „ausgeben” und/oder „Ausgabe” das Speichern in den Speicherelementen 210 bedeuten, beispielsweise Schreiben in eine oder mehrere in den Speicherelementen 210 gespeicherte Dateien, Schreiben in die Anzeige 235 oder eine sonstige periphere Ausgabeeinheit, Abspielen hörbarer Benachrichtigungen, Senden oder Übermitteln an ein weiteres System, Exportieren oder dergleichen. Bei einer Ausführungsform kann die Sicherheitsanalyseanwendung 100 als IBM® Rational® AppScan® Source Edition implementiert werden (IBM, Rational und AppScan sind Marken von International Business Machines Corporation in den Vereinigten Staaten, sonstigen Ländern oder beiden).
-
3 ist ein Ablaufplan, der ein Verfahren 300 zum Durchführen einer Sicherheitsanalyse an einem CPUT gemäß einer weiteren Ausführungsform veranschaulicht, die in dieser Beschreibung offenbart wird. Das Verfahren 300 kann durch das Verarbeitungssystem von 2 implementiert werden.
-
In Schritt 302 kann das CPUT über den Prozessor analysiert werden, um Daten zu identifizieren, die für potenzielle Sicherheitslücken des CPUT relevant sind. Beispielsweise kann die Sicherheitsanalyseanwendung eine statische Analyse des CPUT durchführen. Im Besonderen kann die Sicherheitsanalyseanwendung Programmcode des CPUT analysieren, der mit dem Empfangen von HTTP-Anforderungen in Zusammenhang steht, und Programmcode des CPUT analysieren, der mit dem Verarbeiten von HTTP-Anforderungen in Zusammenhang steht.
-
In Schritt 304 kann die Sicherheitsanalyseanwendung automatisch einen oder mehrere Einheitentests synthetisieren, wobei jeder Einheitentest dazu eingerichtet ist, einen oder mehrere Parameter zu initialisieren, die durch eine bestimmte Einheit des CPUT-Programmcodes verarbeitet werden. Beispielsweise kann die Sicherheitsanalyseanwendung die Daten verarbeiten, die für potenzielle Sicherheitslücken des CPUT relevant sind, um den/die Einheitentest(s) zu synthetisieren. Die Sicherheitsanalyseanwendung kann des Weiteren jedem Einheitentest eine oder mehrere Testnutzdatenmengen bereitstellen, die dazu eingerichtet sind, das CPUT auf eine oder mehrere potenzielle Sicherheitslücken zu testen. Wie angemerkt, kann eine Testnutzdatenmenge einen oder mehrere Werte, Programmcode (z. B. ein Skript) oder dergleichen aufweisen, die dazu bestimmt sind, zerstörerische Nutzdaten zu replizieren, die ein skrupelloser Endbenutzer während eines herkömmlichen Ablaufs des im Einsatz befindlichen CPUT in das CPUT zu injizieren versuchen könnte.
-
In Schritt 306 kann/können der/die Einheitentest(s) dynamisch verarbeitet werden, um die erste(n) Menge(n) von Testnutzdaten an das CPUT zu übertragen. Beispielsweise kann/können der/die Einheitentest(s) dynamisch verarbeitet werden, um eine oder mehrere künstliche HTTP-Anforderungen zu erzeugen, die jeweils eine oder mehrere Testnutzdatenmengen aufweisen, und die künstlichen HTTP-Anforderungen, die die Testnutzdatenmengen aufweisen, an das CPUT zu übertragen. In Reaktion auf das Empfangen der Testnutzdatenmenge(n) kann das CPUT eine oder mehrere HTTP-Antworten erzeugen und die HTTP-Antworten an die Sicherheitsanalyseanwendung übertragen.
-
In Schritt 308 kann die Sicherheitsanalyseanwendung von dem CPUT die HTTP-Antworten auf die künstlichen HTTP-Anforderungen empfangen. In Schritt 310 kann die Sicherheitsanalyseanwendung ermitteln, ob die Testnutzdatenmenge(n) tatsächliche Sicherheitslücken des CPUT ausnutzt/ausnutzen. Beispielsweise kann die Sicherheitsanalyseanwendung das CPUT analysieren, während sie die Testnutzdatenmengen verarbeitet, und/oder die durch das CPUT erzeugte(n) HTTP-Antwort(en) analysieren, beispielsweise wie zuvor beschrieben. Zur Veranschaulichung, wenn sich das CPUT während des Verarbeitens einer oder mehrerer Testnutzdatenmengen in unerwünschter Weise verhält oder das CPUT unerwünschte HTTP-Antworten erzeugt, kann ein solches Verhalten des CPUT identifiziert werden.
-
In Schritt 312 kann die Sicherheitsanalyseanwendung die HTTP-Antwort(en) analysieren, um zu ermitteln, ob zusätzliche Sicherheitslücken des CPUT vorhanden sind. Zur Veranschaulichung, eine HTTP-Antwort kann Inhalt aufweisen, der auf zusätzliche Daten hinweist, die für potenzielle Sicherheitslücken des CPUT relevant sind, die in Schritt 302 möglicherweise nicht identifiziert worden sind. Unter Bezugnahme auf das Entscheidungsfeld 314 können die zusätzlichen Daten in Schritt 316 identifiziert werden, wenn zusätzliche potenzielle Sicherheitslücken durch Analysieren der HTTP-Antwort(en) identifiziert werden. In Schritt 318 kann die Sicherheitsanalyseanwendung einen oder mehrere zusätzliche Einheitentests synthetisieren. Zumindest eine sonstige Testnutzdatenmenge, die dazu eingerichtet ist, das CPUT auf zumindest eine potenzielle Sicherheitslücke des CPUT zu testen, kann jedem zusätzlichen Einheitentest bereitgestellt werden. Der Prozess kann dann zu Schritt 306 übergehen und wie beschrieben fortgesetzt werden.
-
Erneut unter Bezugnahme auf das Entscheidungsfeld 314 kann der Prozess, wenn keine zusätzlichen potenziellen Sicherheitslücken identifiziert werden, zu Schritt 320 übergehen, und es kann ein Sicherheitsanalysebericht ausgegeben werden, beispielsweise auf der Grundlage der Ermittlungen, die in Schritt 310 durchgeführt worden sind. Die Ergebnisse der Sicherheitsanalyse, die in dem Sicherheitsanalysebericht enthalten sind, können angeben, ob die Testnutzdatenmenge(n) tatsächliche Sicherheitslücken des CPUT ausnutzt/ausnutzen. Wie angemerkt, können die Ergebnisse an eine Anzeige, einen Drucker ausgegeben werden, in einem Speicher gespeichert werden oder dergleichen.
-
In dieser gesamten Beschreibung sind gleiche Zahlen verwendet worden, um Bezug auf dieselben Elemente zu nehmen. Die Ablaufpläne und Blockschaubilder in den Figuren veranschaulichen die Architektur, Funktionalität und Arbeitsweise möglicher Implementierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen 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 Implementieren der angegebenen logischen Funktion(en) aufweist. Es ist außerdem zu beachten, dass bei einigen alternativen Implementierungen 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 implementiert werden können.
-
Die hierin verwendete Terminologie dient lediglich der Beschreibung bestimmter Ausführungsformen und soll die Erfindung nicht beschränken. So, wie sie hierin verwendet werden, sollen die Singularformen „ein”, „eine” und „der”, „die”, „das” auch die Pluralformen beinhalten, sofern dies aus dem Kontext nicht eindeutig anders hervorgeht. Es versteht sich darüber hinaus, dass die Begriffe „aufweist” und/oder „aufweisend”, wenn sie in dieser Beschreibung verwendet werden, das Vorhandensein von angegebenen Merkmalen, Ganzzahlen, Schritten, Vorgängen, Elementen und/oder Komponenten bezeichnen, jedoch nicht das Vorhandensein oder die Beifügung von einem/einer oder mehreren anderen Merkmalen, Ganzzahlen, Schritten, Vorgängen, Elementen, Komponenten und/oder Gruppen davon ausschließen.
-
Die entsprechenden Strukturen, Materialien, Vorgänge und Entsprechungen aller Mittel oder Schritt-plus-Funktion-Elemente in den nachstehenden Ansprüchen sollen jede Struktur, jedes Material bzw. jeden Vorgang zum Ausführen der Funktion in Kombination mit anderen beanspruchten Elementen als ausdrücklich beansprucht beinhalten. Die Beschreibung der vorliegenden Erfindung erfolgte zum Zweck der Veranschaulichung und Beschreibung, ist jedoch nicht erschöpfend oder auf die Erfindung in der offenbarten 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.