-
HINTERGRUND
-
Die vorliegende Offenbarung bezieht sich im Allgemeinen auf das Gebiet von digitalen Computersystemen und im Besonderen auf ein Verfahren zum Erkennen von Sicherheitsrisiken in Zusammenhang mit einer Software-Komponente, die in einer Laufzeitumgebung auf Container-Grundlage implementiert werden soll.
-
Infolge von technologischen Entwicklungen hat Technologie zur Virtualisierung von Ressourcen an Bedeutung gewonnen. Zusätzlich zu installierten, gängigen nativen Anwendungen enthält der Computer eines Benutzers häufig Produkte, die in Virtualisierungsumgebungen verfügbar sind. Diese virtuellen Umgebungen können auf einer Desktop-Oberfläche des Computers anzeigbar sein und können in Kategorien wie z.B. virtuelle Maschinen, Container und virtuelle Appliances zusammengefasst werden. Allerdings ist das Überwachen der Container eine schwierige Aufgabe.
-
KURZDARSTELLUNG
-
Einige Ausführungsformen der vorliegenden Offenbarung lösen die technische Problemstellung, die darin besteht, die Effizienz eines Betriebs von Laufzeitumgebungen auf Container-Grundlage zu verbessern. Die hier offenbarte technische Lösung stellt ein System und ein zugehöriges Verfahren zum Erkennen von Sicherheitsrisiken in Zusammenhang mit einer Software-Komponente bereit, die in einer Laufzeitumgebung auf Container-Grundlage implementiert werden soll. Vorteilhafte Ausführungsformen werden im Folgenden beschrieben. Ausführungsformen der vorliegenden Erfindung können frei miteinander kombiniert werden, sofern sie sich nicht gegenseitig ausschließen.
-
Bei einem Aspekt wird ein durch einen Computer realisiertes Verfahren zum Erkennen von Sicherheitsrisiken in Zusammenhang mit einer Software-Komponente bereitgestellt, die in einer Laufzeitumgebung auf Container-Grundlage implementiert werden soll. Das Verfahren kann ein Empfangen eines Auslösers aufweisen, wobei der Auslöser angibt, dass eine Schicht eines Containers innerhalb der Laufzeitumgebung auf Container-Grundlage auf Sicherheitsrisiken zu prüfen ist. Das Verfahren kann des Weiteren ein Identifizieren einer Prüfschicht des Containers aufweisen, die auf Sicherheitsrisiken zu prüfen ist. Das Verfahren kann ermitteln, dass für die Prüfschicht gemäß einem Prüfkriterium zuvor keine Prüfung auf Sicherheitsrisiken durchgeführt wurde, woraufhin es als Reaktion auf das Ermitteln, dass die Prüfung auf Sicherheitsrisiken zuvor nicht durchgeführt wurde, ermitteln kann, dass eine Sicherheitsanalyse ein Sicherheitsrisiko angibt. Als Reaktion auf das Ermitteln, dass die Sicherheitsanalyse das Sicherheitsrisiko angibt, kann das Verfahren des Weiteren eine Korrekturmaßnahme einleiten.
-
Ein weiterer Aspekt enthält ein Computersystem zum Erkennen von Sicherheitsrisiken in Zusammenhang mit einer Software-Komponente, die in einer Laufzeitumgebung auf Container-Grundlage implementiert werden soll. Das Computersystem kann einen Prozessor eines Container-Schwachstellen-Advisors (Container Vulnerability Advisors, CVA) aufweisen, der konfiguriert wird, um Anweisungen auszuführen, die bei Ausführung in dem Prozessor den CVA veranlassen, einen Auslöser zu empfangen, wobei der Auslöser angibt, dass eine Schicht des Containers auf Sicherheitsrisiken zu prüfen ist. Der Prozessor kann des Weiteren konfiguriert werden, um Anweisungen auszuführen, die eine Prüfschicht des Containers angeben, welche auf Sicherheitsrisiken zu prüfen ist, und gemäß einem Prüfkriterium ermitteln, wann für die Prüfschicht zuvor eine Prüfung auf Sicherheitsrisiken durchgeführt wurde. Wenn die Ermittlung negativ ausfällt, können die Anweisungen den Prozessor veranlassen, eine Sicherheitsanalyse für die Prüfschicht durchzuführen. Wenn die Sicherheitsanalyse ein Sicherheitsrisiko angibt, können die Anweisungen den Prozessor veranlassen, eine Korrekturmaßnahme einzuleiten. Wenn die Sicherheitsanalyse kein Sicherheitsrisiko angibt, können die Anweisungen den Prozessor veranlassen, die Einleitung der Korrekturmaßnahme zu überspringen. Wenn die Ermittlung positiv ausfällt, können die Anweisungen den Prozessor veranlassen, die Durchführung der Sicherheitsanalyse für die Prüfschicht zu überspringen.
-
Bei einem weiteren Aspekt kann ein Computerprogrammprodukt bereitgestellt werden, das ein durch einen Computer lesbares Speichermedium aufweist, auf dem durch einen Computer lesbarer Programmcode enthalten ist, wobei der durch einen Computer lesbare Programmcode konfiguriert wird, um verschiedene hier beschriebene Verfahrensoperationen durchzuführen.
-
Figurenliste
-
Die in der vorliegenden Offenbarung enthaltenen Zeichnungen sind in die Beschreibung eingebettet und bilden einen Bestandteil hiervon. Sie veranschaulichen Beispiel-Ausführungsformen der vorliegenden Offenbarung und erläutern neben der Beschreibung verschiedene Grundsätze der Offenbarung. Die Zeichnungen veranschaulichen lediglich typische Ausführungsformen und bilden keine Beschränkung der Offenbarung.
- 1 ist ein Blockschaubild eines Beispiels für ein auf einen Computer gestütztes System gemäß einigen Ausführungsformen der vorliegenden Offenbarung, das für eines oder mehrere Verfahrenselemente verwendet werden kann.
- 2 ist ein Ablaufplan eines Beispielverfahrens gemäß einigen Ausführungsformen der vorliegenden Offenbarung, das zum Erkennen von Sicherheitsrisiken in Zusammenhang mit einer Software-Komponente verwendet werden kann, die in einer Laufzeitumgebung auf Container-Grundlage implementierbar ist.
- 3 ist ein Blockschaubild eines Beispiels für ein Container-Verwaltungssystem gemäß einigen Ausführungsformen der vorliegenden Offenbarung, das für eine Erkennung und Beseitigung von Sicherheitsschwachstellen der in Containern installierten Anwendungen verwendet werden kann.
-
Obwohl die hier beschriebenen Ausführungsformen für verschiedene Abwandlungen und alternative Formen offen sind, wurden Besonderheiten hiervon in den Zeichnungen beispielhaft gezeigt und werden im Folgenden detailliert beschrieben. Die unten beschriebenen bestimmten Ausführungsformen sind nicht in einem beschränkenden Sinne zu verstehen. Vielmehr sollen alle Abwandlungen, Entsprechungen und Alternativen abgedeckt sein, die unter den gedanklichen Wesensgehalt und Geltungsbereich der Erfindung fallen.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Aspekte der vorliegenden Offenbarung beziehen sich im Allgemeinen auf das Gebiet von digitalen Computersystemen und im Besonderen auf ein Verfahren zum Erkennen von Sicherheitsrisiken in Zusammenhang mit einer Software-Komponente, die in einer Laufzeitumgebung auf Container-Grundlage implementiert werden soll. Obwohl die vorliegende Offenbarung nicht notwendigerweise auf solche Anwendungen beschränkt ist, lassen sich verschiedene Aspekte der Offenbarung besser würdigen, indem die verschiedenen Beispiele in diesem Kontext erörtert werden.
-
Einige Ausführungsformen des Verfahrens können eine Erkennung einer Sicherheitsgefährdung während der Laufzeit ermöglichen, wenn eine Container-Instanz erstellt wird, ohne dass hierfür innerhalb des Containers ein wie auch immer gearteter Agent installiert werden muss. Einige Ausführungsformen des Verfahrens können verhindern, dass der Agent innerhalb des Containers verwendet wird, und können somit eine Überprüfung der Container ermöglichen, ohne dass ihr schlanker Entwurf beeinträchtigt wird und ohne dass mehrere, miteinander konkurrierende Prozesse/Agenten innerhalb eines Containers ausgeführt werden. Entsprechend der erkannten Gefährdung kann eine geeignete Maßnahme ergriffen werden, um den Container (und seine künftigen Ausführungen) zu verwalten, wodurch Sicherheitsprobleme auf ein Mindestmaß verringert werden.
-
Im Gegensatz zu einer herkömmlichen Herangehensweise, bei der Schwachstellenprüfungen auf Grundlage eines manuellen Aufrufs durchgeführt werden, können einige Ausführungsformen des Verfahrens Schwachstellenprüfungen ermöglichen, indem sie einen Publish/Subscribe-Ansatz verwenden, der auf Grundlage von externen, als Auslöser dienenden Ereignissen ausgelöst werden kann.
-
Docker® ist ein von Docker, Inc. bereitgestellter Container-Verwaltungsdienst, um Anwendungen einfach zu entwickeln und sie in Container zu packen, die ohne Weiteres implementiert werden können. Eine Dockerfile-Datei ist ein Textdokument, das Konfigurationsinformationen und Befehle zum Erstellen eines Container-Images enthält. In einem Docker-System sind Docker-Images Nur-Lese-Vorlagen, aus denen heraus Docker-Container gestartet werden können; jedes Docker-Image kann eine Abfolge von Schichten enthalten. Diese Schichten können von allen Containern geteilt werden, die auf ein und demselben System installiert sind. Die Container können eine Instanz eines Container-Images sein. Das Container-Image kann zum Beispiel ein Docker-Image sein. Wenn diese Schichten bereits auf Schwachstellen analysiert wurden, werden sie während einer Implementierung oder einem Start eines neuen Containers aus demselben Image heraus nicht erneut geprüft. Anders ausgedrückt müssen Sicherheitsrisiken, die für mindestens eine Schicht eines bestimmten Containers bereits geprüft wurden, für einen weiteren Container, der eine Instanz desselben Container-Images wie der bestimmte Container ist, nicht erneut geprüft werden. Dies kann die Leistung von Umgebungen auf Container-Grundlage verbessern.
-
Einige Ausführungsformen des Verfahrens können eine rechtzeitige Erkennung von Gefährdungen der in den Containern installierten Anwendungen und eine Behebung der in den Containern entdeckten Sicherheitsgefährdungen ermöglichen. Dies kann besonders vorteilhaft sein, da die Container kurzlebige Elemente sein können und eine herkömmliche, durch einen Zeitplan gesteuerte Durchsuchung vermutlich nicht in der Lage sein dürfte, in derart kurzlebigen Containern Sicherheitsrisiken zu erkennen.
-
Der Begriff „Container“ kann sich auf einen Software-Container beziehen, der ein virtuelles Software-Objekt ist, welches alle Elemente umfasst, die notwendig sind, damit eine Anwendung innerhalb eines Betriebssystems ausgeführt werden kann. Der Container kann zum Beispiel eine Instanz eines Container-Images wie z.B. ein Docker-Image sein. Der Container kann die Abfolge von Schichten des betreffenden Container-Images aufweisen. Sobald das Container-Image startet, können ein oder mehrere Container ausgeführt werden. Container, die aus demselben Image erhalten werden, sind hinsichtlich ihres Anwendungscodes und ihrer Laufzeitabhängigkeiten identisch. Ohne hierauf beschränkt zu sein, enthalten Beispiele von Containern Docker-Container, bei denen es sich um Instanzen von Docker-Images handelt, die unter Verwendung eines „docker run“-Befehls ausgeführt werden können. Die Laufzeitumgebung auf Container-Grundlage kann ein Computersystem sein, das die Verwendung, Ausführung und die Erzeugung der Container ermöglicht.
-
Gemäß einigen Ausführungsformen kann der Auslöser von einer Verwaltungsentität der Laufzeitumgebung auf Container-Grundlage als Reaktion darauf empfangen werden, dass die Verwaltungsentität erkennt, dass ein neuer Container zu implementieren ist. Dies kann eine rechtzeitige Reaktion auf potenzielle Sicherheitsrisiken ermöglichen.
-
Gemäß einigen Ausführungsformen kann das Verfahren ein Erkennen eines in der Schicht vorhandenen Software-Produkts und ein Ermitteln aufweisen, ob eine Prüfung von Sicherheitsrisiken bereits durchgeführt wurde. Diese Prüfung kann auf Grundlage eines Abfragens eines Registers der virtuellen Umgebung (Virtual Environment Registry, VER) erfolgen, wobei Informationen verwendet werden, die das erkannte Software-Produkt identifizieren. Das VER kann eine zentralisierte Quelle von Informationen ermöglichen, die - insbesondere bei vielen Containern - Ressourcen einsparen kann, welche andernfalls notwendig wären, wenn die Informationen auf die Datenbank eines jeden Containers aufgeteilt werden würden.
-
Gemäß einigen Ausführungsformen kann die Sicherheitsanalyse ein Prüfen von mindestens einer Wissensdatenbank aufweisen, die Informationen zu bekannten Sicherheitsschwachstellen eines bestimmten Software-Produkts enthält. Dies kann eine genaue und konsistente Verarbeitung mehrerer Images und Container ermöglichen.
-
Gemäß einigen Ausführungsformen enthält die Laufzeitumgebung auf Container-Grundlage das Docker-System, und der Auslöser beruht auf einem „docker attach“-Ereignis, das durch das Docker-System erzeugt wird. Diese Ausführungsform kann eine nahtlose Integration einiger Ausführungsformen des vorliegenden Verfahrens in bestehende Systeme ermöglichen.
-
Obwohl Aspekte der vorliegenden Offenbarung unter Bezugnahme auf Docker-Container, Dockerfile-Dateien, Docker-Images und andere Befehle auf Docker-Grundlage erörtert werden, sollte klar sein, dass diese Ausführungsformen zum Zwecke der Veranschaulichung und nicht als Beschränkung bereitgestellt werden. Andere Container-Umgebungen weisen ähnliche Befehle und eine ähnliche Funktionalität auf, und Ausführungsformen der vorliegenden Offenbarung können auch in diesen anderen Container-Umgebungen realisiert werden. Zum Beispiel können andere Container-Umgebungen eine Funktionalität ähnlich dem „docker attach“-Ereignis aufweisen, wobei die standardmäßigen Eingabe-, Ausgabe- und/oder Fehlerströme eines Terminals mit einem ausgeführten Container verbunden werden können, was bei Ausführungsformen als Auslöser dienen kann. Die hier offenbarten verschiedenen Verfahren, Systeme und Programmprodukte können gemeinsam mit jedem geeigneten Container (z.B. Containern mit ähnlicher Funktionalität) und/oder Container-System realisiert werden, und die vorliegende Offenbarung sollte nicht auf die offenbarten Ausführungsformen beschränkt werden.
-
Darüber hinaus sollte klar sein, dass die oben erwähnten Vorteile Beispielvorteile sind und nicht als Beschränkung verstanden werden sollten. Ausführungsformen der vorliegenden Offenbarung können alle, einige oder keinen der oben erwähnten Vorteile enthalten und dennoch unter den gedanklichen Wesensgehalt und Geltungsbereich der vorliegenden Offenbarung fallen.
-
1 ist ein Blockschaubild eines auf einen Computer gestützten allgemeinen Beispielsystems 100, das verwendet werden kann, um einige Ausführungsformen eines Verfahrens wie hier dargelegt zu realisieren.
-
Die hier beschriebenen Verfahren können teilweise nicht interaktiv und durch auf einen Computer gestützte Systeme automatisiert werden, wie beispielsweise Server oder eingebettete Systeme. In Beispiel-Ausführungsformen können die hier beschriebenen Verfahren in einem (teilweise) interaktiven System realisiert werden. Diese Verfahren können des Weiteren in einer Software 112, 122 (z.B. der Firmware 122), einer Hardware (Prozessor) 105 oder einer Kombination hiervon realisiert werden. In Beispiel-Ausführungsformen werden die hier beschriebenen Verfahren als ein ausführbares Programm in Software realisiert und durch einen digitalen Spezial- oder Universal-Computer wie z.B. einen Personal Computer, einen Arbeitsplatzrechner, einen Minicomputer oder einen Mainframe Computer ausgeführt. Das allgemeinste System 100 kann somit einen Universal-Computer 101 enthalten.
-
Wie in 1 gezeigt, enthält der Computer 101 in Beispiel-Ausführungsformen in Bezug auf die Hardware-Architektur einen Prozessor 105, einen Arbeitsspeicher (Hauptarbeitsspeicher) 110, der mit einem Arbeitsspeicher-Controller 115 verbunden wird, und eine oder mehrere Eingabe- und/oder Ausgabe(E/A)-Einheiten (oder Peripherieeinheiten) 10, 145, die über einen lokalen Eingabe/Ausgabe-Controller 135 kommunikativ verbunden werden. Bei dem Eingabe/Ausgabe-Controller 135 kann es sich um einen oder mehrere Busse oder andere kabelgebundene oder kabellose Verbindungen nach dem Stand der Technik handeln, ohne jedoch darauf beschränkt zu sein. Der Eingabe/Ausgabe-Controller 135 kann zusätzliche Elemente aufweisen, auf die aus Gründen der Einfachheit verzichtet wurde, wie beispielsweise Controller, Puffer (Caches), Treiber, Repeater und Empfänger, um eine Datenübertragung zu ermöglichen. Des Weiteren kann die lokale Schnittstelle Adress-, Steuerungs- und/oder Datenverbindungen enthalten, um eine geeignete Datenübertragung zwischen den oben erwähnten Komponenten zu ermöglichen. Wie hier beschrieben, können die E/A-Einheiten 10, 145 im Allgemeinen jede allgemeine Verschlüsselungskarte oder Smartcard enthalten, die nach dem Stand der Technik bekannt ist.
-
Der Prozessor 105 ist eine Hardware-Einheit zum Ausführen von Software, insbesondere von Software, die in dem Arbeitsspeicher 110 gespeichert wird. Der Prozessor 105 kann ein speziell hergestellter oder gewerblich erhältlicher Prozessor, eine Zentraleinheit (Central Processing Unit, CPU), ein Hilfsprozessor von mehreren dem Computer 101 zugehörigen Prozessoren, ein Mikroprozessor auf Halbleitergrundlage (in Form eines Mikrochips oder Chipsatzes), ein Makroprozessor oder allgemein jede Einheit oder Mehrzahl von Einheiten (z.B. in einer verteilten Architektur) zum Ausführen von Software-Anweisungen sein.
-
Der Arbeitsspeicher 110 kann ein beliebiges flüchtiges Arbeitsspeicherelement oder Kombinationen von flüchtigen Arbeitsspeicherelementen (z.B. einen Direktzugriffsspeicher (Random Access Memory, RAM) wie beispielsweise einen DRAM, SRAM, SDRAM usw.)) und nicht flüchtigen Arbeitsspeicherelementen (z.B. einen ROM, einen löschbaren, programmierbaren Nur-Lese-Speicher (Erasable Programmable Read-Only Memory, EPROM), einen elektronisch löschbaren, programmierbaren Nur-Lese-Speicher (Electronically Erasable Programmable Read-Only Memory, EEPROM), einen programmierbaren Nur-Lese-Speicher (Programmable Read-Only Memory, PROM) enthalten. Der Arbeitsspeicher 110 kann eine verteilte Architektur aufweisen, bei der verschiedene Komponenten räumlich entfernt voneinander angeordnet sind, wobei der Prozessor 105 jedoch auf sie zugreifen kann.
-
Die Software in dem Arbeitsspeicher 110 kann ein oder mehrere getrennte Programme enthalten, von denen jedes eine geordnete Liste von ausführbaren Anweisungen zum Realisieren von logischen Funktionen aufweist, insbesondere von Funktionen, die in einigen Ausführungsformen enthalten sind. In dem Beispiel aus 1 enthält Software in dem Arbeitsspeicher 110 die Anweisungen 112, z.B. Anweisungen, um Datenbanken wie beispielsweise ein Datenbankverwaltungssystem zu verwalten.
-
Die Software in dem Arbeitsspeicher 110 kann auch ein geeignetes Betriebssystem (Operating System, OS) 111 enthalten. Das OS 111 kann die Ausführung anderer Computerprogramme steuern, z.B. der Software 112, um verschiedene Verfahren wie hier beschrieben zu realisieren.
-
Die hier beschriebenen Verfahren können in Form eines Quellprogramms 112, ausführbaren Programms (Objektcode), Skripts oder jeder anderen Entität vorliegen, die einen Satz von Anweisungen 112 aufweist, welche ausgeführt werden sollen. Beim Verwenden eines Quellprogramms kann das Programm dann über einen Compiler, Assembler, Interpreter oder dergleichen, der innerhalb des Arbeitsspeichers 110 enthalten sein kann, übersetzt werden, um in Verbindung mit dem OS 111 einwandfrei zu funktionieren. Darüber hinaus können die Verfahren als eine objektorientierte Programmiersprache geschrieben werden, die Klassen von Daten und Verfahren aufweist, oder als eine prozedurale Programmiersprache, die Routinen, Teilroutinen und/oder Funktionen aufweist.
-
In verschiedenen Beispiel-Ausführungsformen können eine herkömmliche Tastatur 150 und Maus 155 mit dem Eingabe/Ausgabe-Controller 135 verbunden werden. Andere Ausgabeeinheiten wie z.B. die E/A-Einheiten 145 können Eingabeeinheiten wie beispielsweise einen Drucker, einen Scanner, ein Mikrofon und dergleichen enthalten. Schließlich können die E/A-Einheiten 10, 145 des Weiteren Einheiten enthalten, die sowohl Eingaben als auch Ausgaben übertragen, z.B. eine Netzwerkschnittstellenkarte (Network Interface Card, NIC) oder einen Modulator/Demodulator (zum Zugreifen auf andere Dateien, Einheiten, Systeme oder ein Netzwerk), einen Hochfrequenz(HF-) oder anderweitigen Transceiver, eine Telefonschnittstelle, eine Bridge, einen Router und dergleichen.
-
Bei den E/A-Einheiten 10, 145 kann es sich um jede allgemeine Verschlüsselungskarte oder Smartcard handeln, die nach dem Stand der Technik bekannt ist. Das System 100 kann des Weiteren einen Anzeige-Controller 125 enthalten, der mit einer Anzeige 130 verbunden wird. Bei verschiedenen Beispiel-Ausführungsformen kann das System 100 des Weiteren eine Netzwerkschnittstelle zum Verbinden mit einem Netzwerk 165 enthalten. Das Netzwerk 165 kann ein Netzwerk auf IP-Grundlage zur Datenübertragung zwischen dem Computer 101 und einem beliebigen externen Server, Client und Ähnlichem über eine Breitbandverbindung sein. Das Netzwerk kann Daten zwischen dem Computer 101 und externen Systemen 30 übertragen und empfangen, die enthalten sein können, um einen Teil oder alle der hier dargelegten Verfahrensoperationen durchzuführen. In Beispiel-Ausführungsformen kann das Netzwerk 165 ein verwaltetes IP-Netzwerk sein, das durch einen Diensteanbieter administriert wird. Das Netzwerk 165 kann auf drahtlose Art und Weise realisiert werden, z.B. unter Verwendung von Drahtlosprotokollen und - technologien wie WLAN, WiMAX usw. Das Netzwerk 165 kann auch ein Netzwerk mit Paketvermittlung sein, z.B. ein lokales Netzwerk (Local Area Network, LAN), ein Weitverkehrsnetzwerk (Wide Area Network, WAN), ein Hochgeschwindigkeitsnetzwerk, das Internet-Netzwerk oder eine andere ähnliche Art von Netzwerkumgebung. Das Netzwerk 165 kann ein Fixed-Wireless-Netzwerk, ein drahtloses lokales Netzwerk (LAN), ein drahtloses Weitverkehrsnetzwerk (WAN), ein persönliches Netzwerk (Personal Area Network, PAN), ein virtuelles privates Netzwerk (Virtual Private Network, VPN), ein Intranet oder ein anderes geeignetes Netzwerksystem sein und kann Einrichtungen zum Empfangen und Übertragen von Signalen enthalten.
-
Wenn der Computer 101 ein PC, ein Arbeitsplatzrechner, eine intelligente Einheit oder dergleichen ist, kann die Software in dem Arbeitsspeicher 110 des Weiteren ein Basic Input Output System (BIOS) 122 enthalten. Das BIOS ist ein Satz von wesentlichen Softwareroutinen, der die Hardware beim Hochfahren initialisiert und prüft, das OS 111 startet und die Übertragung von Daten zwischen den Hardware-Einheiten ermöglicht. Das BIOS kann im ROM gespeichert werden, so dass es ausgeführt werden kann, wenn der Computer 101 aktiviert wird.
-
Wenn der Computer 101 in Betrieb ist, wird der Prozessor 105 so konfiguriert, dass er in dem Arbeitsspeicher 110 gespeicherte Software 112 ausführt, um Daten an den und von dem Arbeitsspeicher 110 zu übertragen und allgemein Operationen des Computers 101 gemäß der Software zu steuern. Anweisungen zum vollständigen oder teilweisen Ausführen der hier beschriebenen Verfahren und des OS 111 können durch den Prozessor 105 gelesen werden, wobei sie unter Umständen innerhalb des Prozessors 105 zwischengespeichert und dann ausgeführt werden.
-
Wenn die hier beschriebenen Systeme und Verfahren wie in 1 gezeigt in der Software 112 realisiert werden, kann die Software zum Realisieren der Verfahren in einem beliebigen durch einen Computer lesbaren Medium gespeichert werden, z.B. in einem Speicher 120, um durch oder in Verbindung mit einem beliebigen System oder Verfahren verwendet zu werden, das mit einem Computer in Zusammenhang steht. Der Speicher 120 kann einen Plattenspeicher wie z.B. einen HDD-Speicher aufweisen.
-
2 ist ein Blockschaubild eines Beispiels für ein Container-Verwaltungssystem 200, das für eine Erkennung und Beseitigung von Sicherheitsschwachstellen der in Containern installierten Anwendungen verwendet werden kann.
-
Das Container-Verwaltungssystem 200 kann ein Register der virtuellen Umgebung (VER) 201 aufweisen, das Informationen zu den Containern/virtuellen Maschinen (VMs) 212A, B (zusammengenommen bzw. beispielhaft 212) und Schichten enthält, die in der VM 212 und den Containern 216 verfügbar sind. Das VER 201 enthält Informationen dazu, ob eine Schicht eines der Container bereits verarbeitet und untersucht wurde, um eine Sicherheitsanalyse der Schicht durchzuführen. Das Container-Verwaltungssystem 200 kann des Weiteren ein Register 202 von virtuellen Container-Richtlinien (Virtual Container Policies, VCPs) aufweisen, das Richtlinien enthält, die angewendet werden können, um eine erkannte Gefährdung oder ein Sicherheitsrisiko zu beseitigen. Das Container-Verwaltungssystem 200 kann des Weiteren einen Container-Schwachstellen-Advisor (CVA) 205 wie z.B. das System 100 aufweisen, der Schwachstellen in Zusammenhang mit den Containern erkennt und auf Grundlage des entdeckten Sicherheitsrisikos und der verfügbaren Richtlinien die geeignete Maßnahme ergreift. Das Container-Verwaltungssystem 200 kann des Weiteren ein Repository 207 von Sicherheits-Wissensdatenbanken (Security Knowledge Bases, SKBs) aufweisen, das Informationen zu Gefährdungen und Risiken enthält, die aus mehreren in 2 gezeigten SKBs wie z.B. der Wissensdatenbank (Knowledge Base, KB) IBM Security AppScan® 208 und der KB Common Vulnerabilities and Exposures (CVE®) 209 der MITRE Corporation gesammelt werden.
-
Das Container-Verwaltungssystem 200 kann des Weiteren einen Container-Verwalter 210 aufweisen, der als eine Verwaltungsentität für die Container dienen kann. Der Container-Verwalter 210 wird in 2 als eine von dem CVA 205 getrennte Komponente gezeigt, in einer weiteren Beispiel-Ausführungsform kann der Container-Verwalter 210 jedoch Teil des CVAs 205 sein, und somit lassen sich bestimmte hier beschriebene Operationen und strukturelle Aspekte in Bezug auf den CVA 205 auch als in Zusammenhang mit dem Container-Verwalter 210 stehend auffassen. Der Container-Verwalter 210 kann konfiguriert werden, um über eine Verbindung wie eine Kabelverbindung oder eine Netzwerkverbindung mit dem CVA 205 Daten auszutauschen, wenn der Container-Verwalter 210 und der CVA 205 physisch getrennte Entitäten sind, sowie über einen Systembus oder über Nachrichten oder anderweitige interne Datenübertragungsschemata, wenn sie physisch kombinierte Entitäten sind. Der Container-Verwalter 210 kann konfiguriert werden, um den Betrieb von Laufzeitumgebungen auf Container-Grundlage (VMs) 212 zu überwachen und/oder zu steuern. Die Laufzeitumgebung auf Container-Grundlage 212 kann ein virtualisiertes System aufweisen, um einen Betrieb einer virtualisierten Datenverarbeitungsressource zu ermöglichen, z.B. indem über zugeteilte und/oder diskrete Container 216 und/oder VMs eine Partition von Hardware-Ressourcen (z.B. C1, C2 und C3) verwendet wird.
-
Ein Container-Register 211 des Container-Verwaltungssystems 200 kann zum Beispiel Informationen zu den Laufzeitumgebungen 212 auf Container-Grundlage aufweisen. Wie in 2 gezeigt, können die Umgebungen 212 auf Container-Grundlage die Container 216 aufweisen.
-
Das Container-Verwaltungssystem 200 kann konfiguriert werden, um eine Sicherheitsgefährdung beim Ausführen eines bestimmten Containers 216 (oder ein Sicherheitsrisiko des Containers 216 selbst) zu erkennen und eine geeignete Korrektur anwenden, wie unten beschrieben.
-
In einer (durch das Sechseck angegebenen) Operation 1 kann der Start eines bestimmten Containers 216 oder ein beliebiges anderweitiges konfigurierbares Ereignis z.B. durch den CVA 205 erkannt werden. Eine solche Erkennung kann ein Empfangen eines Auslösers von dem Container-Verwalter 210 durch den CVA 205 aufweisen. Diese Erkennung kann ein Untersuchen des bestimmten Containers 216 z.B. durch den CVA 205 aufrufen. Die Erkennung kann zum Beispiel mit einem Ereignis-Empfangsprogramm realisiert werden, das bei einer Docker-Engine registriert wird und in der Lage ist, einen reaktiven „docker attach“-Befehl für einen gestarteten Container 216 auszuführen.
-
In einer Operation 2 können die Produktinformationen zu dem bestimmten Container durch den CVA 205 abgerufen werden, wobei dies über den Container-Verwalter 210 erfolgen kann. Eine oder mehrere Schichten 216a des Containers 216 können durch den CVA 205 untersucht werden, um die Produktinformationen zu Produkten, die innerhalb der Schicht verwendet werden, zu sammeln oder zu verifizieren. Die Produktinformationen können zum Beispiel Informationen zu Produkten wie z.B. Versionsnummern, Datumsangaben zum Release oder zu ausführbaren Dateien und dergleichen bereitstellen, die in den Schichten 216a des Containers 216 vorhanden sind und/oder ausgeführt werden. Für die eine oder die mehreren Container-Schichten 216a des bestimmten Containers 216 können auch weitere Informationen zu der bestimmten Container-Schicht 216a aus dem VER 201 abgerufen werden, um anschließend verarbeitet zu werden.
-
Die Container-Schichten 216a können zum Beispiel Schicht für Schicht wie folgt verarbeitet werden. Wenn eine aktuelle Container-Schicht 216a des bestimmten Containers 216 vor einem konfigurierbaren Zeitraum oder gemäß einem vordefinierten Kriterium untersucht wurde (z.B., um Sicherheitsrisiken der Schicht zu ermitteln), kann diese Schicht 216a übersprungen werden, und eine nächste Container-Schicht 216a kann verarbeitet werden. Wenn eine Container-Schicht 216a zuvor nicht untersucht wurde, können andere Informationen wie z.B. Produktbezeichner aus der Container-Schicht 216a extrahiert und in dem VER 201 gespeichert werden. In einer Beispielsituation, in der Docker-Container verwendet werden, kann dies realisiert werden, indem eine aktuelle Liste von Software-Identifikationstags nach ISO 19770-2 bzw. SWID-Tags (z.B. unter Verwendung eines Befehls „cp -R *.swidtag“) abgerufen und in einem privaten Speicher (z.B. „/common/<container-id>/...“) gespeichert wird.
-
Für jedes identifizierte (z.B. aus einem XML-Feld des SWID-Tags geparste) Produkt lässt sich in einer Operation 3 auf Grundlage eines Bezeichners ermitteln, ob ein Sicherheitsrisiko oder ein CVE (Common Vulnerabilities and Exposures, Allgemeine Schwachstellen und Auffälligkeiten) für den in dem VER 201 gespeicherten Produktbezeichner gemeldet wurde.
-
Für jedes identifizierte Produkt kann in einer Operation 4 auf Grundlage des Bezeichners wie z.B. des Software-Komponentenbezeichners ermittelt werden, ob für das identifizierte Produkt in den SKBs 207 ein CVE gemeldet wurde.
-
Wenn eine Gefährdung erkannt (z.B. ein CVE gemeldet) wird, kann in einer Operation 5 eine geeignete Korrekturmaßnahme, die durchzuführen ist und sich auf die Gefährdung bezieht, aus dem VCP-Register 202 abgerufen werden, z.B. können die Richtlinien, die dem erkannten Sicherheitsrisiko zugehörig sind, aus dem VCP-Register 202 gelesen werden. Diese Richtlinien oder Maßnahmen können durchgeführt werden, um das erkannte Sicherheitsrisiko zu beseitigen. Zum Beispiel kann das System wie beispielsweise der CVA 205 als Korrekturmaßnahme den ausgeführten Container 216 (den bestimmten Container) stoppen und/oder in Quarantäne stellen, verhindern, dass aus demselben ursprünglichen einleitenden Element (z.B. einer Dockerfile-Datei) des bestimmten Containers 216 neue Container generiert werden, eine Maßnahme auslösen, um das einleitende Ursprungselement (z.B. eine Dockerfile-Datei) neu zu erstellen und/oder zu patchen, und die Container 216, die aus dem einleitenden Element hervorgegangen sind, neu starten usw. Wenn eine Container-Schicht 216a erfolgreich untersucht wird, kann eine Aktualisierung der zugehörigen Informationen für diese Schicht 216a in dem VER 201 durchgeführt werden. Eine Dockerfile-Datei kann verwendet werden, um Container-Images zu erstellen, die dann die Grundlage der ausgeführten Container 216 werden. Obwohl eine Dockerfile-Datei ein Beispiel für ein einleitendes Element ist, können auch andere Arten eines einleitenden Elements mit ähnlichen Fähigkeiten (d.h. Assemblieren von Container-Images) verwendet werden (z.B. binäre oder nicht textuelle Elemente).
-
3 ist ein Ablaufplan eines Beispielprozesses 300 zum Erkennen von Sicherheitsrisiken in Zusammenhang mit einer Software-Komponente in einer Laufzeitumgebung auf Container-Grundlage.
-
In einer Operation 301 kann z.B. durch den Container-Verwalter 210 (der den CVA 205 enthalten kann) ein Auslöser empfangen werden, wie weiter oben beschrieben wird. Der Auslöser kann angeben, dass ein bestimmter Container 216 oder eine bestimmte Schicht 216a innerhalb des Containers auf Sicherheitsrisiken geprüft werden muss. Wie oben beschrieben, kann der Container 216 zum Beispiel eine Instanz eines Container-Images wie z.B. eines Docker-Images sein. Sobald das Container-Image startet, können ein oder mehrere der Container 216 ausgeführt werden. Die Container 216, die aus demselben Image erhalten werden, sind hinsichtlich ihres Anwendungscodes und ihrer Laufzeitabhängigkeiten identisch.
-
In Operation 303 kann ein Satz der Schichten 216a des Containers 216 identifiziert werden. Dies kann zum Beispiel durchgeführt werden, indem z.B. der Container-Verwalter 210 eine Datenbank wie beispielsweise das VER 201 abfragt, die Informationen zu den Containern 216 der Laufzeitumgebung 212 auf Container-Grundlage enthält.
-
Wenn in einer Operation 305 eine Prüfung auf Sicherheitsrisiken z.B. durch den Container-Verwalter 210 für mindestens eine Schicht 216a des identifizierten Satzes von Schichten bereits durchgeführt wurde (305: JA), kann eine Sicherheitsanalyse dieser Schicht in Operation 307 übersprungen werden. Diese Ermittlung bezüglich der „bereits erfolgten Durchführung“ kann ein oder mehrere Prüfkriterien enthalten. Zum Beispiel können die Prüfkriterien Zeitinformationen wie eine Zeitspanne (z.B. wurde die Prüfung innerhalb des letzten Monats durchgeführt, oder wurde die Prüfung irgendwann einmal in der Vergangenheit durchgeführt) oder Ereignisinformationen verwenden (z.B. wurde die Prüfung auf Grundlage einer ausdrücklichen Benutzer- oder Administratoranforderung durchgeführt). Wenn dies nicht der Fall ist (305: NEIN), kann die Sicherheitsanalyse in einer Operation 308 z. B. durch den Container-Verwalter 210 durchgeführt werden. Die Anfrage-Operation 305 kann zum Beispiel auf Grundlage einer vordefinierten Zeitspanne (z.B. die letzte Woche beginnend mit dem Zeitpunkt, an dem die Operation 305 ausgeführt wird) oder gemäß einem anderen vordefinierten Untersuchungskriterium durchgeführt werden, indem eine Datenbank wie z.B. das VER 301 abgefragt wird, die Informationen zu jeder Schicht 216a und zu anderen Produkten der Container 216 enthält. Diese Informationen können enthalten, ob die Schicht 216a während der vordefinierten Zeitspanne oder gemäß anderen Untersuchungskriterien untersucht wurde. Ein Überspringen der zuvor verarbeiteten Schichten 216a kann Verarbeitungsressourcen einsparen, die andernfalls benötigt würden, um diese Schichten 216a zu verarbeiten.
-
In einer Operation 309 können auf Grundlage von Ergebnissen der Sicherheitsanalyse, die für die mindestens eine Schicht 216a durchgeführt wurde, Sicherheitsrisiken erkannt werden. Die Sicherheitsanalyse kann zum Beispiel für jedes identifizierte Produkt der gerade geprüften Schicht aufweisen: Ermitteln auf Grundlage der Produktkennung des identifizierten Produkts, ob ein Sicherheitsrisiko- oder ein Container-Schwachstellen-Ereignis für die Produktkennung in einer gegebenen Datenbank wie z.B. den Sicherheits-KBs 207 gemeldet wurde.
-
In einer Operation 310 können z.B. durch den CVA 205 oder den Container-Verwalter 210 Korrekturmaßnahmen zur Beseitigung der erkannten Sicherheitsrisiken eingeleitet werden. Die Einleitung der Korrekturmaßnahmen kann mindestens eines aus einem Bereitstellen einer Angabe, dass ein Sicherheitsrisiko- oder ein Container-Schwachstellen-Ereignis erkannt wurde, einem Einleiten einer Routine, die das Risiko oder die Schwachstelle in dem VCP-Register 202 lokalisiert aufweisen oder leitet eine Anwendung einer Richtlinie ein, die dem Risiko oder der Schwachstelle zugehörig ist. In einem weiteren Beispiel können die Operationen 301 bis 310 für ein Container-Image anstatt für einen Container durchgeführt werden. Die zu ergreifenden Korrekturmaßnahmen können in dem VCP-Register 202 enthalten sein, wie weiter oben beschrieben. Obwohl die Korrekturmaßnahmen durch den CVA 205 oder den Container-Verwalter 210 eingeleitet werden können, können verschiedene Elemente der Korrekturmaßnahmen durch andere Elemente entweder innerhalb der Laufzeitumgebungen 212 auf Container-Grundlage oder außerhalb hiervon ausgeführt und/oder auf diese angewendet werden (z.B. Elemente, mit denen die darin enthaltenen virtuellen Maschinen, Container oder Schichten erzeugt werden).
-
Das vorliegende Verfahren kann auch auf Container-Images angewendet werden. In einem Beispiel wird ein Verfahren zum Erkennen von Sicherheitsrisiken in Zusammenhang mit einer Software-Komponente bereitgestellt, die in einer Laufzeitumgebung auf Container-Grundlage implementiert werden soll. Das Verfahren kann aufweisen: Empfangen eines Auslösers, wobei der Auslöser angibt, dass ein bestimmtes Container-Image auf Sicherheitsrisiken geprüft werden muss; Identifizieren eines Satzes von Schichten, aus denen sich das Container-Image zusammensetzt; Ermitteln, ob für mindestens eine Schicht des identifizierten Satzes von Schichten bereits eine Prüfung durchgeführt wurde, und wenn dies der Fall ist, Überspringen einer Sicherheitsanalyse dieser Schicht und andernfalls Durchführen der Sicherheitsanalyse; und Erkennen von Sicherheitsrisiken auf Grundlage von Ergebnissen der Sicherheitsanalyse, die für die mindestens eine Schicht durchgeführt wurde.
-
Wie hier ausführlicher erörtert, soll denkbar sein, dass einige oder alle der Operationen von einigen der Ausführungsformen von hier beschriebenen Verfahren in alternativen Reihenfolgen durchgeführt oder auch überhaupt nicht durchgeführt werden; darüber hinaus können mehrere Operationen gleichzeitig oder als ein diesem innewohnender Bestandteil eines größeren Prozesses stattfinden.
-
Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt handeln. Das Computerprogrammprodukt kann ein durch einen Computer lesbares Speichermedium (oder -medien) mit darauf durch einen Computer lesbaren Programmanweisungen enthalten, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
-
Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch eine Anweisungsausführungseinheit enthalten und speichern kann. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums gehören die Folgenden: eine tragbare Computerdiskette, eine Festplatte, ein RAM, ein ROM, ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer CD-ROM, eine DVD (Digital Versatile Disc), ein Speicher-Stick, eine Diskette, eine mechanisch kodierte Einheit wie zum Beispiel Lochkarten oder erhabene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. durch ein Lichtwellenleiterkabel geleitete Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
-
Hierin beschriebene, durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetzwerk und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenleiter, eine drahtlose Übertragung, Router, Firewalls, Switches, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
-
Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Operationen der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (Local Area Network, LAN) oder ein Weitverkehrsnetzwerk (Wide Area Network, WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Diensteanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, im Feld programmierbare Gatter-Anordnungen (FPGA) oder programmierbare Logikanordnungen (PLA, Programmable Logic Arrays) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
-
Aspekte der vorliegenden Erfindung sind hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaubildern mittels durch einen Computer lesbare Programmanweisungen ausgeführt werden können.
-
Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken des Ablaufplans und/oder des Blockschaubilds festgelegten Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, so dass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, welche Aspekte der/des in dem Block bzw. den Blöcken der Ablaufpläne und/oder Blockschaubilder angegebenen Funktion/Schritts umsetzen.
-
Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen durch einen Computer umgesetzten Prozess zu erzeugen, so dass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder Blockschaubilder festgelegten Funktionen/Schritte umsetzen.
-
Die Ablaufpläne und die Blockschaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen 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 Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Ausführungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
-
Die hier verwendete Begrifflichkeit dient lediglich zur Beschreibung bestimmter Ausführungsformen und ist nicht als Beschränkung der verschiedenen Ausführungsformen gedacht. Im hier verwendeten Sinne sollen die Singularformen „ein/e/r,“ und „der/die/das“ auch die Pluralformen enthalten, sofern der Kontext dies nicht eindeutig anders vorgibt. Des Weiteren wird darauf verwiesen, dass die Begriffe „enthält“ und/oder „enthaltend“ in dieser Beschreibung das Vorhandensein der genannten Merkmale, Ganzzahlen, Schritte, Operationen, Elemente und/oder Komponenten angeben, ohne jedoch das Vorhandensein oder die Hinzufügung von einem/einer oder mehreren anderen Merkmalen, Ganzzahlen, Schritten, Operationen, Elementen, Komponenten und/oder Gruppen derselben auszuschließen. In der obigen ausführlichen Beschreibung von Beispiel-Ausführungsformen der verschiedenen Ausführungsformen wurde auf die beigefügten Zeichnungen verwiesen (bei denen gleichlautende Bezugsziffern für identische Elemente stehen), die einen Teil hiervon bilden und in denen zum Zwecke der Veranschaulichung spezifische Beispiel-Ausführungsformen gezeigt werden, in denen die verschiedenen Ausführungsformen realisiert werden können. Diese Ausführungsformen wurden in ausreichender Detailgenauigkeit beschrieben, um dem Fachmann die Realisierung der Ausführungsformen zu ermöglichen, wobei jedoch andere Ausführungsformen verwendet und logische, mechanische, elektrische und andere Änderungen vorgenommen werden können, ohne vom Geltungsbereich der verschiedenen Ausführungsformen abzuweichen. In der obigen Beschreibung wurden zahlreiche spezifische Einzelheiten dargelegt, um ein gründliches Verständnis der verschiedenen Ausführungsformen bereitzustellen. Allerdings können die beschriebenen Ausführungsformen auch ohne diese spezifischen Einzelheiten realisiert werden. In anderen Fällen wurden bekannte Schaltungen, Strukturen und Methoden nicht im Detail gezeigt, um die Ausführungsformen nicht unverständlich zu machen.
-
Verschiedene Vorkommen des Worts „Ausführungsform“, die innerhalb dieser Beschreibung auftreten, beziehen sich nicht notwendigerweise auf dieselbe Ausführungsform, können dies jedoch tun. Alle hier veranschaulichten oder beschriebenen Daten und Datenstrukturen sind lediglich Beispiele, und in anderen Ausführungsformen können andere Mengen von Daten, Arten von Daten, Felder, Zahlen und Arten von Fehlern, Feldnamen, Zahlen und Arten von Zeilen, Datensätze, Einträge oder Organisationsformen von Daten verwendet werden. Zusätzlich können alle Daten mit Logik kombiniert werden, so dass eine separate Datenstruktur unter Umständen nicht notwendig ist. Die vorangegangene ausführliche Beschreibung ist somit nicht in einem beschränkenden Sinne zu verstehen.
-
Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Offenbarung wurden zum Zwecke der Veranschaulichung vorgelegt und sind nicht als vollständig oder auf die offenbarten Ausführungsformen beschränkt zu verstehen. Der Fachmann weiß, dass zahlreiche Änderungen und Abwandlungen möglich sind, ohne von Umfang und Geist der beschriebenen Ausführungsformen abzuweichen. Die hier verwendete Begrifflichkeit wurde gewählt, um die Grundsätze der Ausführungsformen, die praktische Anwendung oder technische Verbesserung gegenüber marktgängigen Technologien bestmöglich zu erläutern bzw. anderen Fachleuten das Verständnis der hier offenbarten Ausführungsformen zu ermöglichen.
-
Obwohl die vorliegende Erfindung mit Blick auf spezifische Ausführungsformen beschrieben wurde, ist davon auszugehen, dass Änderungen und Abwandlungen hiervon für den Fachmann offensichtlich sein werden. Aus diesem Grund sind die folgenden Ansprüche so auszulegen, dass sie alle derartigen Änderungen und Abwandlungen umfassen, die innerhalb des tatsächlichen gedanklichen Wesensgehalts und Geltungsbereich der Erfindung liegen.