Experience Embedded

Professionelle Schulungen, Beratung und Projektunterstützung

Security-Tests im Autopilot-Modus

Autoren: Michael Eisenbarth, Markus Nebel, comlet Verteilte Systeme GmbH, Prof. Dr. Manuel Duque-Anton, Hochschule Kaiserslautern

Beitrag - Embedded Software Engineering Kongress 2017

 

Die wachsende Vernetzung von Systemen und die zunehmende Anzahl kommunikationsfähiger Produkte verschärfen das Risiko durch Cyber-Angriffe. Andererseits benötigen verteilte Systeme vermehrt technische Möglichkeiten und Schnittstellen zur Durchführung von Software-Updates und Fernwartungskonzepten. Da Hersteller die Fernwartung ihrer Geräte und Maschinen meist über das Internet und ggfs. auch durch Dritte durchführen, z.B. um Firmware-Updates oder Einstellungen zur Leistungsverbesserung vorzunehmen, benötigt man eine technisch realisierte und etablierte Vertrauensbeziehung zwischen den Unternehmen oder Partnern. Typischerweise werden zum Nachweis der Systemsicherheit und sicheren Kommunikation Penetrationstests verwendet.

Zur Überprüfung der IT-Sicherheit kommen meist noch manuelle Penetrationstests zur Anwendung, die den kontrollierten Versuch darstellen, von "außen" in ein bestimmtes System bzw. Netzwerk einzudringen. Manuelle Tests sind allerdings recht zeit- und kostenintensiv. Eine Möglichkeit, frühzeitig und effektiv Security-Schwachstellen zu finden, besteht in der Einbindung automatisierbarer Penetrationstests in den Entwicklungsprozess. Somit können die Testergebnisse direkt in die nächsten Entwicklungsschritte miteinfließen und Schwachstellen beherrschbar beseitigt werden.

Der erfolgreiche Penetrationstest - Die Motivation des Angreifers

Für einen erfolgreichen Penetrationstest ist es in erster Linie wichtig, dass sich der Tester in die Rolle eines potentiellen Angreifers versetzen kann. Dafür ist ein Bewusstsein für die Motivation eines Angreifers hilfreich, weil der Tester dann die Entschlossenheit besser zuordnen kann, mit der ein Angreifer vorgehen könnte. Abhängig von der Zielgruppe des zu testenden Produkts können dann entsprechend mehr oder weniger aufwändige Tests durchgeführt werden.

Für den Tester ist es notwendig, die grundlegenden Techniken und Vorgehensweisen eines Angreifers zu kennen. Die Motivation eines Angreifers entscheidet maßgeblich über die Schlagkraft eines Angriffs. Sie kann auch Aufschluss darüber geben, mit welchen Ressourcen seitens des Angreifers zu rechnen ist. Angreifer sind z.B. nicht nur an der Kontrolle eines einzelnen Heim-Routers oder einer einzelnen Heimautomatisierungsanlage und deren Komponenten interessiert, sondern vielmehr an der Rechenleistung und Internet-Bandbreite, über die diese verfügen. Die Bandbreite kann etwa zum Aufbau oder Ausbau eines Botnets verwenden werden, welches im Anschluss auf dem Schwarzmarkt gewinnbringend weiteren Kriminellen verfügbar gemacht werden kann.

Auf der anderen Seite ist selbst Spionage oder Sabotage zwischen verschiedenen Staaten, seltener auch innerhalb des eigenen Staates, denkbar. Hier liegen theoretisch unbegrenzte finanzielle Mittel, technische Möglichkeiten und geheimdienstliche Informationen vor. Diese Angriffe sind hoch spezialisiert und verschonen oft uninteressante Systeme, um nicht aufzufallen. Ein bekanntes Beispiel hierfür ist der Stuxnet-Virus.

Der Penetrationstest - Stand der Praxis

Ein Penetrationstest ist ein Verfahren zur Optimierung der Sicherheitsmechanismen eines IT-Systems. Bei der Durchführung eines Penetrationstests versetzt sich ein Tester in die Rolle eines böswilligen Angreifers und versucht, mit dessen Möglichkeiten und Techniken in das zu testende System einzudringen oder potentielle Schwachstellen aufzudecken. Aufgrund der stetig fortschreitenden technologischen Entwicklung verändern sich auch die technischen Möglichkeiten und Perspektiven eines potentiellen Angreifers. Deshalb müssen auch die Sicherheitsvorkehrungen in der Informationssicherheit permanent an die neuen Bedingungen angepasst werden. Das hat zur Folge, dass ein durchgeführter Penetrationstest nur als Momentaufnahme verstanden werden kann. Selbst bei kleineren Veränderungen des getesteten Systems ist somit eine erneute Durchführung eines Penetrationstests notwendig. Außerdem kann ein Penetrationstest in vielen Fällen aus wirtschaftlichen Gründen nicht alle Kombinationen von möglichen Angriffsvektoren abdecken.

Bei einem Blackbox-Penetrationstest verfügt der Tester zunächst über keinerlei Informationen, die den internen Aufbau des zu testenden Systems beschreiben. Der Tester muss sich durch verschiedene Techniken alle notwendigen Informationen selbst beschaffen.

Im Gegensatz zum Blackbox-Penetrationstest ist der Whitebox-Tester bereits in der Vorbereitungsphase mit dem Aufbau und sämtlichen Zusammenhängen im System vertraut. Er hat Zugang zu allen Informationen wie Quellcode, Netzwerk-Adressen, Dokumentationen und Architektur- und Ablaufdiagrammen, und kann Gespräche mit den Entwicklern führen.

