Wenn gute Mikrowellen schlecht werden: Warum die Sicherheit eingebetteter Systeme der nächste große Kampf für Entwickler ist

Veröffentlicht Aug 30, 2021
von Matias Madou, Ph.D.
FALLSTUDIE

Wenn gute Mikrowellen schlecht werden: Warum die Sicherheit eingebetteter Systeme der nächste große Kampf für Entwickler ist

Veröffentlicht Aug 30, 2021
von Matias Madou, Ph.D.
Ressource anzeigen
Ressource anzeigen

In der Popkultur gibt es viele Anspielungen auf schurkische KI und Roboter sowie auf Geräte, die sich gegen ihre menschlichen Herren wenden. Es ist stark von Science-Fiction-Spaß und Fantasie durchdrungen, aber mit der zunehmenden Verbreitung von IoT und vernetzten Geräten in unseren Haushalten sollte auch das Gespräch über Cybersecurity und Sicherheit geführt werden. Software ist allgegenwärtig, und man vergisst leicht, wie sehr wir uns auf Codezeilen verlassen, um all die cleveren Dinge zu tun, die uns so viel Innovation und Komfort bieten. Ähnlich wie bei webbasierter Software, APIs und mobilen Geräten kann anfälliger Code in eingebetteten Systemen ausgenutzt werden, wenn er von einem Angreifer in freier Wildbahn entdeckt wird. 

Es ist zwar unwahrscheinlich, dass eine Armee von Mikrowellen kommt, um die Menschheit zu versklaven (obwohl der Tesla-Bot etwas beunruhigend ist), aber bösartige Cyberangriffe sind dennoch möglich. Einige unserer Autos, Flugzeuge und medizinischen Geräte sind auf komplizierte eingebettete Systemcodes angewiesen, um wichtige Aufgaben zu erfüllen, und die Aussicht, dass diese Objekte kompromittiert werden könnten, ist nicht nur alarmierend, sondern potenziell lebensbedrohlich.

Wie bei jeder anderen Software auch, gehören die Entwickler zu den ersten, die den Code gleich zu Beginn der Erstellungsphase anfassen. Und wie bei jeder anderen Software kann dies der Nährboden für heimtückische, allgemeine Schwachstellen sein, die unentdeckt bleiben könnten, bevor das Produkt in Betrieb geht. 

Entwickler sind keine Sicherheitsexperten, und kein Unternehmen sollte von ihnen erwarten, dass sie diese Rolle übernehmen, aber sie können mit einem weitaus stärkeren Arsenal ausgestattet werden, um die Art von Bedrohungen zu bekämpfen, die für sie relevant sind. Eingebettete Systeme, die in der Regel in C und C++ geschrieben sind, werden immer häufiger zum Einsatz kommen, da sich unsere technischen Anforderungen ständig weiterentwickeln, und eine spezielle Sicherheitsschulung der Entwickler für die Tools in dieser Umgebung ist unerlässlich. 

Explodierende Fritteusen, bösartige Fahrzeuge... Sind wir leichte Beute?

Es gibt zwar einige Standards und Vorschriften für die sichere Entwicklung, um uns zu schützen, aber wir müssen weitaus präzisere und sinnvollere Schritte in Richtung aller Arten von Softwaresicherheit unternehmen. Es mag weit hergeholt erscheinen, an ein Problem zu denken, das dadurch verursacht wird, dass sich jemand in eine Fritteuse hackt, aber es ist in Form eines Angriffs zur Remote-Code-Ausführung (der es dem Bedrohungsakteur ermöglicht, die Temperatur auf ein gefährliches Niveau zu erhöhen) bereits geschehen, ebenso wie Schwachstellen, die zu Fahrzeugübernahmen führen.

Vor allem Fahrzeuge sind besonders komplex, da sie mehrere eingebettete Systeme an Bord haben, die sich jeweils um Mikrofunktionen kümmern - von automatischen Scheibenwischern bis hin zu Motor- und Bremsfunktionen. In Verbindung mit einer ständig wachsenden Anzahl von Kommunikationstechnologien wie WLAN, Bluetooth und GPS stellt das vernetzte Fahrzeug eine komplexe digitale Infrastruktur dar, die zahlreichen Angriffsmöglichkeiten ausgesetzt ist. Und bei 76,3 Millionen vernetzten Fahrzeugen, die bis 2023 weltweit auf den Straßen unterwegs sein sollen, stellt dies einen Monolithen an Verteidigungsgrundlagen dar, die für echte Sicherheit gelegt werden müssen.

