Cybersicherheit für Geräte und Embedded-Systeme ist derzeit eines der wichtigsten Themen. Wie anfällig die Gerätelandschaft des Internet of Things ist, verdeutlichte das Mirai-Botnetz im vergangenen Jahr. Es bildete aus kompromittierten IoT-Geräten ein Botnetz, über das beispielsweise DDoS-Attacken (Distributed Denial of Service) durchgeführt wurden. Bei Mirai handelt es sich um eine ausführbare Linux-Datei des Formats ELF (Executable and Linking Format), die es vor allem auf DVRs (Digital Video Recorder), Router, Web-IP-Kameras, Linux-Server und andere Geräte abgesehen hat, auf denen Busybox läuft. Dieses Programm kommt bei Embedded-Geräten im IoT-Umfeld häufig zum Einsatz.
Die Isolierung kritischer Systeme vom Internet ist in Zeiten der Industrie 4.0 keine adäquate Maßnahme mehr. Das verdeutlichte etwa eine Kaspersky-Analyse. Zwei von fünf im industriellen Umfeld eingesetzte Computer waren dieser zufolge im zweiten Halbjahr 2016 Cyberattacken ausgesetzt. Die größten Infektionsherde sind Anbindungen zum Internet, Wechseldatenträger und E-Mails mit infizierten Anhängen und eingebetteten Skripten. Neue Methoden der Cybersicherheit sind also gefragt.
Ein Ansatz wäre, ein per Design sicheres System, das es einem Schadprogramm nicht erlaubt, eine nichtautorisierte Funktion auszuführen; ein System also, in dem Angreifer keinen Schaden anrichten können, auch wenn es eine Sicherheitslücke gibt. Ein derart geschütztes System kann nur auf Betriebssystemebene realisiert werden. KasperskyOS ist ein solches Betriebssystem, das von Grund auf nach Security-Prinzipien entwickelt wurde.
Whitelisting und Beschreibung der Gefahren
Sicherheitsanforderungen können nur dann exakt spezifiziert werden, wenn man ein Betriebssystem einsetzt, das für bestimmte Zwecke auf einer mehr oder weniger genau festgelegten Hardware betrieben wird, und auf dem nur bestimmte Software unter genau definierten Betriebsszenarien läuft. In diesem Fall lässt sich auch ein Bedrohungsmodell erstellen.
Ein Whitelisting-Ansatz erlaubt das Aufstellen klarer Richtlinien und verschafft die Gewissheit, dass nichts vergessen wurde. In einem klassischen Betriebssystem werden hingegen oftmals etwas übersehen. Dies liegt daran, dass viele Software-Module weit über die Begrenzungen hinausgehen, denen sie eigentlich unterliegen müssten. Der Vorteil beim Whitelisting-Ansatz: Sollte etwas unter den Tisch gefallen sein, kann dies schlimmstenfalls dazu führen, dass ein Programm nicht läuft – ein Schaden am Gesamtsystem kann dadurch nicht hervorgerufen werden. Diese strengen Vorgaben erhöhen nicht nur die Sicherheit, sondern erleichtern auch Entwicklern das Leben, denn hier werden IT-Sicherheitsrichtlinien und Anwendungsprogrammierung voneinander getrennt. Die beiden Bestandteile einer sicheren Software-Anwendung können also separat entwickelt werden.
Der Ansatz von KasperskyOS basiert auf einem modularen System vertrauenswürdiger Komponenten, die sehr klein sind und standardisierte Schnittstellen besitzen. Die Architektur eines so aufgebauten sicheren Systems ermöglicht die Portierung einer nur relativ kleinen Menge an Software-Code auf unterschiedliche Hardware-Plattformen. Nur dieser Code muss dort verifiziert werden, während die Top-Level-Module so gehalten sind, dass sie einfach wiederverwendet werden können.
Modulare Cybersicherheit durch Microkernel
Ein erster Schritt in Richtung eines derart modularen Betriebssystems ist eine Architektur, die auf einem eigenen Microkernel basiert. Er allein bestimmt Interaktion und Datenaustausch und hat die volle Zugriffskontrolle. Doch auch damit lassen sich noch keine Eigenschaften abbilden, die das System zur Unterstützung bestimmter Sicherheitsrichtlinien braucht. KasperskyOS trennt daher zugriffsrelevante Entscheidungen auf Basis der Sicherheitsrichtlinien von jenen, die durch die Zugriffskontrolle im Microkernel vorgegeben werden. Die Implementierung von Sicherheitsrichtlinien basierend auf Compliance-Vorgaben wird mit einer eigenen Komponente realisiert, dem Security-Server. Das bekannteste Beispiel für eine solche Architektur ist Flux Advanced Security Kernel (FLASK).
KasperskyOS bildet die FLASK-Architektur nicht in Gänze ab, nutzt aber deren Konzepte für mehr Sicherheit und Flexibilität bei der Nutzung in Zielsystemen. Bei FLASK werden zum Beispiel die Schnittstellen und Beschreibungen für zwei Hauptkomponenten vorgegeben. Erstens den Security-Server, der die sicherheitsrelevanten Entscheidungen trifft, und zweitens den Object Manager, der dann für den eigentlichen Zugriff auf Basis dieser Entscheidungen sorgt. Dadurch können vertrauenswürdige Entscheidungen korrekt berechnet und angewendet werden. Komplexere Regeln, die mit Hilfe einer eigenen Konfigurationssprache formuliert werden, bündeln dabei einzelne Basis-Sicherheitsrichtlinien. Umgesetzt werden die Regeln in einer Komponente, die sich zwischen dem Security-Server und dem Microkernel befindet. Die Berechnung der sicherheitsrelevanten Entscheidungen kann dadurch die gewünschte Funktionslogik abbilden.
Das ermöglicht die Konfiguration umfassender Parameter für Sicherheitsrichtlinien und die Anwendung von Zugriffsregeln bei allen Operationen in allen Systemkomponenten. Mit Hilfe dieser Konfiguration entsteht vertrauenswürdiger Code, der die Anwendungen mit dem Sicherheitsmodell des Systems verknüpft; denn es ist genau festgelegt, welche Operationen ein Programm unter Anwendung welcher Sicherheitsrichtlinien ausführen darf. Dabei ist es wichtig festzuhalten, dass im Code selbst diese Informationen nicht hinterlegt sind, es wird nur darauf verwiesen.
Eine solche Architektur bedarf aber nicht nur der Entwicklung des Microkernel, sondern eines voll funktionalen Betriebssystems, das Security-Domains trennt und Informationsprozessumgebungen abschottet. Zudem muss es in allen Domains die Einhaltung der Sicherheitsrichtlinien kontrollieren. Wichtig ist dabei, dass sowohl der Microkernel, als auch die Infrastruktur des darauf basierenden Betriebssystems und die Sicherheitsrichtlinien vom selben Anbieter kommen. Eine Nutzung von Komponenten von Drittanbietern würde, unabhängig von deren Qualität, immer Einschränkungen nach sich ziehen.
Das größte Manko von Betriebssystemen, die von Grund auf neu entwickelt werden, bleibt allerdings die mangelnde Unterstützung bestehender Anwendungen. Ist das Betriebssystem kompatibel mit gängigen Programmierschnittstellen, kann dieses Manko ausgeglichen werden. Auch mit einer Virtualisierung lässt sich dieser Nachteil beheben. Kann in der Umgebung des sicheren Betriebssystems ein Hypervisor für die Virtualisierung eines gängigen Betriebssystems gestartet werden, dann können dessen Anwendungen auch in der sicheren Umgebung ausgeführt werden. KasperskyOS in Verbindung mit Kaspersky Secure Hypervisor bietet genau diese Möglichkeit.