Somit bieten sich insbesondere kontinuierliche und wiederverwendbare Whitebox-Tests während der Entwicklung zur Erfüllung der oben genannten Anforderungen an.

Der automatisierbare Security-Test - notwendige Infrastruktur

Um Security-Tests allerdings effizient automatisieren zu können, ist eine grundlegende Infrastruktur inkl. eines Software-Frameworks notwendig. Wir verwenden hierzu ein eigens entwickeltes Software-Framework zur Implementierung möglichst generischer System-Tests. Dabei stellt das Framework alle erforderlichen Rahmenbedingungen und Werkzeuge zur Verfügung. Der Rahmen besteht dabei aus einer vorgegebenen Klassenhierarchie, bei der ein konkreter Test die vorgegebenen Interfaces implementieren muss. Generische Hilfsmodule, wie ein "TestExecuter" und "Logging-Module" zur Protokollierung der Testabläufe, können dank dieser Interfaces mit jedem konkreten Test arbeiten. Hinsichtlich Security wurden hierbei einige Tests spezifiziert, die grundlegende Sicherheitsmechanismen überprüfen bzw. sicherstellen, dass diese korrekt implementiert und konfiguriert wurden. Die Tests sind dabei in drei Kategorien aufgeteilt.

  • Der erste Teil enthält Tests, die sicherstellen, dass unautorisierte Zugriffe auf das Gerät erschwert werden. Analysen des Systems durch einen Angreifer werden dadurch ebenfalls erschwert.
  • Der zweite Teil befasst sich mit Tests, die Sicherheitsvorkehrungen überprüfen, die einem eingedrungenen Angreifer die System-Analyse erschweren.
  • Der dritte Teil enthält Tests, die Sicherheitsvorkehrungen überprüfen, welche die System-Analyse von außen etwa durch Kryptographie erschweren.

 

Ziele Teil 1: Überprüfung der aktuellen Systemhärtung (Schutz vor underlaubtem Eindringen) auf folgende Eigenschaften:

  • Schließen (ggf. in Produktivumgebung) ungenutzter Netzwerk-Ports nach außen
  • Deaktivierung von ungenutzten USB-Ports zur Kontrolle verwendeter Peripheriegeräte
  • Keine überflüssigen Schnittstellen: Vor allem Entwickler- und Debug-Schnittstellen sollten in der Release-Version entfernt werden.
  • Nicht unterbrechbarer Bootloader
  • Aktive Schutzmechanismen gegen Stack-Manipulation

 

Ziele Teil 2: Post Exploitation (Analyse nach dem Eindringen erschweren)

  • Deaktivierung von Prozessverfolgung im Kernel zur Erschwerung von Debugging und Reverse Engineering
  • Kernel-Konfiguration nicht im laufenden System einsehbar
  • Auslieferung eines möglichst reduzierten Systems
  • Minimierung der Log-Ausgaben in der Auslieferungsversion
  • Kompilierung der Auslieferungsversion ohne Symboltabelle

 

Ziele Teil 3: Blackbox (Analyse von außen erschweren)

  • Verwendung aktueller kryptographischer Verfahren
  • Verwendung von TLS für Netzwerkverkehr mit Überprüfung der Serverzertifikate
  • Verwendung von asymmetrische Verschlüsselung von Software-Updates

 

Fazit

Für die oben genannten Ziele wurden mit Hilfe des erwähnten Test-Frameworks die entsprechenden Security-Tests implementiert, die in jeder Testphase zusammen mit den klassischen Funktionstests automatisiert überprüft werden. Auf Grundlage der beim Penetrationstest gewonnenen Erkenntnisse können somit im Anschluss direkt Verbesserungen im Programmcode oder in der Konfiguration des getesteten Systems vorgenommen werden, ohne schwerwiegende Re-Designs in Kauf nehmen zu müssen, die entstehen würden, wenn man erst am Ende der Entwicklungsphase das System auf potentielle Schwachstellen testen würde. Zusätzlich kann die Qualitätssicherung des Entwicklungsprozesses um weitere Prüfungen ergänzt werden, die zukünftig die Umsetzung der entwickelten Lösungen verifizieren.

Dennoch sei erwähnt, dass diese automatisierten Security-Tests natürlich nicht den weiterhin durchzuführenden klassischen manuellen oder kreativen Penetrationstest ersetzen sollen. Die praktische Durchführung unserer automatisierten Whitebox-Penetrationstests hat uns gezeigt, dass die wichtigste Komponente eines professionellen Penetrationstests immer noch der menschliche Sachverstand des Testers ist. Es ist darüber hinaus nur eingeschränkt möglich, allgemein verwendbare Werkzeuge für ein Penetrationstesting-Labor für Embedded-Systems zusammenzustellen, da jedes Embedded-System-Produkt individuelle Hard- und Software einsetzt, die in der Regel stark von üblichen Standards herkömmlicher Computer abweichen.

 

Beitrag als PDF downloaden


Unsere Trainings & Coachings

Wollen Sie sich auf den aktuellen Stand der Technik bringen?

Dann informieren Sie sich hier zu Schulungen/ Seminaren/ Trainings/ Workshops und individuellen Coachings von MircoConsult zum Thema Qualität, Safety & Security.


Training & Coaching zu den weiteren Themen unseren Portfolios finden Sie hier.


Qualität, Safety & Security - Fachwissen

Wertvolles Fachwissen zum Thema Qualität, Safety & Security steht hier für Sie zum kostenfreien Download bereit.

Zu den Fachinformationen

 
Fachwissen zu weiteren Themen unseren Portfolios finden Sie hier.