MISRA ist eine der wichtigsten Organisationen im Kampf gegen die Bedrohungen eingebetteter Systeme. Sie hat Richtlinien entwickelt, die die Codesicherheit, die Sicherheit, die Portabilität und die Zuverlässigkeit im Zusammenhang mit eingebetteten Systemen erleichtern. Diese Richtlinien sind der Nordstern unter den Standards, die jedes Unternehmen bei seinen Projekten für eingebettete Systeme anstreben muss.

Um jedoch Code zu erstellen und auszuführen, der diesem Goldstandard entspricht, sind Ingenieure für eingebettete Systeme erforderlich, die mit den Werkzeugen vertraut sind - ganz zu schweigen vom Sicherheitsbewusstsein -. 

Warum ist die Weiterbildung im Bereich der Sicherheit eingebetteter Systeme so spezifisch?

Die Programmiersprachen C und C++ sind nach heutigen Maßstäben betagt, werden aber nach wie vor häufig verwendet. Sie bilden den funktionierenden Kern der Codebasis für eingebettete Systeme, und Embedded C/C++ genießt ein glänzendes, modernes Leben als Teil der Welt der vernetzten Geräte.

Obwohl diese Sprachen recht alte Wurzeln haben - und ein ähnliches Verhalten gegenüber Schwachstellen in Bezug auf häufige Probleme wie Injektionsfehler und Pufferüberläufe aufweisen - müssen Entwickler, um wirklich erfolgreich Sicherheitslücken in eingebetteten Systemen zu entschärfen, praktische Erfahrungen mit Code sammeln, der die Umgebungen nachahmt, in denen sie arbeiten. Eine generische C-Schulung in allgemeinen Sicherheitspraktiken ist einfach nicht so wirkungsvoll und einprägsam, wie wenn zusätzliche Zeit und Sorgfalt in die Arbeit in einem Embedded C-Kontext investiert wird.

Da ein modernes Fahrzeug zwischen einem Dutzend und mehr als hundert eingebettete Systeme enthält, ist es unerlässlich, dass die Entwickler genau wissen, worauf sie achten müssen und wie sie die Probleme beheben können, und zwar direkt in der IDE.

Wie sieht ein Fehler in der Geschäftslogik in eingebettetem C/C++ aus? Werfen Sie einen Blick darauf und sehen Sie, ob Sie ihn wie ein Profi erkennen und beheben können.

Der Schutz eingebetteter Systeme von Grund auf liegt in der Verantwortung aller

Der Status quo in vielen Unternehmen ist, dass die Entwicklungsgeschwindigkeit die Sicherheit übertrumpft, zumindest wenn es um die Verantwortung der Entwickler geht. Sie werden selten nach ihrer Fähigkeit beurteilt, sicheren Code zu produzieren, aber die schnelle Entwicklung toller Funktionen ist der goldene Standard. Die Nachfrage nach Software wird nur noch steigen, aber diese Kultur hat uns auf einen aussichtslosen Kampf gegen Schwachstellen und die daraus resultierenden Cyberangriffe eingestellt. 

Wenn Entwickler nicht geschult sind, ist das nicht ihre Schuld, und es ist eine Lücke, die jemand im AppSec-Team füllen helfen muss, indem er die richtigen, zugänglichen (ganz zu schweigen von bewertbaren) Weiterbildungsprogramme für die gesamte Entwicklergemeinschaft empfiehlt. Gleich zu Beginn eines Softwareentwicklungsprojekts muss das Thema Sicherheit ganz oben auf der Agenda stehen, und jeder - vor allem die Entwickler - muss das bekommen, was er braucht, um seine Rolle zu spielen. 

Praktische Erfahrungen mit Sicherheitsproblemen bei eingebetteten Systemen

Pufferüberläufe, Injektionsfehler und Fehler in der Geschäftslogik sind häufige Fallstricke bei der Entwicklung eingebetteter Systeme. Wenn sie tief in einem Labyrinth von Mikrocontrollern in einem einzigen Fahrzeug oder Gerät verborgen sind, kann dies aus der Sicherheitsperspektive eine Katastrophe bedeuten.

