Eingebettete Systeme tragen zu einem Großteil der modernen Technologie bei. Vom adaptiven Geschwindigkeitsregler in Ihrem Auto bis hin zum Wifi in Ihrem intelligenten Kühlschrank. Mit der Zunahme von Cyberangriffen ist die Sicherung dieser Systeme von entscheidender Bedeutung geworden.
Eingebettete Geräte sind ein ideales Ziel für Hacker, denn ein erfolgreicher Angriff kann Eindringlingen Zugang zu den von ihnen erzeugten, empfangenen und verarbeiteten Daten verschaffen. Dies kann oft schwerwiegende Folgen für das größere System haben, das von dem eingebetteten Gerät betrieben wird. So kann z. B. die Abschaltung eines eingebetteten Geräts in einem F-15-Kampfjet, das Daten von verschiedenen Kameras und Sensoren sammelt, die Verteidigung des Jets erheblich beeinträchtigen.
In diesem Artikel finden Sie alles, was Sie für die Entwicklung sicherer eingebetteter Systeme benötigen. Hier finden Sie, was enthalten ist:
- Was ist eingebettete Sicherheit?
- Herausforderungen bei der Implementierung eingebetteter Sicherheit.
- Was macht ein eingebettetes System "sicher"?
- Warum End-to-End-Sicherheit in einem eingebetteten Ökosystem wichtig ist.
- Einige eingebettete Sicherheitstools.
- Was fehlt den typischen eingebetteten Lösungen?
- Die Zukunft der eingebetteten Sicherheit.
Was ist eingebettete Sicherheit?
Embedded Security bietet die Tools, Prozesse und Best Practices zur Sicherung der Software und Hardware von Embedded-Geräten.
Da die Hardware-Module eingebetteter Systeme klein sind, unterliegen sie verschiedenen Beschränkungen in Bezug auf den Speicher und die Speicherung. Die Integration von Sicherheitsmaßnahmen in diese Systeme ist daher eine große Herausforderung für das Design. Doch so schwierig dies auch sein mag, es ist ein Gebot der Stunde.
Viele der von eingebetteten Geräten betriebenen Gadgets und Maschinen sind auch mit dem Internet verbunden. Das bedeutet, dass Hacker unbefugten Zugang zu ihnen erhalten und bösartigen Code ausführen können.
Ein Hack in einem eingebetteten Gerät kann sich oft auf andere angeschlossene Komponenten ausbreiten und/oder das gesamte System lahmlegen. Nehmen wir zum Beispiel an, dass ein Angreifer die Kontrolle über ein eingebettetes Gerät erlangt, mit dem der Fahrer sein Auto auf Autopilot schalten kann. Der Hacker kann das Auto dann von der Straße weg oder in den Verkehr hinein steuern und so möglicherweise großen Schaden anrichten.
Kritische Herausforderungen für die Sicherheit eingebetteter Systeme
Die Sicherheit eingebetteter Systeme erhält nicht die Aufmerksamkeit, die sie verdient. Hier sind ein paar Gründe dafür:
- Mangelndes Bewusstsein der Entwickler:
Die Entwickler kennen in der Regel nicht die besten Verfahren für die Entwicklung sicherer eingebetteter Geräte. Das liegt zum einen an Punkt 2 und zum anderen daran, dass eingebettete Anwendungen weitaus komplizierter sind als herkömmliche Softwareanwendungen. Es kann eine Herausforderung sein, die Auswirkungen auf die Sicherheit zu verstehen und sicheren, leistungsfähigen Code für alle Anwendungsfälle zu schreiben, und das auch noch in einer eingeschränkten Mikrocomputerumgebung.
- Mangelnde Standardisierung:
Es fehlt an Cybersicherheitsstandards für eingebettete Systeme. Auch wenn die Autoindustrie langsam versucht, dies zu ändern. In den letzten Jahren haben Forscher eine ganze Reihe von Publikationen veröffentlicht, die sich mit der Cybersicherheit von intelligenten Fahrzeugen befassen. Einige davon sind SAE J3061, "Cybersecurity Guidebook for Cyber-Physical Vehicle Systems", und UNECE WP.29 Regulation on Cyber Security and Software Update Processes.
- Verwendung von Komponenten Dritter
Viele eingebettete Geräte benötigen Hardware- und Softwarekomponenten von Drittanbietern, um zu funktionieren. Oft werden diese Komponenten verwendet, ohne dass sie auf Sicherheitsmängel und Schwachstellen getestet wurden.
- Veraltete Software
Eine veraltete Firmware ist in der Regel mit Fehlern und potenziell ausnutzbaren Schwachstellen behaftet. Auch wenn es besonders schwierig sein kann, die Firmware eines kleinen, eingebetteten Geräts regelmäßig zu aktualisieren, kann dies nicht ignoriert werden.
- Direkte Internetverbindung
Viele eingebettete Systeme und Geräte sind direkt mit dem Internet verbunden. Dies bedeutet, dass sie nicht über den Schutz von Unternehmensfirewalls verfügen, die Netzwerkangriffe erkennen und verhindern können. Da die Ressourcen knapp sind, ist es sehr schwierig, in einer derart eingeschränkten Umgebung strenge Sicherheitsstandards zu implementieren.
- Angriff in großem Maßstab
Eingebettete Geräte werden in der Regel in großem Maßstab hergestellt. Das bedeutet, dass eine einzige Schwachstelle oder ein Fehler Millionen von Geräten betreffen kann, manchmal sogar weltweit. Die Eindämmung der Auswirkungen eines Angriffs auf eingebettete Systeme kann daher eine große Herausforderung darstellen.
Was macht ein eingebettetes System sicher?
In den folgenden Abschnitten werden wir einige Software- und Hardware-Merkmale sicherer eingebetteter Systeme betrachten.
Bewährte Hardware-Sicherheitspraktiken
Ein sicheres eingebettetes System hat:
- Eine vertrauenswürdige Ausführungsumgebung
Eine vertrauenswürdige Ausführungsumgebung (TEE) ermöglicht die Isolierung sicherheitskritischer Vorgänge auf Hardwareebene. So kann beispielsweise die Benutzerauthentifizierung in einem separaten Bereich ausgeführt werden, was einen besseren Schutz sensibler Informationen ermöglicht.
- Angemessen partitionierte Hardwareressourcen
Verschiedene Hardwarekomponenten wie Prozessor(en), Cache, Speicher, Netzwerkschnittstellen usw. sollten angemessen getrennt sein und ihre Funktionen so unabhängig wie möglich ausführen. Dadurch wird verhindert, dass sich ein Fehler in einer Komponente auf andere Komponenten ausbreitet.
- Schutz des ausführbaren Speicherplatzes (ESP)
Der Schutz des ausführbaren Speichers (Executable Space Protection, ESP) besteht darin, bestimmte Speicherbereiche als nicht ausführbar zu markieren. Wenn jemand versucht, Code innerhalb dieser markierten Bereiche auszuführen, wird eine Ausnahme ausgelöst.
Bewährte Software-Sicherheitspraktiken
Bei der Entwicklung von eingebetteter Software sollten die folgenden bewährten Verfahren beachtet werden:
- Sicheres Booten verwenden:
Wenn ein eingebettetes Gerät hochfährt, wird das Boot-Image mithilfe kryptografischer Algorithmen überprüft. Dadurch wird sichergestellt, dass die Boot-Sequenz korrekt ist und dass die Software (Firmware und andere relevante Daten) nicht manipuliert wurde.
- Verwendung eines Mikrokernel-Betriebssystems
Ein Mikrokernel-Betriebssystem ist viel kleiner als ein herkömmliches Betriebssystem und enthält nur eine Teilmenge seiner Funktionen. Der Kernelbereich ist winzig, und viele Benutzerdienste (wie die Dateisystemverwaltung usw.) werden in einem separaten Bereich, dem so genannten Benutzerbereich , gehalten . Da im Kernelbereich weniger Code und Operationen ausgeführt werden, ist die Angriffsfläche deutlich geringer.
- ordnungsgemäß verpackte Softwareanwendungen verwenden
Jede Softwareanwendung sollte in sich geschlossen und ordnungsgemäß verpackt sein. Wenn eine Anwendung z. B. eine Abhängigkeit von einem Drittanbieter erfordert, sollte diese nicht global auf dem Betriebssystem installiert werden. Vielmehr sollte sie Teil des Anwendungspakets/Containers sein.
Alle von externen und/oder nicht vertrauenswürdigen Quellen empfangenen Daten sollten ordnungsgemäß bereinigt und validiert werden, bevor sie an kritische Software- und/oder Hardwarekomponenten weitergeleitet werden.
Wenn eine Anwendung Daten von einer externen API-Integration abruft und darauf basierend eine Einstellung umschaltet, sollten die empfangenen Daten streng validiert werden, bevor die Einstellung geändert wird.
- Schutz der Daten im Ruhezustand:
Die gesamte sensible Software, Daten, Konfigurationsdateien, sichere Schlüssel und Passwörter usw., die auf einem eingebetteten Gerät gespeichert sind, sollten geschützt werden. Dies geschieht in der Regel durch Verschlüsselung. Die privaten Schlüssel, die zur Verschlüsselung der Daten verwendet werden, müssen in spezieller, eigens dafür entwickelter Sicherheitshardware gespeichert werden.
Die Sicherheitspyramide - End-to-End-Sicherheit für eingebettete Systeme
Vorbei sind die Zeiten, in denen Sicherheit ein nachträglicher Gedanke war. Eine nicht-funktionale Anforderung. Heute muss die Sicherheit inhärent sein. Die Geräte müssen von vornherein sicher sein. Zu diesem Zweck ist es unerlässlich, in einer eingebetteten Umgebung durchgängige Sicherheitsanforderungen zu implementieren. Das bedeutet: Denken Sie bei der Auswahl der Hardware, bei der Definition der Systemarchitektur, beim Entwurf des Systems und natürlich beim Schreiben des Codes an die Sicherheit.
Beginnen Sie bei der Hardware
Wie robust Ihre Software auch sein mag, wenn Ihre Hardware nicht ausreichend geschützt ist, sind Sie anfällig für Angriffe. On-Chip-Sicherheitstechniken können einen sicheren Start und eine effiziente Verwaltung von kryptografischen Funktionen und Geheimnissen ermöglichen. Einige Hardwarekomponenten ermöglichen es dem Betriebssystem auch, verschiedene Sicherheitsfunktionen wie die Erkennung von Systemanomalien bei Systemaufrufen, die Verschlüsselung des Dateisystems und Zugriffskontrollrichtlinien anzubieten.
Ein fehlertolerantes System
Es gibt zahlreiche Gründe, ein fehlertolerantes System zu entwickeln, und die Vermeidung von Angriffen durch differenzielle Fehleranalyse ist nur einer davon. Bei einem solchen Angriff kann ein potenzieller Hacker mithilfe von Fehlerinjektionstechniken versuchen, Fehler in einem eingebetteten Gerät zu erzeugen. Es gibt jedoch mehrere Möglichkeiten, solche Fehler zu erkennen und sich dagegen zu schützen:
- Replizieren Sie die kritischsten Vorgänge, so dass die verschiedenen Ausgaben jederzeit verglichen werden können, um das Auftreten eines Fehlers zu erkennen.
- Standardmäßig fehlschlagen: Bei der Behandlung mehrerer Bedingungen (innerhalb einer If-Bedingung oder eines Switch-Blocks) immer im Standardfall fehlschlagen, d.h. wenn nichts anderes passt.
- Führen Sie ein zufälliges Verhalten ein: Durch das Hinzufügen kleiner, zufälliger Verzögerungen vor wichtigen Operationen wird sichergestellt, dass deren Zeitablauf niemals vorhersehbar ist. Dies ist für die Erkennung von Eindringlingen von entscheidender Bedeutung, da es für Hacker sehr schwierig ist, Betriebsmuster zu ermitteln und Zeitangriffe durchzuführen.
- Schutzabdeckungen: Die Hersteller sollten die wichtigsten Komponenten mit Abdeckungen versehen, um sie vor Manipulationen von außen zu schützen.
- Erkennen Sie abnormale Schwankungen: Erkennen Sie abnormale Schwankungen bei Spannung, Strom oder anderen Werten und lösen Sie entsprechende Ausnahmen aus.
Sichern Sie Ihre Anwendung... und Ihr Betriebssystem
Der Aufbau des Schutzes Ihres Geräts auf der Anwendungsebene beinhaltet:
- Auswahl geprüfter, seriöser Software- und Hardwarekomponenten von Drittanbietern, die regelmäßig aktualisiert werden können.
- Weiterbildung von Entwicklern in den besten Praktiken für die Sicherheit eingebetteter Systeme.
- Verwenden Sie ein Mikrokernel-Betriebssystem, um sicherzustellen, dass nur eine minimale Anzahl von Operationen im Kernelbereich ausgeführt wird.
- Überwachung und Schutz vor Software-Angriffen, einschließlich Viren, Trojanern und Malware.
- Entfernen Sie alle unnötigen Dienste. Ihre Firmware sollte nur das enthalten, was Sie unbedingt benötigen. Wenn Sie z. B. keine Dateien übertragen oder Pakete aufzeichnen müssen, können Sie Dateiübertragungsprotokolle und Netzwerkpakete wie Telnet deaktivieren.
- Verwenden Sie sichere Protokolle wie SFTP, IPsec, SSL, TLS, SSH und DNSSEC.
Tools für die Sicherheit eingebetteter Systeme
Im Folgenden finden Sie eine nicht erschöpfende Liste von Tools, die bei der Sicherung eingebetteter Systeme helfen können:
- Bus-Blaster: Eine Hochgeschwindigkeits-Debugging-Plattform, die mit Hardware-Debug-Ports interagieren kann.
- Salae: Dekodieren Sie verschiedene Protokolle wie Seriell, SPI und I2C usw. Sie können von der Community erstellte Protokollanalysatoren verwenden oder Ihre eigenen erstellen.
- Hydrabus: Open-Source-Multi-Tool-Hardware, die für Debugging, Hacking und/oder Penetrationstests von eingebetteter Hardware verwendet werden kann.
- Ausnutzen: Ein Open-Source-Framework zum Testen und Ausnutzen der Sicherheit des Internets der Dinge (IoT).
- FACT (The Firmware Analysis and Comparison Tool): Framework zur Automatisierung der Sicherheitsanalyse von Firmware.
- Routersploit: Ein Open-Source-Exploit-Framework für eingebettete Geräte.
- Firmadyne: Open-Source-System zur Emulation und dynamischen Analyse von Linux-basierter Embedded-Firmware.
Woran mangelt es bei modernen eingebetteten Sicherheitslösungen?
Obwohl verschiedene Lösungen zum Debuggen, Ausnutzen und Testen von eingebetteten Lösungen zur Verfügung stehen, werden sie nicht ohne weiteres eingesetzt. Ein großer Schwerpunkt liegt nach wie vor auf der physischen Absicherung des Geräts, aber es wird nicht genug für den Schutz vor softwarebezogenen Angriffen getan. Selbst die einfachsten und leicht vermeidbaren Sicherheitsrisiken und Schwachstellen von Anwendungen sind bei modernen eingebetteten Geräten immer noch weit verbreitet.
Ein wichtiger Grund dafür ist das mangelnde Bewusstsein der Entwickler für eingebettete Sicherheit. Laut einer von Tripwire durchgeführten Umfrage glauben 68 % der IT-Fachleute, dass ihre Mitarbeiter nicht ausreichend über potenzielle Sicherheitslücken informiert sind.
Die Entwickler wissen nicht, welche Sicherheitsprotokolle zu wählen sind, welche Frameworks zu vermeiden sind, welche Hardwarekomponenten abgetrennt werden müssen, wie mit sensiblen Daten umzugehen ist und welcher Verschlüsselungsalgorithmus der sicherste ist. Dieser allgemeine Mangel an Wissen und die Missachtung bewährter Verfahren machen Anwendungen, die auf eingebetteten Geräten laufen, anfällig für Kompromisse.
Die Zukunft der eingebetteten Sicherheit
Auf dem Markt für eingebettete Sicherheit wird viel gearbeitet. Experten gehen davon aus, dass die durchschnittliche jährliche Wachstumsrate (CAGR) des Marktes im Zeitraum von 2021 bis 2026 einen Wert von 5,5 % erreichen kann . Da immer mehr IoT-Geräte auf den Markt kommen, ist zu erwarten, dass sich neue eingebettete Sicherheitsstandards etablieren werden.
Die zunehmende Verbreitung von tragbaren medizinischen Geräten wird auch die Nachfrage nach zuverlässigen eingebetteten Sicherheitslösungen erhöhen. Damit die Geräte sensible medizinische Daten enthalten und verarbeiten können, müssen sie bestimmte Sicherheitschecklisten erfüllen, und wir hoffen, dass Anbieter und Ingenieure sich deshalb stärker auf die Sicherheit konzentrieren werden.
In Zukunft werden wir vielleicht auch Lösungen haben, die eine Fernsicht, -überwachung und -steuerung der wichtigsten Software- und Hardwarekomponenten in eingebetteten Geräten ermöglichen. Dies wird die Welt der Sicherheit eingebetteter Systeme grundlegend verändern.
Digitale Signaturen, die Verschlüsselung von Daten, das Hinzufügen von Firewalls, die Implementierung von Zugriffskontrollen und die Zufallsgenerierung von Operationen reichen letztendlich nur bis zu einem gewissen Punkt. Um wirklich sichere Geräte zu bauen, müssen die Entwickler darin geschult werden, sicheren Code zu schreiben. Die Identifizierung potenzieller Sicherheitsrisiken und deren Abschwächung in der Phase des Anwendungsentwurfs trägt wesentlich dazu bei, dass Systeme von sich aus sicher sind.
Wie Secure Code Warrior helfen kann
Das Vorzeigeprodukt vonSecure Code Warrior- learning platform - bietet zahlreiche interaktive Herausforderungen, courses, und Bewertungen, die Entwicklern helfen können, sicheren C/C++-Code zu schreiben. Der Inhalt der Plattform ist rahmenspezifisch und sehr ansprechend. Unsere C/C++:Embed-Codieraufgaben wurden sowohl von MISRA C, AUTOSAR C++ (MISRA C++) als auch von IEC inspiriert.
Entwickler können sich auf eine persönliche Lernreise begeben, auf der sie C/C++-spezifische Schwachstellen erkennen und - was noch wichtiger ist - lernen, diese Fehler zu beheben. In diesem Prozess können die Entwickler ihre Fortschritte verfolgen, um ihre Schwachstellen zu erkennen, und sogar einen freundschaftlichen Programmierwettbewerb mit Gleichgesinnten austragen. Erfahren Sie mehr darüber, wie wir die Automobil- und Transportbranche mit unseren Lösungen unterstützen.
Möchten Sie herausfinden, wie interaktiv und einbettungsorientiert unsere Challenges sind? Probieren Sie noch heute einige C/C++:Embed-Herausforderungen auf learning platform aus!