Pufferüberlauf ist besonders häufig, und wenn Sie einen tiefen Einblick in die Kompromittierung der Fritteuse, über die wir zuvor gesprochen haben, erhalten möchten (und die Remotecodeausführung ermöglicht), lesen Sie diesen Bericht über CVE-2020-28592.

Jetzt ist es an der Zeit, sich mit einer Pufferüberlaufschwachstelle in echtem eingebettetem C/C++-Code auseinanderzusetzen. Spielen Sie diese Herausforderung, um zu sehen, ob Sie die schlechten Codierungsmuster, die zu diesem heimtückischen Fehler führen, lokalisieren, identifizieren und beheben können:

Pufferüberlauf-Historie erstellen.



Wie haben Sie abgeschnitten? Besuchen Sie www.securecodewarrior.com für präzise und effektive Schulungen zur Sicherheit eingebetteter Systeme.

Ressource anzeigen
Ressource anzeigen

Autor

Matias Madou, Ph.D.

Matias ist ein Forscher und Entwickler mit mehr als 15 Jahren praktischer Erfahrung im Bereich der Softwaresicherheit. Er hat Lösungen für Unternehmen wie Fortify Software und sein eigenes Unternehmen Sensei Security entwickelt. Im Laufe seiner Karriere hat Matias mehrere Forschungsprojekte zur Anwendungssicherheit geleitet, die zu kommerziellen Produkten geführt haben, und kann auf über 10 Patente verweisen. Wenn er nicht am Schreibtisch sitzt, ist Matias als Ausbilder für fortgeschrittene Anwendungssicherheitstrainings courses tätig und hält regelmäßig Vorträge auf globalen Konferenzen wie RSA Conference, Black Hat, DefCon, BSIMM, OWASP AppSec und BruCon.

Matias hat einen Doktortitel in Computertechnik von der Universität Gent, wo er die Sicherheit von Anwendungen durch Programmverschleierung untersuchte, um die innere Funktionsweise einer Anwendung zu verbergen.

Sie wollen mehr?

Tauchen Sie ein in unsere neuesten Erkenntnisse über sichere Kodierung im Blog.

Unsere umfangreiche Ressourcenbibliothek zielt darauf ab, die menschliche Herangehensweise an eine sichere Weiterbildung im Bereich der Programmierung zu stärken.

Blog ansehen
Sie wollen mehr?

Holen Sie sich die neuesten Forschungsergebnisse zur entwicklergesteuerten Sicherheit

Unsere umfangreiche Ressourcenbibliothek ist voll von hilfreichen Ressourcen, von Whitepapers bis hin zu Webinaren, die Ihnen den Einstieg in die entwicklungsorientierte sichere Programmierung erleichtern. Erforschen Sie sie jetzt.

Ressourcendrehscheibe

Wenn gute Mikrowellen schlecht werden: Warum die Sicherheit eingebetteter Systeme der nächste große Kampf für Entwickler ist

Veröffentlicht Aug 30, 2021
Von Matias Madou, Ph.D.

In der Popkultur gibt es viele Anspielungen auf schurkische KI und Roboter sowie auf Geräte, die sich gegen ihre menschlichen Herren wenden. Es ist stark von Science-Fiction-Spaß und Fantasie durchdrungen, aber mit der zunehmenden Verbreitung von IoT und vernetzten Geräten in unseren Haushalten sollte auch das Gespräch über Cybersecurity und Sicherheit geführt werden. Software ist allgegenwärtig, und man vergisst leicht, wie sehr wir uns auf Codezeilen verlassen, um all die cleveren Dinge zu tun, die uns so viel Innovation und Komfort bieten. Ähnlich wie bei webbasierter Software, APIs und mobilen Geräten kann anfälliger Code in eingebetteten Systemen ausgenutzt werden, wenn er von einem Angreifer in freier Wildbahn entdeckt wird. 

Es ist zwar unwahrscheinlich, dass eine Armee von Mikrowellen kommt, um die Menschheit zu versklaven (obwohl der Tesla-Bot etwas beunruhigend ist), aber bösartige Cyberangriffe sind dennoch möglich. Einige unserer Autos, Flugzeuge und medizinischen Geräte sind auf komplizierte eingebettete Systemcodes angewiesen, um wichtige Aufgaben zu erfüllen, und die Aussicht, dass diese Objekte kompromittiert werden könnten, ist nicht nur alarmierend, sondern potenziell lebensbedrohlich.

Wie bei jeder anderen Software auch, gehören die Entwickler zu den ersten, die den Code gleich zu Beginn der Erstellungsphase anfassen. Und wie bei jeder anderen Software kann dies der Nährboden für heimtückische, allgemeine Schwachstellen sein, die unentdeckt bleiben könnten, bevor das Produkt in Betrieb geht. 

Entwickler sind keine Sicherheitsexperten, und kein Unternehmen sollte von ihnen erwarten, dass sie diese Rolle übernehmen, aber sie können mit einem weitaus stärkeren Arsenal ausgestattet werden, um die Art von Bedrohungen zu bekämpfen, die für sie relevant sind. Eingebettete Systeme, die in der Regel in C und C++ geschrieben sind, werden immer häufiger zum Einsatz kommen, da sich unsere technischen Anforderungen ständig weiterentwickeln, und eine spezielle Sicherheitsschulung der Entwickler für die Tools in dieser Umgebung ist unerlässlich. 

Explodierende Fritteusen, bösartige Fahrzeuge... Sind wir leichte Beute?

Es gibt zwar einige Standards und Vorschriften für die sichere Entwicklung, um uns zu schützen, aber wir müssen weitaus präzisere und sinnvollere Schritte in Richtung aller Arten von Softwaresicherheit unternehmen. Es mag weit hergeholt erscheinen, an ein Problem zu denken, das dadurch verursacht wird, dass sich jemand in eine Fritteuse hackt, aber es ist in Form eines Angriffs zur Remote-Code-Ausführung (der es dem Bedrohungsakteur ermöglicht, die Temperatur auf ein gefährliches Niveau zu erhöhen) bereits geschehen, ebenso wie Schwachstellen, die zu Fahrzeugübernahmen führen.

Vor allem Fahrzeuge sind besonders komplex, da sie mehrere eingebettete Systeme an Bord haben, die sich jeweils um Mikrofunktionen kümmern - von automatischen Scheibenwischern bis hin zu Motor- und Bremsfunktionen. In Verbindung mit einer ständig wachsenden Anzahl von Kommunikationstechnologien wie WLAN, Bluetooth und GPS stellt das vernetzte Fahrzeug eine komplexe digitale Infrastruktur dar, die zahlreichen Angriffsmöglichkeiten ausgesetzt ist. Und bei 76,3 Millionen vernetzten Fahrzeugen, die bis 2023 weltweit auf den Straßen unterwegs sein sollen, stellt dies einen Monolithen an Verteidigungsgrundlagen dar, die für echte Sicherheit gelegt werden müssen.

MISRA ist eine der wichtigsten Organisationen im Kampf gegen die Bedrohungen eingebetteter Systeme. Sie hat Richtlinien entwickelt, die die Codesicherheit, die Sicherheit, die Portabilität und die Zuverlässigkeit im Zusammenhang mit eingebetteten Systemen erleichtern. Diese Richtlinien sind der Nordstern unter den Standards, die jedes Unternehmen bei seinen Projekten für eingebettete Systeme anstreben muss.

Um jedoch Code zu erstellen und auszuführen, der diesem Goldstandard entspricht, sind Ingenieure für eingebettete Systeme erforderlich, die mit den Werkzeugen vertraut sind - ganz zu schweigen vom Sicherheitsbewusstsein -. 

Warum ist die Weiterbildung im Bereich der Sicherheit eingebetteter Systeme so spezifisch?

Die Programmiersprachen C und C++ sind nach heutigen Maßstäben betagt, werden aber nach wie vor häufig verwendet. Sie bilden den funktionierenden Kern der Codebasis für eingebettete Systeme, und Embedded C/C++ genießt ein glänzendes, modernes Leben als Teil der Welt der vernetzten Geräte.

Obwohl diese Sprachen recht alte Wurzeln haben - und ein ähnliches Verhalten gegenüber Schwachstellen in Bezug auf häufige Probleme wie Injektionsfehler und Pufferüberläufe aufweisen - müssen Entwickler, um wirklich erfolgreich Sicherheitslücken in eingebetteten Systemen zu entschärfen, praktische Erfahrungen mit Code sammeln, der die Umgebungen nachahmt, in denen sie arbeiten. Eine generische C-Schulung in allgemeinen Sicherheitspraktiken ist einfach nicht so wirkungsvoll und einprägsam, wie wenn zusätzliche Zeit und Sorgfalt in die Arbeit in einem Embedded C-Kontext investiert wird.

Da ein modernes Fahrzeug zwischen einem Dutzend und mehr als hundert eingebettete Systeme enthält, ist es unerlässlich, dass die Entwickler genau wissen, worauf sie achten müssen und wie sie die Probleme beheben können, und zwar direkt in der IDE.

Wie sieht ein Fehler in der Geschäftslogik in eingebettetem C/C++ aus? Werfen Sie einen Blick darauf und sehen Sie, ob Sie ihn wie ein Profi erkennen und beheben können.

Der Schutz eingebetteter Systeme von Grund auf liegt in der Verantwortung aller

Der Status quo in vielen Unternehmen ist, dass die Entwicklungsgeschwindigkeit die Sicherheit übertrumpft, zumindest wenn es um die Verantwortung der Entwickler geht. Sie werden selten nach ihrer Fähigkeit beurteilt, sicheren Code zu produzieren, aber die schnelle Entwicklung toller Funktionen ist der goldene Standard. Die Nachfrage nach Software wird nur noch steigen, aber diese Kultur hat uns auf einen aussichtslosen Kampf gegen Schwachstellen und die daraus resultierenden Cyberangriffe eingestellt. 

Wenn Entwickler nicht geschult sind, ist das nicht ihre Schuld, und es ist eine Lücke, die jemand im AppSec-Team füllen helfen muss, indem er die richtigen, zugänglichen (ganz zu schweigen von bewertbaren) Weiterbildungsprogramme für die gesamte Entwicklergemeinschaft empfiehlt. Gleich zu Beginn eines Softwareentwicklungsprojekts muss das Thema Sicherheit ganz oben auf der Agenda stehen, und jeder - vor allem die Entwickler - muss das bekommen, was er braucht, um seine Rolle zu spielen. 

Praktische Erfahrungen mit Sicherheitsproblemen bei eingebetteten Systemen

Pufferüberläufe, Injektionsfehler und Fehler in der Geschäftslogik sind häufige Fallstricke bei der Entwicklung eingebetteter Systeme. Wenn sie tief in einem Labyrinth von Mikrocontrollern in einem einzigen Fahrzeug oder Gerät verborgen sind, kann dies aus der Sicherheitsperspektive eine Katastrophe bedeuten.

Pufferüberlauf ist besonders häufig, und wenn Sie einen tiefen Einblick in die Kompromittierung der Fritteuse, über die wir zuvor gesprochen haben, erhalten möchten (und die Remotecodeausführung ermöglicht), lesen Sie diesen Bericht über CVE-2020-28592.

Jetzt ist es an der Zeit, sich mit einer Pufferüberlaufschwachstelle in echtem eingebettetem C/C++-Code auseinanderzusetzen. Spielen Sie diese Herausforderung, um zu sehen, ob Sie die schlechten Codierungsmuster, die zu diesem heimtückischen Fehler führen, lokalisieren, identifizieren und beheben können:

Pufferüberlauf-Historie erstellen.



Wie haben Sie abgeschnitten? Besuchen Sie www.securecodewarrior.com für präzise und effektive Schulungen zur Sicherheit eingebetteter Systeme.

Wir bitten Sie um Ihre Erlaubnis, Ihnen Informationen über unsere Produkte und/oder verwandte Themen der sicheren Codierung zuzusenden. Wir werden Ihre persönlichen Daten immer mit äußerster Sorgfalt behandeln und sie niemals zu Marketingzwecken an andere Unternehmen verkaufen.

Um das Formular abzuschicken, aktivieren Sie bitte "Analytics"-Cookies. Sie können die Cookies wieder deaktivieren, sobald Sie fertig sind.